mysql安全加固

admin2024-05-15  0

MySQL数据库安全加固实验

【实验目的】

通过本实验,使学生掌握对MySQL数据库进行安全加固的方法。

【知识点】

  • 知识点:MySQL数据库
  1. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL是最好的关系数据库管理系统(Relational Database Management System,RDBMS)应用软件之一。
  2. MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

【实验原理】

针对MySQL数据库系统的攻击方式主要包括:口令破解、服务漏洞利用、权限提升、信息窃取、拒绝服务等。针对这些攻击方式,给出相应的安全加固方法,以减少MySQL系统自身的脆弱性,提高抵御攻击的能力。

【软件工具】

  • 操作系统:CentOS 7 x64

【实验目标】

通过对MySQL数据库从防口令破解、防服务漏洞、防权限提升、防信息窃取、防拒绝服务方面进行安全加固操作,提升MySQL数据库的安全性。

【实验步骤】

登录操作系统,用户名/口令:root/toor。

1.防口令破解

(1) 删除与数据库运行无关的账号

加固要求:MySQL系统中存在一个账号,名为test,该账号用于在开发阶段对数据库进行测试,现在已与数据库的正常运行无关,要求将该账号删除。

数据库中存在test账号

加固方法:

mysql -uroot -p  //登录MySQL,密码:toor。
drop user test;  //删除账号
flush privileges;  //刷新内存
quit  //退出MySQL

test账号已被删除

(2)删除空口令账户

加固要求:MySQL系统中存在一个空口令账号,名为stuff1,要求将该账户删除。

stuff1为空口令账号

加固方法:

mysql -uroot -p
drop user stuff1;
flush privileges;
quit

stuff1账号已删除

(3)为弱口令账户设置强壮口令

加固要求:MySQL系统中存在一个弱口令账号,名为dbuser1,要求为该账户设置强壮口令(包含大小写字母、数字、特殊符号,长度在10位以上)。
加固方法:

mysql -uroot -p
update mysql.user set password=password('Eef9ch@oh-') where user='dbuser1';
flush privileges;
quit
(4)删除匿名账户

加固要求:当前MySQL系统中存在匿名账户,要求将其删除。
加固方法:

mysql -uroot -p  //登录MySQL
delete from mysql.user where user = '';
flush privileges;
quit

成功删除匿名账号

(5)数据库管理员账户改名

加固要求:MySQL数据库管理员账户名称为root,要求将其改名为:qax_gly。
加固方法:

mysql -uroot -p  //登录MySQL
update mysql.user set user="qax_gly" where user="root";
flush privileges;
quit

root用户更改成功

2.防服务漏洞

(1)启用错误日志

加固要求:启用MySQL系统的错误日志。
加固方法:

vi /etc/my.cnf  //编辑配置文件
在[mysqld_safe]部分加入:log-error=/var/log/mariadb/mariadb.log。
保存退出。
systemctl restart mariadb  //重启服务

查询log_error中的值

(2)禁用符号链接

加固要求:MySQL系统当前启用了符号链接,要求禁用该功能。
加固方法:

vi /etc/my.cnf  //编辑配置文件
在[mysqld]部分加入:symbolic-links=0。
保存退出。
systemctl restart mariadb  //重启服务

查询have_symlink的值

(3)修改MySQL监听端口

加固要求:MySQL服务程序当前监听默认的TCP 3306端口,要求将端口改为6603。
加固方法:

vi /etc/my.cnf  //编辑配置文件
在[mysqld]部分加入:port=6603。
保存退出。
systemctl restart mariadb  //重启服务
(4)禁止从任意地址远程访问数据库

加固要求:当前MySQL系统允许dbuser1用户从任意IP地址发起访问,要求取消dbuser1从任意地址访问的权限,只允许从特定IP地址如192.168.1.100发起访问。
加固方法:

mysql -uqax_gly -p  //登录MySQL
use mysql  //选择mysql数据库
update user set host="192.168.1.100" where user="dbuser1";
flush privileges;
quit

访问权限修改成功

3.防权限提升

(1)禁用MySQL的命令历史

加固要求:禁用MySQL的命令历史功能。

mysql 历史命令

加固方法:

cd ~ //进入用户的home目录
rm -rf .mysql_history  //删除历史记录
ln -s /dev/null .mysql_history  //将MySQL日志文件指向空设备

历史文件为空

(2)禁止操作系统的MySQL账户拥有登录shell

加固要求:当前Linux系统的MySQL用户允许以交互方式登录,要求禁止其登录OS。
加固方法:

usermod -s /sbin/nologin mysql

mysql无登录权限

(3)禁止MySQL访问本地文件

加固要求:当前MySQL允许通过LOAD DATA INFILE或SELECT local_file命令装载本地文件,要求禁用MySQL的此项功能。
加固方法:

vi /etc/my.cnf  //编辑配置文件
在[mysqld]部分加入:local-infile=0。
保存退出。
systemctl restart mariadb  //重启mariadb服务

local_infile关闭状态

4.防信息窃取

(1)强化数据库文件权限

加固要求:当前MySQL数据文件的权限设置不够严格,要求为其设置严格的权限。
加固方法:

chmod -R 700 /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/

强化后数据库文件权限

(2)强化二进制日志的文件权限

加固要求:当前MySQL二进制日志文件的权限设置不够严格,要求为其设置严格的权限。
加固方法:

chmod 700 /var/lib/mysql/bin-log*
chown mysql:mysql /var/lib/mysql/bin-log*

强化后二进制文件权限

(3)强化错误日志的文件权限

加固要求:当前MySQL错误日志文件的权限设置不够严格,要求为其设置严格的权限。
加固方法:

chmod 600 /var/log/mariadb/mariadb.log
chown mysql:mysql /var/log/mariadb/mariadb.log

更改后错误日志文件权限

5.防拒绝服务

(1)删除测试数据库

加固要求:删除MySQL自带的test数据库。
加固方法:

mysql -uqax_gly -p
drop database test;
quit
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!