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

DigitalOcean Droplet服务器遭恶意请求,寻求网络级IP封禁及安全加固方案

DigitalOcean Droplet服务器遭恶意请求,寻求网络级IP封禁及安全加固方案

嗨,我来帮你梳理下解决方案,你遇到的这种恶意扫描是服务器运维里很常见的情况,先别慌——目前所有请求都返回404,说明敏感信息暂时没泄露,但确实得把防护措施做扎实。

一、先搞定网络级IP封禁(Ubuntu 20.04 + UFW)

你之前用ufw insert 1 reject from IP_ADDRESS to any没生效,大概率是这几个原因:

  • UFW有没有正确启用?先确认状态:sudo ufw status verbose,如果显示inactive,得先开启防火墙:sudo ufw enable
  • 规则优先级问题:如果之前你允许了所有HTTP/HTTPS流量,后来插入的封禁规则可能被覆盖。正确做法是把封禁规则放在最前面,确保优先匹配:
    # 封禁单个IPv4地址
    sudo ufw insert 1 deny from 192.168.128.6 to any
    # 如果是IPv6地址,格式为:sudo ufw insert 1 deny from 2001:db8::1 to any
    
  • Docker干扰了UFW规则?Docker会自动添加iptables规则,可能绕过UFW的限制。解决办法是安装ufw-docker工具,它能协调Docker和UFW的兼容性:
    sudo apt-get install ufw-docker
    sudo ufw-docker install
    sudo systemctl restart ufw
    
    安装完成后再添加封禁规则,就能正常生效了。

二、关于DigitalOcean内部IP的请求

你看到的::ffff:192.168.128.6是Droplet所在数据中心的私有IP段,这大概率不是DigitalOcean官方在扫描你,而是同一数据中心内的其他恶意Droplet发起的扫描(很多攻击者会批量租用云服务器搞这类操作)。

处理方式和普通恶意IP一样:直接用UFW封禁这个私有IP就行——如果你的服务不需要和这个内部IP通信,完全可以拒绝所有来自它的请求。

三、Nginx层面的封禁优化(可选的应用层防护)

之前的blocked_ips.conf没生效,可能是配置位置不对。你需要把封禁规则的include语句放在server块的最顶部,确保请求先匹配封禁规则:

server {
    # 优先加载封禁规则
    include /var/www/blocked_ips.conf;

    listen                  443 ssl;
    listen                  [::]:443 ssl;
    server_name             api.mydomain-staging.com;
    server_tokens off;
    ... rest of the code
}

另外,建议把deny指令搭配return 444;使用,Nginx会直接关闭连接,不给攻击者任何响应信息,安全性更高:

# blocked_ips.conf里的配置改成
deny IP_1;
return 444;
deny IP_2;
return 444;

修改完记得重启Nginx生效:sudo systemctl restart nginx

四、额外的安全加固建议

除了封禁IP,这些措施能进一步提升服务器安全性:

  • 彻底隔离敏感文件:绝对不要把.env或配置文件放在Web根目录下。Express/Node项目里,.env应该放在项目根目录(非public目录),Nginx也不要将这些目录映射为可访问路径。
  • 启用fail2ban自动封禁:这是一款自动拦截恶意IP的工具,它会监控Nginx日志,发现多次恶意请求的IP后,自动添加UFW封禁规则。安装和配置步骤:
    sudo apt-get install fail2ban
    # 复制默认配置文件进行自定义修改
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    
    编辑/etc/fail2ban/jail.local,启用Nginx相关的监控模块:
    [nginx-http-auth]
    enabled = true
    port    = http,https
    logpath = %(nginx_error_log)s
    
    [nginx-botsearch]
    enabled = true
    port    = http,https
    logpath = %(nginx_access_log)s
    
    启动并设置开机自启:sudo systemctl enable --now fail2ban
  • 添加Nginx请求速率限制:防止攻击者暴力扫描你的路径,在Nginx的http块里添加规则:
    http {
        limit_req_zone $binary_remote_addr zone=scan_limit:10m rate=10r/s;
        ...
        server {
            ...
            location / {
                limit_req zone=scan_limit burst=20 nodelay;
                ...
            }
        }
    }
    
    这个规则限制每个IP每秒最多10个请求,突发请求最多20个,超过直接拒绝。
  • 定期更新系统和软件:执行sudo apt update && sudo apt upgrade -y,及时修补系统和软件的安全漏洞。

备注:内容来源于stack exchange,提问作者spatak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 13:30:30