作为IT工程师,保护CentOS服务器上的数据库数据安全至关重要。以下是一套全面的安全访问控制方案:
# 运行安全安装脚本
sudo mysql_secure_installation
# 移除匿名用户
DELETE FROM mysql.user WHERE User='';
# 移除测试数据库
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
# 重命名root账户(可选)
RENAME USER 'root'@'localhost' TO 'admin'@'localhost';
# 编辑pg_hba.conf文件
sudo vim /var/lib/pgsql/data/pg_hba.conf
# 修改认证方法为md5或scram-sha-256
# host all all 127.0.0.1/32 md5
-- 创建专用用户并授予最小必要权限
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE ON app_db.* TO 'app_user'@'%';
# 使用iptables限制数据库端口访问
sudo iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
# 保存iptables规则
sudo service iptables save
# 在my.cnf中添加
[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
ALTER USER 'app_user'@'%' REQUIRE SSL;
# 安装审计插件(MySQL企业版或MariaDB审计插件)
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
# 配置审计参数
SET GLOBAL server_audit_events='connect,query,table';
SET GLOBAL server_audit_logging=ON;
# 安装OSSEC
sudo yum install -y ossec-hids-server
# 配置数据库日志监控
/var/log/mysqld.log -> /var/ossec/etc/rules/mysql_rules.xml
# 使用cron作业定期提醒密码更改
0 0 1 * * /usr/local/bin/password_rotation_reminder.sh
-- 定期检查用户权限
SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'app_user'@'%';
# 使用openssl加密数据库备份
mysqldump -u root -p app_db | openssl enc -aes-256-cbc -salt -out /backups/app_db_$(date +%F).sql.enc -k "EncryptionKey"
# 使用SFTP而非FTP传输备份
sftp -i /path/to/ssh_key backupuser@backup_server:/backup_location <<< $'put /local/backup.sql'
# 安装HashiCorp Vault
sudo yum install -y vault
# 配置数据库秘密引擎
vault secrets enable database
vault write database/config/mysql plugin_name=mysql-database-plugin
# 安装ProxySQL作为数据库防火墙
sudo yum install -y proxysql
# 配置查询规则过滤危险操作
INSERT INTO mysql_query_rules (rule_id,active,match_pattern,error_msg)
VALUES (1,1,'^DELETE FROM.*WHERE 1=1','Dangerous DELETE blocked');
通过实施这些措施,您可以显著提高CentOS服务器上数据库的安全性。记得定期审查和更新安全策略,以应对新出现的威胁。