阿里云标准-Mysql安全基线检查
阿里云标准-Mysql安全基线检查
1. [中危]
修改默认3306端口 服务配置
描述
避免使用熟知的端口,降低被初级扫描的风险
加固建议
编辑<conf_path>/my.cnf文件,[mysqld] 段落中配置新的端口参数,并重启MySQL服务:
port=3506
2. [中危]
确保没有用户配置了通配符主机名 身份鉴别
描述
避免在主机名中只使用通配符,有助于限定可以连接数据库的客户端,否则服务就开放到了公网
加固建议
执行SQL更新语句,为每个用户指定允许连接的host范围。
登录数据库,执行use mysql; ;
执行语句select user,Host from user where Host='%';查看HOST为通配符的用户;
删除用户或者修改用户host字段,删除语句:DROP USER 'user_name'@'%'; 。更新语句:update user set host = <new_host> where host = '%';。
执行SQL语句:
OPTIMIZE TABLE user;
flush privileges;
3. [中危]
禁用symbolic-links选项 服务配置
描述
禁用符号链接以防止各种安全风险
加固建议
编辑Mysql配置文件<conf_path>/my.cnf,在[mysqld] 段落中配置symbolic-links=0,5.6及以上版本应该配置为skip_symbolic_links=yes,并重启mysql服务。
4. [低危]
确保配置了log-error选项 安全审计
描述
启用错误日志可以提高检测针对mysql和其他关键消息的恶意尝试的能力,例如,如果错误日志未启用,则连接错误可能会被忽略。
加固建议
编辑Mysql配置文件<conf_path>/my.cnf,在[mysqld_safe] 段落中配置log-error参数,<log_path>代表存放日志文件路径,如:/var/log/mysqld.log,并重启mysql服务:
log-error=<log_path>
5. [高危]
确保MYSQL_PWD环境变量未设置 身份鉴别
描述
MYSQL_PWD环境变量的使用意味着MYSQL凭证的明文存储,极大增加MySQL凭据泄露风险。
加固建议
删除系统环境变量中MySQL密码(MYSQL_PWD)配置
6. [高危]
为MySQL服务使用专用的最低特权账户 访问控制
描述
使用最低权限账户运行服务可减小MySQL天生漏洞的影响。受限账户将无法访问与MySQL无关的资源,例如操作系统配置。
加固建议
使用非root和非sudo权限用户启动MySQL服务
7. [高危]
禁止使用--skip-grant-tables选项启动MySQL服务 访问控制
描述
使用此选项,会导致所有客户端都对所有数据库具有不受限制的访问权限。
加固建议
编辑Mysql配置文件<conf_path>/my.cnf,删除skip-grant-tables参数,并重启mysql服务
8. [高危]
删除'test'数据库 服务配置
描述
测试数据库可供所有用户访问,并可用于消耗系统资源。删除测试数据库将减少MySQL服务器的攻击面。
加固建议
登录数据库执行以下SQL语句删除test数据库:
DROP DATABASE test;
flush privileges;
9. [高危]
匿名登录检查 身份鉴别
描述
检查MySQL服务是否允许匿名登录
加固建议
登录MySQL数据库,执行以下命令删除匿名账户:
delete from user where user='';
flush privileges;
10. [高危]
版本存在安全漏洞 入侵防范
描述
mysql以下版本存在安全漏洞,容易被入侵:
- mysql5.6.35以下的5.6.x版本以及5.7.17以下的5.7.x版本存在远程安全漏洞。https://avd.aliyun.com/detail?id=AVD-2017-3599
- mysql5.1.63之前的5.1.x版本,5.5.24之前的5.5.x版本,5.6.6之前的5.6.x版本,Mariadb5.1.62之前的5.1.x版本,5.2.12之前的5.2.x版本,5.3.6之前的5.3.x版本,5.5.23之前的5.5.x版本,均存在身份认证绕过漏洞。https://avd.aliyun.com/detail?id=AVD-2012-2122
- mysql5.5.52及之前的版本,5.6.x至5.6.33版本,5.7.x至5.7.15版本;MariaDB 5.5.51之前的版本,10.0.27之前的10.0.x版本,10.1.17之前的10.1.x版本;Percona Server 5.5.51-38.1之前的版本,5.6.32-78.0之前的5.6.x版本,5.7.14-7之前的5.7.x版本,均存在远程代码执行/权限提升漏洞。https://avd.aliyun.com/detail?id=AVD-2016-6662
加固建议
更新服务至最新版本,完成漏洞的修复,这些漏洞基于未授权访问或者服务存在弱口令,完成访问认证加固可降低被入侵风险。
11. [中危]
禁用local-infile选项 访问控制
描述
禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力
加固建议
编辑Mysql配置文件<conf_path>/my.cnf,在[mysqld] 段落中配置local-infile参数为0,并重启mysql服务:
local-infile=0
12. [中危]
确保log-raw选项没有配置为ON 安全审计
描述
当log-raw记录启用时,有权访问日志文件的人可能会看到纯文本密码。
加固建议
编辑Mysql配置文件<conf_path>/my.cnf,删除log-raw参数,并重启mysql服务
13. [高危]
数据库登录弱口令 身份鉴别
描述
若系统使用弱口令,存在极大的被恶意猜解入侵风险,需立即修复。
加固建议
登录mysql数据库;
查看数据库用户密码信息:SELECT user, host, authentication_string FROM user;
部分版本查询命令为:SELECT user, host, password FROM user;
根据查询结果及弱密码告警信息修改具体用户的密码:SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码');
执行刷新命令:flush privileges;
新口令应符合复杂性要求:
1、长度8位以上
2、包含以下四类字符中的三类字符:
英文大写字母(A 到 Z)
英文小写字母(a 到 z)
10 个基本数字(0 到 9)
非字母字符(例如 !、$、#、%、@、^、&)
3、避免使用已公开的弱口令,如:abcd.1234 、admin@123等
若密码提示中出现****@****/,则表示使用了--skip-grant-tables选项启动MySQL,请先关闭该选项