如何屏蔽常见扫描工具的 UA?

2025.5.29 杂七杂八 533

如何屏蔽常见扫描工具的 UA?

本文详细介绍如何通过识别和屏蔽扫描工具的User-Agent(UA)来提升服务器安全性,涵盖Nginx/Apache配置方法、正则表达式编写技巧以及自动化防御方案,帮助管理员有效阻断恶意扫描行为。

一、为什么需要屏蔽扫描工具UA?

网络扫描工具(如Nmap、Acunetix、Sqlmap等)通常会携带特征明显的User-Agent标识。通过拦截这些UA:

  • 减少服务器无效流量消耗
  • 降低漏洞探测风险
  • 阻止自动化攻击的初步侦查
  • 提升日志分析效率

二、常见扫描工具UA特征

 典型扫描工具UA示例
Nmap Scripting Engine
sqlmap/1.6stable
Acunetix-Web-Security
Nikto/2.1.6
MetasploitFramework

三、Nginx服务器屏蔽方案

server {
     在server段添加以下规则
    if ($http_user_agent ~ (nmap|sqlmap|acunetix|nikto|metasploit|wpscan|dirbuster)) {
        return 403;
    }
    
     更严格的正则匹配
    if ($http_user_agent ~ "(?:libwww|wget|python-urllib|hydra|nessus)") {
        return 444;  直接关闭连接
    }
}

四、Apache服务器屏蔽方案

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} (nmap|sqlmap|acunetix) [NC]
    RewriteRule ^ - [F,L]
    
     高级匹配模式
    RewriteCond %{HTTP_USER_AGENT} ^.(dirbuster|burpsuite|owasp).$ [NC]
    RewriteRule ^.$ - [F,L]
</IfModule>

五、进阶防御策略

1. 动态黑名单系统

结合日志分析工具(如Fail2Ban)自动识别并封禁:

 fail2ban配置示例
[nginx-scanner]
enabled = true
filter = nginx-scanner
logpath = /var/log/nginx/access.log
maxretry = 1
bantime = 86400

2. Cloudflare防火墙规则

在CF面板创建UA匹配规则:
http.user_agent contains "sqlmap" 动作设置为”Block”

3. 频率限制组合防御

limit_req_zone $http_user_agent zone=scanners:10m rate=1r/m;

六、注意事项

  • 定期更新UA特征库(建议每月检查)
  • 测试规则时先使用return 200 "test";避免误拦截
  • 重要业务系统建议配合WAF使用
  • 保留完整的访问日志用于审计

通过以上方法可有效拦截90%以上的自动化扫描工具。建议结合IP黑名单和速率限制形成多层防御体系,持续监控并优化规则。

评论