You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Nginx遇Botnet扫描:无文件返回200及防护咨询

问题2:如何防护此类Botnet扫描/攻击?

结合你的现有配置,给出以下具体优化方案:

1. 直接拦截敏感路径请求

在主域名的server块里,location /之前添加专门的规则,拦截常见的敏感路径:

# 拦截所有隐藏文件(除了ACME验证的路径)
location ~ /\.(?!well-known).* {
    return 444;
}

# 拦截特定的敏感扫描路径
location ~* ^/(\.env|\.git|config.json|telescope|META-INF) {
    return 444;
}

return 444会直接关闭连接,比403更节省服务器资源。

2. 补充User-Agent拦截规则

你的block_user_agent映射里没有包含扫描用的Go-http-client/1.1,把它加进去:

map $http_user_agent $block_user_agent {
    default 0;
    ~*LWP::Simple 1;
    ~*BBBike 1;
    ~*wget 1;
    ~*msnbot 1;
    ~*scrapbot 1;
    ~*(nmap|nikto|wikto|sf|sqlmap|bsqlbf|w3af|acunetix|havij|appscan) 1;
    ~*Go-http-client 1; # 新增这条
}

3. 强化请求频率限制

你已经配置了limit_req,可以根据情况调整参数,比如把rate从1r/s降到0.5r/s,或者在主server块里添加并发连接限制:

limit_conn slimits 2;

limit_conn_zone已经在nginx.conf里定义,直接使用即可。

4. 配合Fail2Ban封禁恶意IP

如果是Docker部署,可以搭建Fail2Ban容器,监控Nginx的access.log,当同一个IP在短时间内发起多次敏感请求时,自动封禁该IP。

5. 避免SPA fallback暴露敏感路径(可选)

如果你的应用不是纯SPA,可以修改try_files规则,让不存在的文件返回404:

try_files $uri $uri/ =404;

但如果是React SPA,这条不能改,否则路由会失效,所以优先用前面的路径拦截方案。


内容的提问来源于stack exchange,提问作者dians1s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 22:14:57