印度德里的某个脚本小子从昨晚开始就一直试图入侵我们的网站。他编写了一个浏览器脚本,该脚本以大量嵌套循环向我们的服务器发出请求,并尝试了所有可能的方法。
他什么也没做,甚至没有突破我们的基本防御(但他正在填满我们的日志文件)。
我们403 Unauthorized
几乎在他的请求收到后立即将其回复,但是我们越快阻止他的请求,他的脚本运行得就越快。
我们想在发回 403 响应之前引入某种“延迟”。时间越长越好。
问题:我们如何才能在不影响网站其他部分的情况下延迟黑客攻击?
- 我认为他帖子中的 Sleep(15000) 对其他网站访问者来说是个坏消息。
- 仅为他开辟一条新线索似乎有些小题大做。
- 还有其他方法可以发送延迟响应吗?
- 我们可以强制他的浏览器等待多长时间?我想我不太在意他是否收到错误
403 Unauthorized
或最终超时,所以我们甚至可以无限期地等待。
答案1
您的 Web 服务器前面应该有一个单独的防火墙。您希望阻止那里的请求到达您的服务器,这样就他的 IP 而言,您的服务器就不再存在了。
答案2
有大大小小的入侵检测系统可以根据各种过滤器、蜜罐和其他机制自动为你执行此操作
例如失败2ban可以配置为根据日志分析采取行动。
这样你就可以
- 轻松过滤发起攻击的单个 IP 地址,而不会影响网站的其他用户
- 你可以编写自己的正则表达式来分析日志
- 你可以定义自己的行为(限制而不是禁止等)
还有其他更大的工具,请参阅维基百科上的另请参阅部分。
由于您的问题标记为 asp.net,我假设您的服务器平台是 Windows。不过,如果使用 Linux 防火墙是一种选择,您可以尝试上述方法
- 在 WAN 和服务器之间放置 Linux 防火墙
- 授予防火墙计算机访问 IIS 日志的权限
- 编写正则表达式来分析它
- 将其插入现有模板以进行禁止
这种防火墙可以在非常普通的硬件上运行 - 甚至可以像 Linksys 路由器那样运行(见这里) 以获得非常不错的链路带宽。
答案3
如果它们来自特定的 IP 地址或地址块,您可能需要向其添加黑洞路由:
ip ro add blackhole 10.69.96.0/24
ip ro flush cache
您也可以使用 iptables 规则来实现这一点,但要意识到 iptables 规则是线性遍历的,因此如果您开始为每个出现的恶意程序添加 iptables 规则,您可能会开始消耗大量 CPU。路由表针对处理大量条目进行了优化。例如,我的一个盒子的路由表中有 350K 个条目,没有问题。但如果我有 3K 条 iptables 规则,该盒子几乎肯定会崩溃。
如果您尝试执行某些操作以使应用程序在这些连接上休眠几秒钟,您最终可能会占用足够多的资源,导致合法请求无法获取任何资源。
答案4
如果你使用 Linux,使用 iptables 将该家伙限制为 1 字节/秒,并使其延迟较大,并让他永远甚至无法让一个请求通过。如果是分布式的,那就没什么用了。
我不确定你如何在 Windows 上执行此操作,但如果你有路由器或硬件防火墙,你可能会在其中找到一些类似的选项。
编辑:同意以上观点,这更像是一个服务器故障问题。