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 # 哈希表大?。ù鎯P請求信息)
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)功能。