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.confsudo sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/httpd/conf/httpd.conffirewalld仅开放HTTP(80)、HTTPS(443)端口,禁止非法IP访问:sudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=httpssudo firewall-cmd --reloadMaxClients(最大并发连接数)和MaxRequestsPerChild(每个子进程处理请求数)参数,避免资源耗尽:sudo sed -i 's/MaxClients 150/MaxClients 100/' /etc/httpd/conf/httpd.confsudo sed -i 's/MaxRequestsPerChild 4000/MaxRequestsPerChild 2000/' /etc/httpd/conf/httpd.conf修改后重启Apache生效:sudo systemctl restart httpdmysql_secure_installation初始化数据库安全设置,包括设置root密码、移除匿名用户、禁止root远程登录:sudo mysql_secure_installationmy.cnf(或/etc/mysql/mariadb.conf.d/50-server.cnf)文件,强制使用强密码(如包含大小写字母、数字、特殊字符):sudo vi /etc/my.cnf# 添加以下内容[mysqld]validate_password_policy=STRONGvalidate_password_length=12GRANT 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_execdisplay_errors设置为Off,避免将敏感信息(如数据库结构、路径)泄露给用户:sudo sed -i 's/display_errors = On/display_errors = Off/' /etc/php.iniupload_max_filesize(最大上传文件大小)和upload_tmp_dir(临时上传目录),防止恶意文件上传:sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 5M/' /etc/php.inisudo sed -i 's/upload_tmp_dir = .*/upload_tmp_dir = /var/tmp/' /etc/php.ini修改后重启Apache使配置生效:sudo systemctl restart httpdenforcing模式),增强文件系统访问控制,限制进程权限:sudo getenforce# 检查SELinux状态(Enforcing/Permissive/Disabled)sudo sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/selinux/configsudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_configsudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_configssh-keygen -t rsa -b 4096# 生成密钥对ssh-copy-id username@server_ip# 复制公钥到服务器sudo systemctl restart sshdfirewalld限制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 --reloadauditd服务记录系统活动(如用户登录、文件修改),便于后续分析异常行为:sudo yum install audit -ysudo systemctl start auditdsudo 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.sqlsudo tar -czvf /backup/lamp_config_$(date +%F).tar.gz /etc/httpd /etc/php.ini /etc/my.cnf# 示例:使用OpenVAS扫描(需提前安装)sudo openvas-start通过以上步骤,可全面修复CentOS LAMP环境中的常见安全漏洞,提升系统安全性。需注意,安全防护是持续过程,需定期重复上述操作(如每周更新系统、每月检查日志),以应对新出现的安全威胁。