CentOS环境下SQLAdmin安全设置指南
sudo yum update -y更新CentOS操作系统及已安装的SQLAdmin、数据库(如MySQL/MariaDB)等软件包,及时修复已知安全漏洞。systemctl disable ftp telnet等命令关闭FTP、Telnet等不安全服务,减少潜在攻击面;通过systemctl list-unit-files --state=enabled检查并禁用无用服务。adm、lp、sync):sudo userdel adm;sudo passwd -l username(仅保留root等必需超级用户);/etc/login.defs,强制密码长度≥10位、包含大小写字母+数字+特殊字符(如PASS_MIN_LEN 10、PASS_REQUIRE_MIXED_CASE yes);sudo awk -F: '($2 == "") {print $1}' /etc/shadow,并为这些账户设置强密码。sudo adduser sqladmin创建专用管理账户,避免直接使用root账户;设置强密码:sudo passwd sqladmin。mysql -u root -p),仅为sqladmin用户分配其工作所需的最低权限(如仅管理特定数据库mydb):CREATE USER 'sqladmin'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'sqladmin'@'localhost';
FLUSH PRIVILEGES;
ALL PRIVILEGES或GRANT OPTION(除非绝对必要),避免权限滥用。localhost(仅本地访问),若需远程访问,需添加对应IP限制(如'sqladmin'@'192.168.1.100')并配置防火墙允许该IP访问数据库端口(默认3306)。firewalld开放数据库端口(3306),并限制访问源IP:sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload
若使用iptables,可添加类似规则:sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT。openssl);/etc/my.cnf)中添加:[mysqld]
ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
GRANT ... REQUIRE SSL;。/etc/my.cnf)中启用通用查询日志和慢查询日志:[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
重启数据库使配置生效:sudo systemctl restart mysqld。auditd服务,记录sqladmin用户的操作(如登录、数据库修改):sudo yum install audit -y
sudo systemctl start auditd
sudo systemctl enable auditd
添加审计规则(监控sqladmin用户的命令执行):sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=sqladmin -k sqladmin_commands
查看审计日志:ausearch -k sqladmin_commands。/etc/my.cnf)包含敏感信息(如数据库密码),需限制访问权限:sudo chown root:sqladmin /etc/my.cnf
sudo chmod 640 /etc/my.cnf
/etc/ssh/sshd_config),设置PermitRootLogin no,禁止root用户通过SSH远程登录;使用普通用户登录后再切换至root(su -)。mysqldump定期备份数据库(如每日备份),并将备份文件存储至安全位置(如异地服务器):mysqldump -u sqladmin -p mydb > /backup/mydb_$(date +%F).sql
定期测试备份恢复流程,确保数据可恢复。