# 安装时选择"Minimal Install"选项
# 安装后移除不必要的软件包
yum remove -y `yum list installed | grep -vE 'database|security|kernel|essential' | awk '{print $1}'`
# 启用自动安全更新
yum install -y yum-cron
systemctl enable yum-cron
systemctl start yum-cron
# 配置自动更新策略
sed -i 's/update_cmd = default/update_cmd = security/' /etc/yum/yum-cron.conf
sed -i 's/apply_updates = no/apply_updates = yes/' /etc/yum/yum-cron.conf
# 启用并配置firewalld
systemctl enable firewalld
systemctl start firewalld
# 仅允许必要的端口(根据实际数据库类型调整)
firewall-cmd --permanent --add-port=3306/tcp # MySQL示例
firewall-cmd --permanent --add-port=5432/tcp # PostgreSQL示例
firewall-cmd --reload
# 运行安全安装脚本
mysql_secure_installation
# 配置文件安全设置 (/etc/my.cnf或/etc/mysql/my.cnf)
[mysqld]
bind-address = 127.0.0.1 # 限制监听IP
skip-networking # 如果不需远程访问
local-infile=0 # 禁用LOAD DATA LOCAL INFILE
symbolic-links=0 # 禁用符号链接
# 编辑pg_hba.conf
host all all 127.0.0.1/32 md5
# 编辑postgresql.conf
listen_addresses = 'localhost'
ssl = on
-- MySQL示例:创建最小权限用户
CREATE USER 'appuser'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE ON appdb.* TO 'appuser'@'192.168.1.%';
FLUSH PRIVILEGES;
-- 定期审查用户权限
SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'username'@'host';
# 禁用root SSH登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 仅允许特定用户SSH访问
echo "AllowUsers adminuser" >> /etc/ssh/sshd_config
# 使用密钥认证而非密码
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
-- MySQL表加密
ALTER TABLE sensitive_data ENCRYPTION='Y';
-- PostgreSQL加密
CREATE EXTENSION pgcrypto;
# MySQL SSL配置
[mysqld]
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
# 安装审计插件 (MySQL Enterprise Audit或MariaDB Audit Plugin)
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
# 配置审计策略
SET GLOBAL server_audit_events='CONNECT,QUERY,TABLE';
SET GLOBAL server_audit_logging=ON;
# 安装并配置auditd
yum install -y audit
systemctl enable auditd
systemctl start auditd
# 监控数据库相关文件和目录
auditctl -w /var/lib/mysql/ -p wa -k database_activity
auditctl -w /etc/my.cnf -p wa -k database_config
# MySQL备份脚本示例
#!/bin/bash
mysqldump -u backupuser -p'BackupPassword123!' --all-databases | gzip > /backup/mysql-$(date +%Y%m%d).sql.gz
find /backup -type f -name "mysql-*.sql.gz" -mtime +30 -delete
# 使用GPG加密备份
mysqldump -u root -p dbname | gpg --encrypt --recipient 'backup@example.com' > dbname-$(date +%Y%m%d).sql.gpg
# 使用lynis进行安全审计
yum install -y lynis
lynis audit system
# 安装logwatch进行日志分析
yum install -y logwatch
echo "/usr/sbin/logwatch --output mail --mailto admin@example.com --detail high" >> /etc/cron.daily/0logwatch
通过以上配置,您的CentOS数据库服务器将具备企业级的安全防护能力。请根据实际业务需求调整配置,并定期审查安全策略。