安全加固之MySQL 安全加固

本文章旨在说明如何尽可能地加强MySQL数据库的安全性和隐私性。
免责声明:非专业人员请不要尝试在本文中的任何内容。


1、补丁安装

操作说明:满足业务正常运行的前提下,安装新版本,修补漏洞

检测方法:查看mysql 版本信息

mysql> SELECT VERSION(),

加固方法:安装最新版mysql, http://www.mysql.com

回退方法:安装新版本mysql 前备份原有版本mysql 和数据库文件,回退时恢复mysql 和数据库文件。

备注:升级新版本可能会影响现有业务的正常运行

2、 检查弱口令

操作说明:确保数据库不存在弱口令,提高数据库安全性

检测方法

mysql>use mysql
mysql> select user,password from mysql.user;
+------+-------------------------------------------+
| user | password |
+------+-------------------------------------------+
| test | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 |
+------+-------------------------------------------+
将密码hash 导入cain 软件破解,具体操作步骤见附录。

加固方法

如要修改密码,执行如下命令:

首先以root 用户登录

mysql>use mysql
mysql>update user set password=password('复杂的新密码') where
user='test';
mysql> flush privileges;

回退方法:改回加固前的密码

mysql> update user set password=password('加固前密码') where
user='test';
mysql> flush privileges;

3、 检查匿名帐户

操作说明:确保数据库不存在匿名账户,提高数据库安全性

检测方法:检查匿名帐户是否存在

mysql>use mysql;
mysql> select user,password from mysql.user;
存在user 和password 字段均为空的行

加固方法:删除匿名帐户:

mysql>use mysql;
mysql>delete from user where user='';
mysql>flush privileges;

回退方法:不需要回退

4、 删除无关帐号

操作说明:如果与业务和数据库无关账号,应该删除

检测方法:检查数据库中的帐号

mysql>use mysql
mysql> select user from mysql.user;

加固方法:删除相关账号

mysql>use mysql
mysql>delete from user where user='账号';
mysql>flush privileges;

回退方法

重新创建账号:

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']

重新赋予权限:

grant 权限1,权限2,…权限n on 数据库名称.表名称to 用户名@用户地址identified by ‘连接口令’;

5、 数据库授权

操作说明:合理设置用户权限,防止权限滥用

检测方法:查看用户权限:show grants for test@localhost;

加固方法:一般应用用户建议授予最小权限。

grant 权限1,权限2,…权限n on 数据库名称.表名称to 用户名@用户地址
例如:grant select,insert,delete on db.table to test@localhost;

回退方法:使用grant 命令,按照加固前的权限重新为用户授权

备注:可能影响应用

6、 文件安全

操作说明:合理设置数据库文件权限,防止否授权访问或篡改

检测方法

确保重要的数据库文件没有任意可写权限或任意可读权限

检查是否有不恰当的授权文件:

# ls -al .mysql_history .bash_history 应为600 权限
#ls –al /etc/my.cnf 应为644 权限
#find / -name .MYD |xargs ls –al 应为600 权限
#find / -name .MYI |xargs ls –al 应为600 权限
#find / -name .frm |xargs ls –al 应为600 权限

加固方法:保护数据库文件,授予恰当的权限:

#chmod 600 .mysql_history .bash_history
#chmod 600 *.MYD *.MYI *.frm
#chmod o-rw /etc/my.cnf

回退方法:使用chmod 命令,将文件权限改回加固前的设置

7、 日志审核

操作说明:合理设置日志审核,保证安全事件发生可查看日志记录

检测方法:查看my.cnf 或my.ini 文件,查看是否包含如下设置:

[mysqld]
log = filename

加固方法:在mysql 的安装目录下,打开my.cnf 或my.ini,在[mysqld]后面加上如下的参数,取消注释并配置日志文件,保存后重启mysql服务就行了。

#Enter a name for the binary log. Otherwise a default name will be
used.
#log-bin=
#Enter a name for the query log file. Otherwise a default name will
be used.
#log=
#Enter a name for the error log file. Otherwise a default name will
be used.
log-error=
#Enter a name for the update log file. Otherwise a default name will
be used.
#log-update=

回退方法:编辑my.cnf 或my.ini,删除如下加固时添加的日志配置。

备注:启用审核对系统性能略有影响

8、 运行帐号

操作说明: Mysqld 服务以普通用户运行,防止数据库高权限被利用

检测方法: 检查进程属主和运行参数是否包含--user=mysql 类似语句:

# ps -ef|grep mysqld
#grep -i user /etc/my.cnf

加固方法:vi 编辑/etc/my.cnf,设置如下:

[mysql.server]
user=mysql

回退方法:vi 编辑/etc/my.cnf,将设置改为加固前

9、 可信IP 地址访问控制

操作说明: 只允许可信任的ip 访问数据库,降低数据库风险

检测方法: 查看可访问数据库的ip 和ip 对应的账号

mysql> select user,host from mysql.user;

加固方法

mysql>GRANT ALL PRIVILEGES ON *.* TO '可信任用户'@'可信任ip 地址' IDENTIFIED BY '可信用户密码' WITH GRANT OPTION;

回退方法:删除可信任ip

mysql> delete from user where host='ip 地址';
mysql> flush privileges;

10、 连接数设置(可选

操作说明: 根据业务需求设置数据库最大连接数

检测方法

查看MySQL 配置文件:my.cnf 或者是my.ini

在[mysqld]段查看最大连接数配置:

max_connections = 1000

查看最大连接数

mysql> show variables like 'max_connections';

加固方法

编辑MySQL 配置文件:my.cnf 或者是my.ini

在[mysqld]配置段添加:

max_connections = 1000

保存,重启MySQL 服务。

回退方法

编辑MySQL 配置文件:my.cnf 或者是my.ini

在[mysqld]将max_connections 配置改回加固前的值

保存,重启MySQL 服务。

附录 Cain 使用方法

Microsoft 操作系统的密码恢复工具。 它允许通过嗅探轻松恢复各种密码

下载地址:https://github.com/xchwarze/Cain

(1)运行Cain.exe安装并运行Cain

(2)添加密码hash

安全加固之MySQL 安全加固_第1张图片

安全加固之MySQL 安全加固_第2张图片

(3)在添加的条目上点击鼠标右键,选择破解方式

安全加固之MySQL 安全加固_第3张图片

(4)添加字典文件pass.txt

安全加固之MySQL 安全加固_第4张图片

(4)点击Start 按钮开始破解,成功后如下图所示

安全加固之MySQL 安全加固_第5张图片

你可能感兴趣的:(#,安全加固,mysql,数据库,系统安全,网络安全)