CentOS LAMP环境安全漏洞修复指南
定期更新CentOS系统、Apache、MySQL、PHP及相关依赖包,是修复已知安全漏洞的首要步骤。使用以下命令更新所有可更新软件包:
sudo yum update -y # CentOS 7
# 或(CentOS 8及以上)
sudo dnf update -y
更新前建议备份重要数据(如数据库、配置文件),避免更新过程中出现意外导致数据丢失。
httpd.conf
文件注释或移除不使用的模块(如mod_status
、mod_info
),减少攻击面:sudo vi /etc/httpd/conf/httpd.conf
# 找到LoadModule status_module modules/mod_status.so并注释(前面加#)
sudo sed -i 's/ServerSignature On/ServerSignature Off/' /etc/httpd/conf/httpd.conf
sudo sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/httpd/conf/httpd.conf
firewalld
仅开放HTTP(80)、HTTPS(443)端口,禁止非法IP访问:sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
MaxClients
(最大并发连接数)和MaxRequestsPerChild
(每个子进程处理请求数)参数,避免资源耗尽:sudo sed -i 's/MaxClients 150/MaxClients 100/' /etc/httpd/conf/httpd.conf
sudo sed -i 's/MaxRequestsPerChild 4000/MaxRequestsPerChild 2000/' /etc/httpd/conf/httpd.conf
修改后重启Apache生效:sudo systemctl restart httpd
mysql_secure_installation
初始化数据库安全设置,包括设置root密码、移除匿名用户、禁止root远程登录:sudo mysql_secure_installation
my.cnf
(或/etc/mysql/mariadb.conf.d/50-server.cnf
)文件,强制使用强密码(如包含大小写字母、数字、特殊字符):sudo vi /etc/my.cnf
# 添加以下内容
[mysqld]
validate_password_policy=STRONG
validate_password_length=12
GRANT ALL PRIVILEGES ON *.* TO 'username'@'allowed_ip' IDENTIFIED BY 'strong_password';
FLUSH PRIVILEGES;
php.ini
文件,禁用exec
、system
、eval
等可能被恶意利用的函数:sudo vi /etc/php.ini
# 找到disable_functions并添加危险函数
disable_functions = exec, system, eval, passthru, shell_exec
display_errors
设置为Off
,避免将敏感信息(如数据库结构、路径)泄露给用户:sudo sed -i 's/display_errors = On/display_errors = Off/' /etc/php.ini
upload_max_filesize
(最大上传文件大小)和upload_tmp_dir
(临时上传目录),防止恶意文件上传:sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 5M/' /etc/php.ini
sudo sed -i 's/upload_tmp_dir = .*/upload_tmp_dir = \/var\/tmp/' /etc/php.ini
修改后重启Apache使配置生效:sudo systemctl restart httpd
enforcing
模式),增强文件系统访问控制,限制进程权限:sudo getenforce # 检查SELinux状态(Enforcing/Permissive/Disabled)
sudo sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/selinux/config
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
ssh-keygen -t rsa -b 4096 # 生成密钥对
ssh-copy-id username@server_ip # 复制公钥到服务器
sudo systemctl restart sshd
firewalld
限制SSH、数据库端口的访问范围(如仅允许运维IP访问SSH):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="2222" protocol="tcp" accept'
sudo firewall-cmd --reload
auditd
服务记录系统活动(如用户登录、文件修改),便于后续分析异常行为:sudo yum install audit -y
sudo systemctl start auditd
sudo systemctl enable auditd
/var/log/secure
(SSH登录日志)、/var/log/httpd/error_log
(Apache错误日志)、/var/log/mariadb/mariadb.log
(MySQL日志),及时发现暴力破解、SQL注入等异常行为。mysqldump
)和重要配置文件(如Apache的httpd.conf
、PHP的php.ini
),备份文件存储在离线介质(如外接硬盘)或异地云存储中:sudo mysqldump -u root -p --all-databases > /backup/all_databases.sql
sudo tar -czvf /backup/lamp_config_$(date +%F).tar.gz /etc/httpd /etc/php.ini /etc/my.cnf
# 示例:使用OpenVAS扫描(需提前安装)
sudo openvas-start
通过以上步骤,可全面修复CentOS LAMP环境中的常见安全漏洞,提升系统安全性。需注意,安全防护是持续过程,需定期重复上述操作(如每周更新系统、每月检查日志),以应对新出现的安全威胁。