CentOS上Apache2的安全设置
定期更新CentOS系统和Apache及其依赖模块,修补已知安全漏洞,降低被攻击风险。
sudo yum update -y
使用firewalld限制仅开放HTTP(80端口,用于HTTP流量)和HTTPS(443端口,用于加密流量),阻止非法端口访问。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
通过注释或移除主配置文件(/etc/httpd/conf/httpd.conf)中不需要的模块(如mod_cgi、mod_status、mod_autoindex),减少攻击面。例如禁用mod_cgi:
# LoadModule cgi_module modules/mod_cgi.so
修改Apache主配置文件,隐藏服务器版本号和签名,避免向攻击者泄露系统信息:
ServerTokens Prod # 仅返回“Apache”版本
ServerSignature Off # 错误页不显示服务器版本
/var/www/html)配置中添加Options -Indexes,防止敏感文件(如配置文件、备份文件)被直接列出。<Directory "/var/www/html">
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
.htaccess或主配置文件限制特定IP段访问敏感目录(如后台管理页面)。<Directory "/var/www/html/admin">
Order deny,allow
Deny from all
Allow from 192.168.1.0/24
</Directory>
sudo yum install mod_security mod_security_crs -y
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2 # 1秒内2次相同请求触发
DOSSiteCount 50 # 1秒内50次不同请求触发
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10 # 触发后封锁10秒
</IfModule>
使用mod_ssl模块启用HTTPS,保护数据传输安全。首先安装证书(可通过Let’s Encrypt免费获取),再配置虚拟主机:
sudo yum install mod_ssl certbot python2-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
编辑/etc/httpd/conf.d/ssl.conf,确保以下配置:
<VirtualHost *:443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 # 禁用旧协议
SSLCipherSuite HIGH:!aNULL:!MD5 # 使用强加密套件
</VirtualHost>
强制HTTP跳转HTTPS(在/etc/httpd/conf/httpd.conf中添加):
<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
apache)运行Apache,限制网站目录权限(避免使用root)。sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html
LimitRequestBody 52428800 # 50MB
启用详细日志记录,定期分析异常行为(如大量404错误、暴力破解尝试):
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
使用工具(如fail2ban)监控日志,自动封禁恶意IP(如频繁访问/wp-login.php的IP)。
若启用SELinux,需配置正确策略以允许Apache访问必要资源(如网站目录、日志文件):
sudo setenforce 1 # 启用SELinux
sudo setsebool -P httpd_can_network_connect 1 # 允许Apache连接网络(如数据库)
sudo chcon -Rt httpd_sys_content_t /var/www/html # 设置网站目录安全上下文
mod_headers模块添加安全头,增强浏览器端防护:LoadModule headers_module modules/mod_headers.so
Header set X-XSS-Protection "1; mode=block" # 防XSS
Header set Content-Security-Policy "script-src 'self'" # 限制脚本源
Header set X-Frame-Options "DENY" # 防点击劫持
Header set X-Content-Type-Options "nosniff" # 防MIME嗅探
httpd.conf、虚拟主机配置)和系统日志,及时修复漏洞。