node.js - 处理/防止潜在的恶意请求(AWS、Node.js)

标签 node.js security amazon-web-services amazon-ec2 ddos

我有一台在 aws 上运行的服务器 - 它与一些运行 node.js 服务器的 ec2 实例进行负载平衡。设置安全组,以便只有 LB 可以在 HTTP 端口上命中它们。

我正在跟踪一些日志文件,看到一堆(一次大约 50 个,似乎是周期性的)对 /manager/html 的请求 - 据我所知,这看起来像是试图公开一个我的应用程序中的漏洞或获得对某种数据库管理器的访问权限。

我的问题是:

  • 我是目标还是这些随机爬虫?这是一项甚至还没有启动的服务,所以它绝对是模糊的。有一些关于该服务的新闻报道,因此有人知道我们的域是可行的,但该子域尚未公开。

  • 是否存在不允许这些类型的请求访问我的实例的通用约定?最好,我能够在我的 LB 中配置某种频率或黑名单,并且永远不会让这些类型的请求命中实例。不过不确定如何检测恶意流量与正常流量。

  • 我是否应该在我的 ec2 实例上运行本地代理来避免这种情况?是否有任何现有的 node.js 解决方案可以在应用程序级别拒绝请求?这是个坏主意吗?

  • 奖励:如果我要记录这些请求的来源,这些信息会有用吗?我应该试着去流氓追查起源并派一些人去伤害他们吗?如果它是单一来源,我应该用 machineguns 处理原始 IP 吗? (我意识到这很愚蠢,但可能会激发一些有趣的答案)。

现在这些请求对我没有影响,他们得到 401 或 404,并且对其他客户几乎没有影响。但是,如果要扩大规模,我有什么选择?

最佳答案

发出了太多随机自动请求,即使我托管了一个 nodejs 服务器,他们也尝试使用 cgi 和 phpmyadmin/wordpress 配置。您可以对 NodeJS 服务器和 ssh 使用基本的速率限制技术 (redis-throttle)[https://npmjs.org/package/redis-throttle] fail2ban保护自己免受简单的 DoS 攻击。

除非 NodeJS 或您的库有众所周知的缺陷,否则自动请求不会造成伤害,因此您应该始终在整个服务器上进行输入和安全检查。如果你编码得好,你不应该担心。 (不要向用户转储错误、清理输入等)

您可以记录一周的 401 和 404,并通过 LB 过滤最常见的。如果您不是好莱坞制片人或与恐怖分子作斗争,那么寻找 IP 和来源对您没有帮助,因为您的问题并不那么重要,最重要的是这些请求主要来自僵尸网络。

关于node.js - 处理/防止潜在的恶意请求(AWS、Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20590428/

相关文章:

javascript - NodeJs Mongoose Promise then/catch

node.js - 为特定 Node.js 应用程序指定本地 mongodb 数据文件

php - 绕过 mysql_real_escape_string() 的 SQL 注入(inject)

ASP.NET MVC 2 EditModel 包含 Id?保护 ID 未被篡改

ruby - 如何提高我的 AWS RDS Postgres 性能?

mysql - 数据类型为 FLOAT 的字段中的额外零

node.js - GraphQL/Prisma 客户端服务器错误 : Variable '$data' cannot be non input type 'LinkCreateInput!' .(第 1 行,第 18 列)

java - 应该在哪里进行加密——在应用程序或数据库级别?

hadoop - 如何在ec2上重启单节点hadoop集群

amazon-web-services - 当源是 S3 存储桶时,AWS CloudFront 返回 http 307