1. 更新系统与安装Apache
首先,确保CentOS系统和所有软件包为最新版本,修复已知漏洞:
sudo yum update -y
安装Apache2(CentOS中默认包名为httpd)及基础安全模块:
sudo yum install httpd mod_security mod_evasive -y
2. 配置防火墙限制访问
使用firewalld仅开放HTTP(80端口)和HTTPS(443端口),阻断非法流量:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
3. 调整SELinux策略
若SELinux处于Enforcing模式(默认),需配置其允许Apache访问必要资源:
Permissive模式测试(不推荐生产环境长期使用):sudo setenforce 0
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_sendmail 1
sudo chcon -Rt httpd_sys_content_t /var/www/html
4. 优化Apache基础配置
编辑主配置文件/etc/httpd/conf/httpd.conf,实施以下关键设置:
ServerTokens Prod
ServerSignature Off
<Directory "/var/www/html">段中添加:Options -Indexes
LimitRequestFieldSize和LimitRequestBody限制请求头和 body 大小,防止DoS攻击(示例值需根据实际调整):LimitRequestFieldSize 8190
LimitRequestBody 1048576 # 1MB
5. 启用安全模块强化防护
/etc/httpd/conf.d/security2.conf,开启引擎并指定日志路径:SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecAuditLog /var/log/httpd/modsec_audit.log
/etc/httpd/conf.d/evasive.conf,设置阈值:<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2 # 1秒内同一IP访问同一页面超过2次触发
DOSSiteCount 50 # 1秒内同一IP访问整个站点超过50次触发
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10 # 触发后封锁10秒
</IfModule>
6. 配置SSL/TLS加密通信
sudo yum install mod_ssl -y
yourdomain.com为实际域名):sudo yum install certbot python2-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
.htaccess中添加:RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
7. 管理文件与目录权限
apache用户(默认),并设置合理权限:sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html
sudo chmod 600 /etc/httpd/conf.d/secret.conf
8. 定期维护与监控
sudo systemctl restart httpd
sudo yum update httpd mod_security mod_evasive -y
/var/log/httpd/access_log和/var/log/httpd/error_log),使用工具(如fail2ban)自动封禁恶意IP。sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
sudo cp -r /etc/httpd/conf.d /etc/httpd/conf.d.bak