Ubuntu Apache2实现防盗刷的综合方案
Fail2Ban是一款入侵防御工具,通过分析Apache日志(如access.log)识别频繁的失败请求(如401未授权),自动封禁恶意IP地址。
sudo apt update && sudo apt 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
/etc/fail2ban/filter.d/apache-auth.conf,定义失败请求的正则表达式:[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 401
ignoreregex =
sudo systemctl restart fail2ban使配置生效。ModSecurity是一款开源WAF,可检测并阻止SQL注入、XSS、暴力破解等恶意请求,提升网站安全性。
sudo apt update && sudo apt install libapache2-mod-security2安装。sudo a2enmod security2启用ModSecurity。/etc/modsecurity/modsecurity.conf,添加基础防护规则:SecAction \
"phase:1,\
nolog,\
pass,\
ctl:ruleEngine=On,\
id:1000001,\
tag:'OWASP_CRS/WEB_ATTACK/REQUEST_RATE_LIMIT',\
setvar:'ip.req_rate_limit=5/m',\
setvar:ip.req_rate_limit_burst=10,\
expirevar:ip.req_rate_limit=60m"
sudo systemctl restart apache2应用配置。ModEvasive专门用于防止DoS、DDoS及暴力破解攻击,通过限制单个IP的请求频率封禁异常流量。
sudo apt install libapache2-mod-evasive安装。/etc/apache2/mods-enabled/evasive.conf,设置以下阈值:DOSHashTableSize 3097 # 哈希表大小(存储IP请求信息)
DOSPageCount 2 # 单个页面1秒内允许的最大请求数
DOSSiteCount 50 # 单个网站1秒内允许的最大总请求数
DOSPageInterval 1 # 页面请求的时间间隔(秒)
DOSSiteInterval 1 # 网站请求的时间间隔(秒)
DOSBlockingPeriod 10 # 触发封禁后,IP被阻止的时间(秒)
sudo a2enmod evasive启用,然后sudo systemctl restart apache2重启服务。ModRewrite模块可通过URL重写规则,防止资源被盗链(如图片、CSS、JS)及限制特定IP访问。
sudo a2enmod rewrite启用ModRewrite。/etc/apache2/sites-available/000-default.conf),添加以下内容:<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
RewriteEngine On
# 防盗链:禁止非本站域名引用图片资源
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.co\.uk [NC]
RewriteRule \.(jpg|jpeg|png|gif|ico|css|js)$ - [F,L]
# 限制特定IP访问(如后台路径)
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.100$
RewriteRule ^admin - [F,L]
</VirtualHost>
sudo systemctl restart apache2使规则生效。ModRateLimit可限制客户端发送请求的带宽或速率,防止滥用带宽或频繁请求。
sudo apt install libapache2-mod-ratelimit安装。/etc/apache2/mods-available/ratelimit.conf,添加以下内容:<IfModule mod_ratelimit.c>
<Location "/">
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 50 # 每秒允许的最大字节数(50KB/s)
SetEnv rate-initial-burst 100 # 初始突发字节数(100KB)
</Location>
</IfModule>
sudo a2enmod ratelimit启用,然后sudo systemctl restart apache2重启服务。Cloudflare作为CDN服务,可隐藏服务器真实IP、过滤恶意流量(如DDoS、SQL注入),并提供Web应用防火墙(WAF)功能。