免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3286 | 回复: 1
打印 上一主题 下一主题

关于MySQL的几点安全配置 [复制链接]

论坛徽章:
8
数据库技术版块每日发帖之星
日期:2016-04-29 06:20:00数据库技术版块每日发帖之星
日期:2016-04-30 06:20:00数据库技术版块每日发帖之星
日期:2016-05-13 06:20:00数据库技术版块每日发帖之星
日期:2016-05-15 06:20:00数据库技术版块每日发帖之星
日期:2016-05-19 06:20:00数据库技术版块每日发帖之星
日期:2016-05-20 06:20:00数据库技术版块每日发帖之星
日期:2016-06-02 06:20:00数据库技术版块每日发帖之星
日期:2016-06-05 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-03 14:50 |只看该作者 |倒序浏览
本帖最后由 我忒忙 于 2016-05-03 14:51 编辑




1、安装完MySQL后
修改root用户密码
    5.5以前,rpm包安装完MySQL后,root用户密码为空
    5.6中,rpm包安装完MySQL后,会随机生成一个root密码,保存在/root/.mysql_secret
    5.7以后,使用mysqld --initialize初始化时,默认会自动生成随机密码,并且不创建除root@localhost 外的其他账号,也不创建test库;

2、正确授权
    mysql库中有4张权限表,user、db、tables_priv、columns_priv,分别对应用户密码、用户对数据库的权限、对表的权限、对列的权限。
    当一个用户向MySQL发起请求时,首先会从user表中验证host、user、password,然后再依次验证db、tables_priv、columns_priv,验证过程中,如果db表中对应权限为Y,则此用户对某个库的权限全为Y,将不再验证tables_priv和columns_priv。

对于MySQL中的账户权限相关的安全配置,总结如下:
    针对每个网站建立一个单独的账户
    为每个网站单独建立一个专属数据库
    按照user->db->tables_priv->columns_pri的顺序进行细粒度的权限控制
    为每个用户单独配置一个专属数据库,保证当前用户的所有操作只能发生在它自己的数据库中,防止SQL注入发生后,黑客通过注入点访问到系统表
    如果有必要,改变MySQL的root用户的用户名(在user表中更改)

3、MySQL网络完全配置
    禁止root用户远程登录
    防火墙设置
    更改默认端口(默认3306),可以从一定程度上防止端口扫描工具的扫描
    限制单个用户的连接数量:
        [mysqld]
        max_user_connections 20

4、文件权限及文件安全
    使用非root用户启动MySQL服务
    限制启动MySQL的用户的文件权限,同时确保该用户对MySQL的数据文件等有读写权限
    可以使用chroot更改根目录,防止非root用户访问到一些敏感文件,比如:/etc/passwd
    不要给非root用户授予process和super权限,mysqladmin processlist和show processlist命令会查看到任何用户执行的命令,这可能看到其他用户执行的update user set password=...;命令,super权限可以终止会话、更改系统参数等
    不要对表使用软连接(--skip-symbolic-links参数用来禁用这一功能),表的软连接只有MyISAM支持,因为开启表软连接后(尤其是对于使用系统root用户启动MySQL服务的),MySQL用户就可以使用mysqld来删除、重命名数据文件所在位置以外的文件了
    如果plugin文件夹可以被MySQL server写,那么用户就可以使用select ... into dumpfile命令把可执行代码写入到里面,可以通过把plugin_dir参数对应的路径设为只读以及调整--secure-file-priv参数来提高安全性
    不要给非root用户授予文件读写权限,防止使用load data local infile来提取本地文件(比如提取/etc/passwd里的信息,会对系统安全造成威胁)
        [mysqld]
        local-infile=0

5、如果有必要,可以删除~/.bash_history文件,防止读取历史命令
# rm .bash_history .mysql_history
# ln -s /dev/null .bash_history
# ln -s /dev/null .mysql_history


论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
2 [报告]
发表于 2016-05-05 15:00 |只看该作者
哈哈,条目五,linux还可以这样玩的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP