插件窝 干货文章 如何配置CentOS系统以保护数据库服务器的安全

如何配置CentOS系统以保护数据库服务器的安全

配置 MySQL 安全 bash 894    来源:    2025-04-15

CentOS数据库服务器安全配置指南

1. 系统基础安全配置

1.1 最小化安装

# 安装时选择"Minimal Install"选项
# 安装后移除不必要的软件包
yum remove -y `yum list installed | grep -vE 'database|security|kernel|essential' | awk '{print $1}'`

1.2 系统更新

# 启用自动安全更新
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

1.3 防火墙配置

# 启用并配置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

2. 数据库特定安全配置

2.1 MySQL/MariaDB安全配置

# 运行安全安装脚本
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         # 禁用符号链接

2.2 PostgreSQL安全配置

# 编辑pg_hba.conf
host    all             all             127.0.0.1/32            md5

# 编辑postgresql.conf
listen_addresses = 'localhost'
ssl = on

3. 访问控制与认证

3.1 数据库用户权限

-- 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';

3.2 SSH访问控制

# 禁用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

4. 数据保护与加密

4.1 数据库加密

-- MySQL表加密
ALTER TABLE sensitive_data ENCRYPTION='Y';

-- PostgreSQL加密
CREATE EXTENSION pgcrypto;

4.2 传输层加密

# MySQL SSL配置
[mysqld]
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

5. 监控与审计

5.1 数据库审计

# 安装审计插件 (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;

5.2 系统审计

# 安装并配置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

6. 备份与恢复策略

6.1 自动化备份

# 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

6.2 备份加密

# 使用GPG加密备份
mysqldump -u root -p dbname | gpg --encrypt --recipient 'backup@example.com' > dbname-$(date +%Y%m%d).sql.gpg

7. 定期安全维护

7.1 漏洞扫描

# 使用lynis进行安全审计
yum install -y lynis
lynis audit system

7.2 日志分析

# 安装logwatch进行日志分析
yum install -y logwatch
echo "/usr/sbin/logwatch --output mail --mailto admin@example.com --detail high" >> /etc/cron.daily/0logwatch

通过以上配置,您的CentOS数据库服务器将具备企业级的安全防护能力。请根据实际业务需求调整配置,并定期审查安全策略。