本文详细介绍如何通过一键脚本自动封禁异常User-Agent请求,包含Nginx/Apache双环境实现方案、正则匹配规则优化技巧以及自动化监控部署方法,帮助网站管理员快速阻断恶意爬虫和自动化攻击。
一、异常User-Agent的安全风险
异常User-Agent请求通常表现为以下特征:
- 伪造浏览器标识的自动化工具
- 包含SQL注入特征的恶意字符串
- 非常规设备或爬虫的非常规标识
- 空白或明显伪造的UA头
二、Nginx环境实现方案
在nginx.conf的http模块添加
map $http_user_agent $bad_ua {
default 0;
"~(wget|curl|python|nikto|scan|bot|spider|baidu|sogou)" 1;
"~(\n|\r|select|union|eval|base64)" 1;
}
server {
if ($bad_ua) {
return 403;
}
}
三、Apache环境实现方案
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (wget|curl|python|nikto|scan|bot) [NC]
RewriteRule . - [F,L]
</IfModule>
四、高级防护策略
- 动态黑名单系统:结合fail2ban实现自动封禁
- 频率限制:对相同UA的高频请求进行限速
- 机器学习检测:使用ModSecurity进行异常UA识别
五、自动化监控脚本
!/bin/bash
实时监控异常UA请求
tail -f /var/log/nginx/access.log | grep -E 'wget|curl|python|nikto' |
while read line; do
ip=$(echo $line | awk '{print $1}')
iptables -A INPUT -s $ip -j DROP
done
六、最佳实践建议
- 定期更新UA黑名单规则(建议每周更新)
- 对封禁IP保留至少30天日志
- 重要业务系统建议结合WAF使用
- 白名单机制排除合法爬虫
通过上述方案,网站管理员可以快速构建针对异常User-Agent的多层防护体系,有效降低自动化工具带来的安全风险,同时避免误封正常用户访问。
评论