安全说明:确保数据库版本为最新并修复已知的安全漏洞。攻击者可能会利用已知的漏洞对MySQL服务器进行攻击。
检查方法:显示当前的数据库版本,查看MySQL官网,比较补丁修复情况。
select version();
配置方法:安装最新版本的补丁或使用稳定版本。
安全说明:MySQL安装时默认创建一个测试数据库test,完全的空数据库,没有任何表,可以删除。测试数据库可以被所有用户访问,并且可以用来消耗系统资源。删除测试数据库将减少MySQL服务器的攻击面。防止遭受一句话注入木马的入侵
检查方法:show databases like 'test';
或show databases;
检查test数据库是否存在。
配置方法:drop database test;
安全说明:local_infile参数决定是否可以通过LOAD DATA LOCAL INFILE来实现加载或或选择位于MySQL客户端计算机上的文件。禁用local_infile可以阻止黑客利用sql注入来读取数据库文件,降低数据库带来的安全损失。
检查方法:vi /etc/my.cnf
在shell中进入/etc下查看MySQL的配置文件my.cnf或show variables where variable_name='local_infile';
进入MySQL中查看。确认local_infile不等于ON或1。
配置方法:修改MySQL配置文件my.cnf,添加配置参数local_infile=0
0代表OFFsystemctl restart mysqld
重启MySQL服务
vi /etc/my.cnf
确认skip-grant-tables不等于1。skip-grant-tables=0
或skip-grant-tables=FALSE
或用#skip-grant-tables=1
将其注释掉,然后重启MySQL服务systemctl restart mysqld
安全说明:禁用软链接,开启symbolic-links=0可以禁止数据库用户删除或重名数据文件目录之外的文件。多个客户可能会访问同一个数据库,若使用链接文件可能会导致外部客户锁定 MySQL 服务器。
检查方法:查看MySQL配置文件symbolic-links参数的设定vi /etc/my.cnf
确认symbolic-links=0
或进入MySQL输入show variables like 'have_symlink';
确认返回的值为DISABLED表示禁止无效不可用的状态。
配置方法:修改MySQL配置文件my.cnf确认symbolic-links=0
select user, host from mysql.user;
查看用户权限;SELECT user, host FROM mysql.user WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y');
如果返回的都是管理员账号说明安全,否则需要对用户清除权限。安全说明:File_priv
权限用于允许或禁止MySQL用户在服务器主机上读写文件。黑客很可能利用这一点盗取数据库中敏感数据。
检查方法:select user, host from mysql.user where File_priv = 'Y';
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法:mysql> REVOKE FILE ON *.* FROM '
//为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;
//为需要增加权限的用户
备注:8.0版本默认情况下,只有管理员账号拥有File_priv权限
select user, host from mysql.user where Super_priv = 'Y';
如果返回的都是管理员账号说明安全,否则需要对用户清除权限mysql> REVOKE FILE ON *.* FROM '’;
//为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;
//为需要增加权限的用户安全说明:Shutdown_priv权限用于允许或禁止给定用户是否可以关闭数据库,会造成一定安全隐患。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法:select user, host from mysql.user where Shutdown_priv = 'Y';
如果返回的都是管理员账号说明安全,否则需要对用户清除权限
配置方法:mysql> REVOKE FILE ON *.* FROM '
//为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;
//为需要增加权限的用户
安全说明:Create_user_priv权限用于允许或禁止给定用户是否可以创建任意用户,会造成一定安全隐患。使用超越当前用户权限的权利。可以被攻击者所利用。
检查方法:select user, host from mysql.user where Create_user_priv = 'Y';
如果返回的都是管理员账号说明安全,否则需要对用户清除权限。
配置方法:mysql> REVOKE FILE ON *.* FROM '
//为需要撤销权限的用户mysql> GRANT FILE ON *.* TO user@localhost;
//为需要增加权限的用户
find / -name .mysql_history
cat /dev/null > ~/.mysql_history
vi ~/.bashrc
添加如下配置:export MYSQL_HISTFILE=/dev/null
修改完后,保存退出,执行如下命令,使更改生效source ~/.bashrc
grep MYSQL_PWD /proc/*/environ
如果有返回行说明那个进程使用了MYSQL_PWD环境变量。安全说明:MySQL系统账号在安装完数据库后,不应该有其他用途。建议禁止该账号登陆操作系统。此举在防止黑客利用MySQL数据库漏洞反射shell有极佳效果。
检查方法:假设MySQL数据库操作系统账号就是mysql,执行下列命令:getent passwd mysql | egrep "^.*[ \ /bin\ / false| \ / sbin \ / nologin]$"
如果没有返回行则说明存在安全隐患
配置方法:执行下列语句禁止mysql用户(如hadoop)登陆:usermod -s /sbin/nologin hadoop
回退步骤:usermod -s /bin/bash hadoop