MySql安全加固:可信IP地址访问控制 & 设置密码复杂度

  • 1.1 可信IP地址访问控制
  • 1.2 设置密码复杂度


1.1 可信IP地址访问控制

当您在创建用户时使用’%'作为主机部分,这意味着该用户可以从任何主机连接到数据库,这会增加数据库面临的潜在安全风险。

通过设置特定的IP地址范围,可以限制只有来自受信任的IP地址的用户能够连接到数据库,从而减少未经授权访问的可能性。

检查点:

1、使用如下命令查看是否设置可信ip地址

select Host  ,`User`  from mysql.user where Host not in ('localhost','localhost.localdomain','127.0.0.1') and authentication_string  !='';

postgresql 查询密码复杂度策略 查看mysql密码复杂度_设置密码复杂度

判定依据: 可信访问地址不为空则合规,否则不合规。

加固参考步骤:

1、执行命令,修改MySQL中用户(user)的主机(host):

== 注意:执行操作后,你只能通过可信IP访问==

UPDATE mysql.user SET Host = '新的主机' WHERE User = '需要修改的用户'  and host='%';;

## 刷新权限
FLUSH PRIVILEGES;

如果是所有数据库,则<数据库名称>为*,如果是所有表名,则<表名>为*.

例子,将上面查到的用户设置可通过可信ip地址访问:

+------+-----------+
| Host | User      |
+------+-----------+
| %    | mysqlroot |
| %    | mfs       |
+------+-----------+

如:

我们的应用程序(部署服务器IP:192.168.234.20)要通过mfs用户连接访问数据库,那就修改mfs用户的host为192.168.234.20;

我们要通过10.10.112.10这个客户端可视化工具通过mysqlroot用户连接数据库,,那就修改mysqlroot用户的host为10.10.112.10。

UPDATE mysql.user SET Host = '192.168.234.20' WHERE User = 'mfs'  and host='%';;

UPDATE mysql.user SET Host = '10.10.112.10' WHERE User = 'mysqlroot'  and host='%';;

## 刷新权限
FLUSH PRIVILEGES;

postgresql 查询密码复杂度策略 查看mysql密码复杂度_设置密码复杂度_02

postgresql 查询密码复杂度策略 查看mysql密码复杂度_mysql_03

2、 补充说明

建议在操作系统或防火墙配置访问控制策略。

1.2 设置密码复杂度

检查点:

1、执行以下命令查看密码策略

show variables like 'validate%';

判定依据:

(1) validate_password_length 密码长度大于等于8

(2) validate_password_mixed_case_count 密码包含大小写个数大于等于1

(3) validate_password_number_count 密码包含数字个数大于等于1

(4) validate_password_special_char_count 密码包含的特殊字符大于等于1

(5) validate_password_policy 密码策略等级为MEDIUM或STRONG

以上条件满足条件1,条件2,3,4其中两种,条件5则合规,否则不合规。

postgresql 查询密码复杂度策略 查看mysql密码复杂度_mysql安全加固_04

加固参考步骤:

1、安装密码插件

方法1 、通过配置文件/etc/my.cnf (windows环境下为my.ini)安装

[mysqld]

plugin-load=validate_password.so
validate_password_policy=1
validate-password=FORCE_PLUS_PERMANENT

方法2、登录数据中执行SQL语句安装

mysql>INSTALL PLUGIN validate_password SONAME 'validate_password.so';

说明:安装此插件要求mysql 版本为5.6.6 以上版本

2、重启数据库

systemctl stop mysqld
systemctl start mysqld
systemctl restart mysqld