Linux下MySQL如何进行安全加固
导读:1. 账户与权限安全管理 最小权限原则:仅授予用户完成工作所需的最低权限(如应用账户仅需SELECT、INSERT、UPDATE权限),禁止使用GRANT ALL PRIVILEGES分配全部权限。例如,为报表应用创建只读账户:GRANT...
1. 账户与权限安全管理
- 最小权限原则:仅授予用户完成工作所需的最低权限(如应用账户仅需
SELECT
、INSERT
、UPDATE
权限),禁止使用GRANT ALL PRIVILEGES
分配全部权限。例如,为报表应用创建只读账户:GRANT SELECT ON mydb.* TO 'report_user'@'192.168.1.%';
。 - 禁用高危权限:不授予
DROP
(删除表/数据库)、ALTER
(修改表结构)、FILE
(读写服务器文件)、SUPER
(执行KILL、CHANGE MASTER等管理命令)等高危权限,避免恶意操作或误操作破坏数据。 - 限制登录主机:避免使用
%
通配符,仅为用户指定具体IP或网段(如'user'@'192.168.1.100'
),减少非法IP访问的风险。 - 删除匿名用户与测试数据库:安装后执行
DROP USER ''@'localhost'; DROP DATABASE test;
清除默认匿名账户和测试数据库,防止未授权访问。
2. 网络与连接安全加固
- 修改默认端口:将MySQL默认端口3306修改为非标准端口(如3307),降低端口扫描攻击的概率。修改
/etc/mysql/mysql.conf.d/mysqld.cnf
中的port
参数并重启服务。 - 绑定本地地址:修改
bind-address = 127.0.0.1
,限制MySQL仅监听本地回环接口,禁止远程直接访问,仅允许本地应用或通过SSH隧道连接。 - 启用SSL/TLS加密:生成SSL证书(
sudo mysql_ssl_rsa_setup
),修改配置文件添加ssl-ca
、ssl-cert
、ssl-key
参数,强制用户使用加密连接(GRANT ... REQUIRE SSL;
),防止数据传输过程中被窃听。 - 配置防火墙规则:使用
ufw
(sudo ufw allow from 192.168.1.100 to any port 3307
)或firewalld
(sudo firewall-cmd --permanent --add-port=3307/tcp
)限制MySQL端口的访问,仅允许受信任IP地址连接。
3. 安全配置与审计监控
- 禁用远程root登录:修改root用户的host为
localhost
(UPDATE mysql.user SET Host='localhost' WHERE User='root' AND Host='%'; FLUSH PRIVILEGES;
),禁止root用户从远程主机登录,降低管理员账户被攻击的风险。 - 使用专用管理员账户:创建具有有限权限的管理账户(如
CREATE USER 'admin'@'192.168.1.100' IDENTIFIED BY 'StrongPass123!'
),替代root账户执行日常管理操作,避免权限滥用。 - 启用日志审计:开启通用日志(
general_log = ON
,general_log_file = /var/log/mysql/general.log
)记录所有SQL操作,或使用企业版审计插件(如MySQL Enterprise Audit)实现细粒度审计,便于追溯异常操作。 - 启用SQL安全模式:在
my.cnf
中添加sql_safe_updates = 1
,防止无WHERE
条件的DELETE
或UPDATE
语句执行(如DELETE FROM users;
会被拒绝),减少误操作导致的数据丢失。
4. 系统与环境安全维护
- 定期更新MySQL版本:使用包管理器(如
apt
、yum
)及时升级到最新稳定版本,修复已知安全漏洞(如sudo apt update & & sudo apt upgrade mysql-server
)。 - 使用强密码策略:为所有用户设置包含大小写字母、数字和特殊字符的强密码(如
TEst@123!]
),并定期更换(每90天)。可通过validate_password
插件强制密码复杂度(INSTALL PLUGIN validate_password SONAME 'validate_password.so';
)。 - 定期备份数据:使用
mysqldump
(mysqldump -u root -p --all-databases > backup.sql
)或Percona XtraBackup工具定期备份数据库,将备份文件加密存储并离线保存(如移动硬盘),确保数据丢失或勒索攻击时能快速恢复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux下MySQL如何进行安全加固
本文地址: https://pptw.com/jishu/729712.html