从特定 IP 地址获取随机 http/s 请求

从特定 IP 地址获取随机 http/s 请求

使用的堆栈:ExpressJs、NodeJs、Docker、Nginx、Ubuntu 20.04

我的后端托管在DigitalOcean droplet使用上面提到的技术堆栈。我的服务器经常多次受到特定 http/s 请求的攻击,这些请求试图读取有时敏感的信息(例如 env 文件)。这些请求来自本地网络(::ffff:192.168.128.6)以及公众。例如:

 1. /wp-admin/.env
 2. /api.mydomain.com/.env
 3. /library/.env
 4. /new/.env
 5. /old/.env
 6. /local/.env
 7. /app/config/.env
 8. /api/.env
 9. /conf/.env
 10. /database/.env
 11. /vendor/phpunit/src/Util/PHP/eval-stdin.php
 12. /showLogin.cc
 13. ... not the full list ...

好消息是,所有请求都以404 状态代码但我不确定他们是否还没有成功取回一些东西......

有没有办法保护我的服务器

我已经对我的安全服务器进行了更新,记录了所有尝试访问错误 URL 的 IP 地址,并向我发送了包含错误 URL 和 IP 地址的电子邮件,我可以做些什么来阻止服务器机器上的这些 IP 地址,以便它们无法发出任何类型的请求?

我尝试过了:

ufw insert 1 reject from IP_ADDRESS to any

我还尝试在 nginx 配置中设置拒绝 IP_ADDRESS:

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
}

这是blocked_ips.conf文件:

deny IP_1;
deny IP_2;
deny IP_3;

但这种方法似乎不起作用。

UPD 看起来 DigitalOcean 本身正在针对我的服务器,这怎么可能?我该怎么办?

在此处输入图片描述

如何拒绝来自某些 IP 地址的任何网络级别(而不是 nginx 或 nodejs 级别)的访问?提前感谢各位朋友!

答案1

欢迎来到互联网,在这里这是很正常的:各种爬虫和机器人都在不断地搜索不应公开的漏洞和信息。

封锁IP地址的做法是有问题的:

  • 它不会阻止此类流量。
  • 如果发生以下情况,你最终可能会屏蔽合法访客:
    • 它们共享同一个 IP(NAT、代理、VPN)或
    • 你的禁令是无限的。

您的风险模型是什么?

保护你的服务器并不是要阻止这些请求。相反,你应该有一个风险模型:

  1. 会发生什么(不好的事情)?
  2. 那这个概率有多大?
  3. 这会有什么后果?
  4. 如何应对这一风险?

如果我们根据你问题的顾虑来回答这些问题:

  1. 坏人可能会扫描我的服务器以获取敏感数据。
  2. 100%。
  3. 这取决于存在什么样的漏洞或敏感数据。
  4. ???

这没什么帮助,不是吗?但你也可以重新表述一下以描述实际风险:

  1. 某人(或某些软件)可能会无意中留下一个.env可能包含密码等敏感信息的文件。
  2. 您可以根据开发和管理系统的人数、他们使用什么样的工具、以前是否发生过这种情况等来估计可能性。
  3. 有人可能会找到该文件并利用该信息来未经许可访问我们的系统等。
  4. 阻止对.env文件的访问。定期在文件系统中搜索公开目录中的此类文件。

使用 Nginx,你可以.env使用以下命令阻止对所有文件的访问:

location ~* /\.env$ {
  deny all;
}

Web 应用程序防火墙 (WAF)

阻止某些模式的配置很简单。真正的困难在于有太多模式需要考虑。幸运的是,有典型的攻击模式集合。在 Nginx 上,您可以使用,例如,ModSecurity(开源 WAF)&OWASP ModSecurity 核心规则集就是这样一个集合。

失败禁止

如果您确实要禁止 IP 地址,您应该自动且暂时地执行此操作。失败禁止是一种常用工具。它通常用于禁止多次身份验证失败的主机,以减缓暴力登录攻击。同样,它可以设置为监视来自 ModSecurity 的消息日志。互联网上有很多教程(例如搜索)Fail2Ban ModSecurity Nginx

相关内容