在CentOS上配置Apache2防盜刷,可以通過以下步驟來實現:
首先,確保你的CentOS系統已經安裝了Apache和相關的安全模塊。你可以使用以下命令來安裝:
sudo yum install httpd mod_security
ModSecurity是一個開源的Web應用防火墻(WAF),可以幫助你防止各種攻擊,包括防盜刷。
sudo systemctl start httpd
sudo systemctl enable httpd
然后,啟用ModSecurity模塊:
sudo sed -i 's/LoadModule security2_module modules\/mod_security2.so/LoadModule security2_module modules\/mod_security2.so/' /etc/httpd/conf.modules.d/00-base.conf
sudo systemctl restart httpd
ModSecurity的規則文件通常位于/usr/share/modsecurity-crs/
目錄下。你可以使用這些規則來防止防盜刷。
首先,下載最新的CRS規則集:
cd /tmp
wget https://raw.githubusercontent.com/SpiderLabs/owasp-modsecurity-crs/master/crs-setup.sh
chmod +x crs-setup.sh
./crs-setup.sh --update --setvar='DeploymentProtectHomeDir=/usr/share/modsecurity-crs'
編輯Apache的主配置文件/etc/httpd/conf/httpd.conf
,添加以下內容:
IncludeOptional /usr/share/modsecurity-crs/*.conf
你可以根據需要自定義或添加防盜刷規則。例如,限制單個IP地址在一定時間內的請求次數:
<Location />
SecAction "id:1234567,phase:2,t:none,deny,status:429,msg:'Too many requests',log,auditlog"
SecRule REMOTE_ADDR "@gt 10" "t:none,setvar:ip.req_count=+1,setvar:ip.req_count_last=+1,expirevar:ip.req_count=60"
</Location>
這個規則的意思是:如果某個IP地址在60秒內發送的請求超過10次,則返回429狀態碼(Too Many Requests)。
重啟Apache服務以應用所有更改:
sudo systemctl restart httpd
然后,測試你的配置是否生效。你可以使用工具如curl
或瀏覽器來模擬多個請求,看看是否會被限制。
確保你啟用了ModSecurity的審計日志功能,以便監控和排查問題:
SecAuditEngine RelevantOnly
SecAuditLog /var/log/httpd/audit.log
SecAuditLogParts ABIJDEFHZ
SecAuditLogType Serial
通過以上步驟,你應該能夠在CentOS上成功配置Apache2防盜刷。記得定期更新你的系統和ModSecurity規則,以保持安全性。