Apache2在Ubuntu上如何实现防盗刷
小樊
31
2025-12-17 00:25:47
Ubuntu上Apache2防盗刷的实用方案
一 核心思路与分层策略
- 在边缘或反向代理层优先拦截高频与恶意流量(如Cloudflare的WAF与速率限制),减少源站压力。
- 在Apache层叠加多层防护:按IP/会话的请求速率限制(mod_ratelimit、mod_evasive)、应用层规则与异常请求拦截(ModSecurity/WAF)、对敏感路径的身份认证与访问控制。
- 对资源滥用与内容盗用,使用防盗链与User-Agent基础过滤;对暴力破解与异常登录,结合日志分析自动封禁(Fail2Ban)。
二 推荐组合与配置步骤
- 边缘与CDN层
- 使用Cloudflare开启“Under Attack Mode”、速率限制与WAF规则,隐藏源站IP,显著降低刷量与CC攻击到达源站的概率。
- 速率限制与突发控制
- 安装并启用mod_ratelimit,对全站或指定Location按请求速率限流(示例为每分钟60次,可按业务下调):
- 安装与启用:sudo apt-get update && sudo apt-get install libapache2-mod-ratelimit && sudo a2enmod ratelimit && sudo systemctl restart apache2
- 配置示例(放在 VirtualHost 或 Location 中):
-
Ratelimit on
RatelimitRequests 60
RatelimitInterval 60
- 安装并启用mod_evasive,对单页/整站在短时间窗口内的高频请求进行封禁(示例阈值可按业务调小):
- 安装与启用:sudo apt-get install libapache2-mod-evasive && sudo a2enmod evasive && sudo systemctl restart apache2
- 配置示例(/etc/apache2/mods-enabled/evasive.conf 或 conf-available/evasive.conf 后 a2enconf evasive):
-
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
- Web应用防火墙与协议异常拦截
- 安装并启用ModSecurity(建议配合OWASP Core Rule Set),开启基础规则集,并可根据需要添加速率限制变量(示例为每IP每分钟5次、突发10,窗口60分钟):
- 安装与启用:sudo apt-get update && sudo apt-get install libapache2-mod-security2 && sudo a2enmod security2 && sudo systemctl restart apache2
- 规则示例(在 modsecurity.conf 或自定义规则中按需启用):
- SecAction “id:1000001,phase:1,nolog,pass,ctl:ruleEngine=On,setvar:‘ip.req_rate_limit=5/m’,setvar:ip.req_rate_limit_burst=10,expirevar:‘ip.req_rate_limit=60m’”
- 日志分析与自动封禁
- 安装并配置Fail2Ban,基于Apache日志自动封禁恶意IP(示例:10分钟窗口内3次失败即封600秒):
- 安装:sudo apt-get install fail2ban
- 配置 /etc/fail2ban/jail.local:
- [DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
- [apache-auth]
enabled = true
filter = apache-auth
action = iptables-multiport[name=Apache, port=“http,https”, protocol=tcp]
logpath = /var/log/apache2/access.log
- 重启:sudo systemctl restart fail2ban
- 资源保护与访问控制
- 防盗链(仅允许本站与可信域名引用图片/CSS/JS等静态资源):
- 启用模块:sudo a2enmod rewrite
- 虚拟主机或 .htaccess 示例:
- RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yourdomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?trusted.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .(jpg|jpeg|png|gif|ico|css|js)$ - [F,L]
- 敏感路径加HTTP基本认证(示例保护 /var/www/html/admin):
- 创建密码文件:sudo htpasswd -c /etc/apache2/.htpasswd admin
- 配置:
- <Directory /var/www/html/admin>
AuthType Basic
AuthName “Restricted Area”
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
- 基础安全头与信息泄露防护:
- 编辑 /etc/apache2/conf-enabled/security.conf:ServerTokens Prod;ServerSignature Off。
三 关键参数调优建议
- 速率限制:API/登录等敏感端点建议更严格(如每分钟30–60次),静态资源可适当放宽;突发(burst)用于容忍短时合法峰值,避免误杀正常用户。
- 封禁窗口:Fail2Ban 的 bantime/findtime/maxretry 建议从“短窗口+少重试”起步(如600/600/3),观察误报后再调整;对持续攻击可逐步加严。
- 日志与监控:持续观察 /var/log/apache2/access.log 与 error.log,结合 Fail2Ban 与监控告警,及时发现异常路径、UA、Referer 与来源IP的异常聚集。
四 验证与运维要点
- 验证规则生效:对限流与封禁策略,使用压测工具(如 ab/wrk)或脚本模拟高频请求,确认返回 429/403 或连接被拒;对防盗链,用外站页面引用资源验证是否被拦截。
- 避免误封:放行公司/合作方出口IP与健康检查IP;对搜索引擎与可信爬虫放行(可在 WAF/防火墙层做白名单)。
- 维护与升级:定期更新 Apache、模块与规则集(如OWASP CRS),并回放近期访问日志验证新规则的有效性与误报率。