在Ubuntu中对MySQL进行安全加固是确保数据库系统稳定性和数据安全性的重要步骤。以下是一些关键的安全加固措施:
弱口令和匿名用户检查
- 检查并删除匿名用户或弱口令用户。
- 使用
SELECT User,host FROM MySQL.user WHERE authentication_string='';
和SELECT user,host FROM MySQL.user WHERE user = '';
命令检查。
设置强密码
- 在安装MySQL时,通过
mysql_secure_installation
脚本设置强密码。 - 确保密码复杂度,包含大小写字母、数字和特殊字符。
删除无关账号
- 删除多余的账号,只保留必要的用户。
- 使用
mysql>delete from user where user='账号';
命令删除不需要的用户。
修改默认端口
- 编辑MySQL配置文件(通常是
/etc/mysql/my.cnf
或/etc/my.cnf
),将默认端口从3306修改为非标准端口(如37777),以减少被自动扫描工具发现的几率。
配置最大连接数
- 在MySQL配置文件中设置最大连接数,限制同时连接到数据库的用户数量。
- 在
[mysqld]
配置段添加max_connections = 2000
。
禁止本地文件存取
- 在MySQL配置文件中添加
local-infile=0
以禁止MySQL对本地文件的存取。
文件权限设置
- 确保MySQL配置文件和相关日志文件的权限设置正确,防止未授权访问。
- 使用
ls -al /etc/my.cnf
和ls -al /var/log/mysql/
检查文件权限。
禁用远程root登录
- 在MySQL配置文件中设置
bind-address = 127.0.0.1
禁止远程root登录。 - 如果需要远程访问,应创建一个普通用户并授予相应权限。
启用安全审计
- 编辑MySQL配置文件,启用审计功能。
- 重启MySQL服务并查看审计日志以监控数据库操作。
定期更新和打补丁
- 保持MySQL服务器的更新,安装最新的安全补丁。
使用防火墙
- 配置防火墙(如UFW或iptables)限制对MySQL端口的访问。
- 使用
sudo ufw allow 3306/tcp
开放MySQL端口。
数据传输加密
- 使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议对数据传输进行加密。
加密敏感数据
- 使用AES_ENCRYPT和AES_DECRYPT函数对敏感数据进行加密存储。
通过上述措施,可以显著提高Ubuntu上MySQL数据库的安全性,保护数据免受未授权访问和潜在的安全威胁。建议定期审查和更新安全配置,以应对新的安全挑战。