美文网首页
Mysql安全防护

Mysql安全防护

作者: 一剑仙人跪_ | 来源:发表于2020-03-31 14:31 被阅读0次

    1.禁用local-infile选项

    禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力

    编辑Mysql配置文件/etc/my.cnf,在[mysqld](https://yundun.console.aliyun.com/?p=sasnext) 段落中配置local-infile参数为0,并重启mysql服务:
    local-infile=0
    

    2.确保配置了log-error选项

    启用错误日志可以提高检测针对mysql和其他关键消息的恶意尝试的能力,例如,如果错误日志未启用,则连接错误可能会被忽略

    编辑Mysql配置文件/etc/my.cnf,在[mysqld_safe](https://yundun.console.aliyun.com/?p=sasnext) 段落中配置log-error参数,<log_path>代表存放日志文件路径,如:/var/log/mysqld.log,并重启mysql服务:
    log-error=<log_path>
    

    3.禁用symbolic-links选项

    编辑Mysql配置文件/etc/my.cnf,在[mysqld](https://yundun.console.aliyun.com/?p=sasnext) 段落中配置`symbolic-links=0`,5.6及以上版本应该配置为`skip_symbolic_links=yes`,并重启mysql服务。
    
    

    4.为Mysql服务使用专用的最低特权帐户

    使用最低权限帐户运行服务可减小MySQL天生漏洞的影响。受限帐户将无法访问与MySQL无关的资源,例如操作系统配置。

    使用非root和非sudo权限用户启动Mysql服务
    

    5.禁止使用--skip-grant-tables选项启动Mysql服务

    使用此选项,会导致所有客户端都对所有数据库具有不受限制的访问权限。

    编辑Mysql配置文件/etc/my.cnf,删除skip-grant-tables参数,并重启mysql服务
    

    6.删除'test'数据库

    测试数据库可供所有用户访问,并可用于消耗系统资源。删除测试数据库将减少mysql服务器的攻击面

    登陆数据库执行以下SQL语句删除test数据库:
    
    DROP DATABASE test;
    flush privileges;
    

    7.确保log-raw选项没有配置为ON

    当log-raw记录启用时,有权访问日志文件的人可能会看到纯文本密码。

    编辑Mysql配置文件/etc/my.cnf,删除log-raw参数,并重启mysql服务
    

    8.确保没有用户配置了通配符主机名

    避免在主机名中只使用通配符,有助于限定可以连接数据库的客户端,否则服务就开放到了公网

    执行SQL更新语句,为每个用户指定允许连接的host范围。 
    1. 登录数据库,执行use mysql; ; 
    2. 执行语句select user,Host from user where Host='%';查看HOST为通配符的用户; 
    3. 删除用户或者修改用户host字段,删除语句:DROP USER 'user_name'@'%'; 。更新语句:update user set host = <new_host> where host = '%';。 
    4. 执行SQL语句:
    
    OPTIMIZE TABLE user;
    flush privileges;
    

    9.匿名登陆检查

    检查Mysql服务是否允许匿名登陆

    登陆Mysql数据库,执行以下命令删除匿名帐户:
    delete from user where user='';
    flush privileges;
    

    10.数据库登陆弱密码

    若系统使用弱口令,存在极大的被恶意猜解入侵风险,需立即修复

    可使用 SET PASSWORD 命令把弱密码修改为强密码
    
    1、登陆数据库 
    2、查看数据库用户密码信息   
        mysql> SELECT user, host, authentication_string FROM user;   
        部分版本查询命令为: 
        mysql> SELECT user, host, password FROM user;  
    3、根据查询结果及弱密码告警信息修改具体用户的密码 
        mysql> SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码');
    

    相关文章

      网友评论

          本文标题:Mysql安全防护

          本文链接:https://www.haomeiwen.com/subject/yqpwuhtx.html