我有一台运行在aws上的服务器 - 它负载平衡了一些运行node.js服务器的ec2实例。设置安全组,以便只有LB可以在HTTP端口上访问它们。
我正在拖尾一些日志文件,看到一堆(一次约50个左右,似乎有些周期性地)对/manager/html
的请求 - AFAIK这看起来像是试图在我的应用中暴露漏洞或获取访问某种数据库管理器。
我的问题是:
我是目标还是这些随机抓取工具?这是一项尚未推出的服务,所以它绝对模糊不清。关于这项服务有一些新闻,所以一个人知道我们的域名是可行的,但这个子域名尚未公开。
是否存在不允许这些类型的请求命中我的实例的常见约定?最好,我能够在我的LB中配置某种频率或黑名单,并且永远不会让这些类型的请求到达实例。不知道如何检测恶意与正常流量。
我应该在我的ec2实例上运行本地代理以避免这种类型的事情吗?是否有任何现有的node.js解决方案可以拒绝应用级别的请求?这是个坏主意吗?
奖励:如果我要记录这些请求的来源,那么这些信息会有用吗?我是否应该试图去流氓并追捕原点并发送一些伤害他们的方式?如果它是单一来源,我是否应该使用原始IP? (我意识到这很愚蠢,但可能会激发一些有趣的答案)。
现在这些请求不会影响我,他们获得401或404,并且它对其他客户几乎没有影响。但如果这个规模上升,我的选择是什么?
答案 0 :(得分:2)
正在制作太多随机自动请求,即使我托管了一个nodejs服务器,他们也尝试使用cgi和phpmyadmin / wordpress配置。您可以为NodeJS服务器和ssh fail2ban使用基本的速率限制技术(redis-throttle)[https://npmjs.org/package/redis-throttle]来保护自己免受简单的DoS攻击。
自动请求不会造成伤害,除非NodeJS或您拥有的库具有众所周知的缺陷,因此您应始终输入&安全检查整个服务器。如果编码好,你不应该担心。 (不要向用户转储错误,清理输入等。)
您可以将401和404记录一周,并通过LB过滤最常见的一个。如果你不是好莱坞制片人或打击恐怖分子,那么寻找知识产权和消息来源将无济于事,因为问题不是那么重要,最重要的是这些请求主要来自僵尸网络。
答案 1 :(得分:1)
过去我们遇到过类似的问题,我们采取了一些预防措施来阻止这种攻击,虽然它无法保证完全阻止它们,但它在减少此类攻击方面表现出了重要的措施。
答案 2 :(得分:1)
考虑在应用服务器前面运行Varnish等代理缓存。使用它的VCL只允许访问您定义的URI并拒绝其他所有内容,允许GET但阻止PUT和POST等...也可用于过滤您返回的http响应头。例如,这可以让你将node.js服务器屏蔽为apache。许多人都在网上实施这一点。