如何防止Apache2遭受DDoS攻击
导读:Apache2 防护 DDoS 的实用方案 一 分层防护思路 边缘与网络层:优先在CDN/WAF侧做流量清洗与速率限制,隐藏源站真实 IP,显著降低到达 Apache 的恶意流量。 主机与系统层:用 iptables/fail2ban 做...
Apache2 防护 DDoS 的实用方案
一 分层防护思路
- 边缘与网络层:优先在CDN/WAF侧做流量清洗与速率限制,隐藏源站真实 IP,显著降低到达 Apache 的恶意流量。
- 主机与系统层:用 iptables/fail2ban 做连接数与异常频率限制,快速封禁恶意来源。
- 应用层:在 Apache 启用 mod_evasive(抗高频请求/CC)与 mod_reqtimeout、mod_qos(抗慢速攻击、限并发与最低速率),并配合 mod_security(WAF规则)降低应用被滥用风险。
- 监控与响应:实时观测连接、带宽与日志,出现异常时按预案限流/封禁并溯源。
二 关键模块与配置示例
- 安装与启用模块(Debian/Ubuntu)
- 抗 CC/暴力:sudo apt install libapache2-mod-evasive;启用:sudo a2enmod evasive;检查:apachectl -M | grep evasive
- 抗慢速:sudo apt install libapache2-mod-qos;启用:sudo a2enmod qos
- WAF:sudo apt install libapache2-mod-security2;启用:sudo a2enmod security2
- mod_evasive 推荐配置(/etc/apache2/mods-enabled/evasive.conf)
- 作用:限制同一页面/站点的请求频率,超阈值返回 403 并可邮件告警
- 示例:
< IfModule mod_evasive20.c> DOSHashTableSize 32768 DOSPageCount 20 DOSSiteCount 100 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 600 DOSLogDir "/var/log/apache2/evasive" DOSEmailNotify admin@domain.com < /IfModule> - 提示:高并发站点适当增大 DOSHashTableSize,避免哈希冲突影响性能。
- 抗慢速与限并发(mod_reqtimeout、mod_qos)
- mod_reqtimeout:限制请求头/体的接收超时与最低速率,超时返回 408
< IfModule mod_reqtimeout.c> RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500 < /IfModule> - mod_qos:限制每 IP 并发、全局并发与最低传输速率,识别并断开慢客户端
< IfModule mod_qos.c> QS_ClientEntries 100000 QS_SrvMaxConnPerIP 50 MaxClients 256 QS_SrvMaxConnClose 180 QS_SrvMinDataRate 150 1200 < /IfModule>
- mod_reqtimeout:限制请求头/体的接收超时与最低速率,超时返回 408
- WAF 基础规则(mod_security,示例为阻断对敏感脚本的直接访问)
以上模块与参数可有效缓解 HTTP Flood/CC 与 Slowloris/Slow POST 等常见攻击形态。SecRule REQUEST_URI "@rx \.(php|asp|aspx|jsp)$" \ "id:1000001,phase:2,block,t:none,log,msg:'Blocking direct access to PHP/ASP/ASPX/JSP files',severity:'CRITICAL'"
三 系统与网络层加固
- 防火墙放行与端口管理
- Ubuntu(UFW):sudo ufw allow 80/tcp;sudo ufw allow 443/tcp;sudo ufw enable
- CentOS(firewalld):sudo firewall-cmd --permanent --add-service=http;sudo firewall-cmd --permanent --add-service=https;sudo firewall-cmd --reload
- 连接数/速率限制(iptables,示例)
- 限制单 IP 到 80 端口的最大并发连接数:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP - 限制每秒新连接速率(突发 30):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/second --limit-burst 30 -j ACCEPT
- 限制单 IP 到 80 端口的最大并发连接数:
- 自动封禁(fail2ban)
- 安装:sudo apt/yum install fail2ban
- 作用:基于日志匹配“短时间高频失败/异常请求”的 IP,自动添加防火墙规则封禁,减轻应用层压力。
四 检测与验证
- 连接与流量观测
- 查看连接状态:ss -s;实时带宽/连接:iftop;抓包分析:tcpdump
- 验证 mod_evasive
- 使用 ab 发起压力测试(仅在内网或测试环境):
ab -n 1000 -c 50 http://your-domain/ - 预期:超过阈值后返回 403,并在日志/邮件中看到拦截记录(如配置了 DOSEmailNotify)。
- 使用 ab 发起压力测试(仅在内网或测试环境):
五 运维与架构建议
- 优先把 CDN/WAF 放在源站前,利用其全球清洗与规则引擎,源站只接受来自 CDN 的回源流量(可通过源站防火墙仅放行 CDN 网段)。
- 对静态资源启用长缓存与 CDN 边缘缓存,减少源站请求占比。
- 为管理后台、登录与敏感接口增加强认证/验证码与来源白名单,降低被刷风险。
- 制定应急预案:阈值调整流程、封禁脚本、告警通道与回滚方案;定期审计日志与规则有效性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何防止Apache2遭受DDoS攻击
本文地址: https://pptw.com/jishu/756860.html
