如何在Ubuntu上配置Apache防盗刷
导读:Ubuntu上配置Apache防盗刷的实用方案 一 核心思路与适用场景 目标是抑制刷接口、撞库、爬虫抓取、资源盗链等行为,建议采用“速率限制 + 异常拦截 + 身份校验 + 资源保护”的多层策略,既减少误杀,又提升拦截效率。 二 快速落...
Ubuntu上配置Apache防盗刷的实用方案
一 核心思路与适用场景
- 目标是抑制刷接口、撞库、爬虫抓取、资源盗链等行为,建议采用“速率限制 + 异常拦截 + 身份校验 + 资源保护”的多层策略,既减少误杀,又提升拦截效率。
二 快速落地步骤
-
启用速率限制模块并配置全局速率
- 安装模块:sudo apt-get install libapache2-mod-ratelimit
- 在虚拟主机或全局配置中加入:
< IfModule mod_ratelimit.c> # 每个客户端IP每分钟最多 60 次请求 SetEnv rate-limit 60/minute < /IfModule> - 说明:该方式对整站或特定 Location 生效,适合作为第一道“闸门”。
-
安装并配置 mod_evasive 防刷与防DoS
- 安装:sudo apt-get install libapache2-mod-evasive
- 配置(/etc/apache2/mods-enabled/evasive.conf 或相应 Include 文件):
< IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 # 同一页面在 DOSPageInterval 内的请求上限 DOSSiteCount 50 # 同一站点在 DOSSiteInterval 内的请求上限 DOSPageInterval 1 # 单位:秒 DOSSiteInterval 1 # 单位:秒 DOSBlockingPeriod 600 # 封禁时长:单位秒(建议至少 10 分钟) < /IfModule> - 启用并重启:sudo a2enmod evasive & & sudo systemctl restart apache2
- 说明:对“短时间高频访问同一资源”的场景非常有效。
-
部署 Fail2Ban 自动封禁恶意来源
- 安装: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
- 说明:基于日志的自动化封禁,可与 mod_evasive 形成互补。
-
保护敏感接口与后台
- HTTP 基本认证(示例对 /var/www/html/protected 目录):
创建用户:sudo htpasswd -c /etc/apache2/.htpasswd username< Directory /var/www/html/protected> AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user < /Directory> - 验证码(reCAPTCHA,适用于登录/注册/评论等表单)
- 前端表单加入:
< div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"> < /div> < script src="https://www.google.com/recaptcha/api.js" async defer> < /script> - 服务端校验(PHP 示例):
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET_KEY& response=".$_POST['g-recaptcha-response']); $data = json_decode($response); if ($data-> success) { /* 处理业务 */ } else { /* 拒绝请求 */ }
- 前端表单加入:
- 说明:对“撞库、批量提交”类刷单行为效果显著。
- HTTP 基本认证(示例对 /var/www/html/protected 目录):
-
资源防盗链(保护图片、视频、下载)
- 启用模块:sudo a2enmod rewrite
- 在虚拟主机或 .htaccess 中加入:
RewriteEngine On RewriteCond %{ HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC] RewriteCond %{ HTTP_REFERER} !^https?://(www\.)?cdn\.yourdomain\.com [NC] RewriteRule \.(jpg|jpeg|png|gif|ico|css|js)$ - [F,L] - 说明:Referer 可被伪造,建议仅作为辅助手段,关键资源使用签名URL/临时令牌更安全。
三 进阶可选方案
- 使用 ModSecurity(WAF) 做更细粒度策略与速率限制
- 安装:sudo apt-get install libapache2-mod-security2
- 启用:sudo a2enmod security2 & & sudo systemctl restart apache2
- 可在 CRS 或自定义规则中加入速率限制与异常特征拦截,适合对应用层攻击与刷量做深度防护。
四 调参与运维建议
- 阈值设置遵循“先宽后严、逐步收敛”原则:上线初期将速率与封禁时间设得宽松(如每分钟几十次、封禁10 分钟),观察 /var/log/apache2/access.log 与业务指标后再逐步收紧,避免误杀搜索引擎或正常用户。
- 对 CDN 或反向代理部署:真实客户端 IP 通常在 X-Forwarded-For 头中,需确保 Fail2Ban/应用层规则正确识别真实 IP,避免被伪造来源绕过。
- 对高并发场景优先使用“边缘限流 + 源站兜底”(如 CDN/WAF 自带速率限制),源站再用 mod_ratelimit/mod_evasive 做第二道防护,降低源站压力。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上配置Apache防盗刷
本文地址: https://pptw.com/jishu/762164.html
