如何减慢黑客

印度德里的一些剧本小孩从昨晚开始一直在试图破解我们的网站。 他编写了一个浏览器脚本,用大量的嵌套循环来请求我们的服务器,在阳光下试试一切。

他没有到任何地方,甚至没有越过我们的基本防御(但他正在填写我们的日志文件)。

他们进来的时候,我们发回了一个403 Unauthorized的请求,但是我们越快阻止他的请求,他的脚本运行得越快。

我们想在回复403响应之前引入某种“延迟”。 时间越长越好。

问:如何在不影响网站其他部分的情况下延迟黑客入侵?

  • 我认为他的线程上的睡眠(15000)对其他网站访问者来说是个坏消息。
  • 纺一个新的线程只是为了他似乎是矫枉过正。
  • 还有其他方式发送延迟响应吗?
  • 我们可以迫使他的浏览器等多久? 我想如果他得到了403 Unauthorized错误,或者最终超时,我都不在乎,所以我们甚至可以做一个无限期的/无限的等待。

应该有一个单独的防火墙在你的Web服务器的前面。 你想阻止那些请求到达你的服务器,这样到目前为止,他的IP关心你的服务器不再存在。

有大大小小的实际入侵检测系统会根据各种filter,蜜jar和其他机制自动执行此操作

例如,请参阅fail2ban ,可以将其configuration为基于日志分析采取操作。

这样你可以

  • 轻松过滤来自攻击的单个IP地址,而不会影响您的站点的其他用户
  • 你可以编写自己的正则expression式来分析日志
  • 你可以定义自己的行为(油门而不是禁令等)

还有其他更大的工具,请参阅wikipedia上的另一部分。

由于你的问题被标记为asp.net我假设你的服务器平台是Windows。 不过,如果使用Linux防火墙是一个选项,你可以尝试以上

  • 在WAN和你的服务器之间放置一个Linux防火墙
  • 为您的IIS日志提供对防火墙机器的访问权限
  • 写正则expression式来分析它
  • 将其插入现有的模板中以禁止

这样的防火墙可以在非常适中的硬件上运行 – 甚至可以像Linksys路由器(参见这里 )那样获得非常体面的链路带宽。

如果他们来自特定的IP地址或地址块,则可能需要添加黑洞路由:

 ip ro add blackhole 10.69.96.0/24 ip ro flush cache 

你也可以通过使用iptables规则来实现这一点,但是要意识到iptables规则是线性遍历的,所以如果你开始为每个不法分子添加iptables规则,你可以开始吃掉很多的CPU。 路由表经过优化,可处理多个条目。 例如,我的一个箱子在路由表中有350K条目,没有问题。 但是,如果我有3K的iptables规则,那么这个盒子肯定会崩溃。

如果你尝试做一些让你的应用程序在这些连接上hibernate几秒钟的事情,你可能会得到足够的资源,合法的请求将无法获得任何资源。

你不想让他放慢速度,因为不正确地减慢他的速度会使你的站点下降,就好像它是在DoS攻击下一样,因为你的线程将为这个人的请求“忙”。 你想要做的就是阻止他的IP,并完成它。 没有理由诱惑这个人。

你在找什么是Apache模块mod_evaisve。

在基于Debian的发行版中,使用安装

 apt-get install libapache2-mod-evasive 

CentOS的/ RHEL

 yum install mod_evasive 

mod_evasive保持跟踪来到Apache的请求,并使用通过阈值的iptables禁止IP。 这是针对基于HTTP的DoS攻击甚至是分布式DoS攻击的终极工具,当您被具有数千个不同IP的巨大僵尸networking所攻击时。

它作为运行时加载的Apache模块运行,而不是作为单独的守护进程运行。

尽pipe一个拥有巨大僵尸networking控制权的智能攻击者仍然可以通过对僵尸networking中每个僵尸发送的请求进行计时,从而使networking服务器无法通过阈值。

在这种情况下,您必须使用基于exception的IDS,并可能自己对系统进行培训。 但是,除非你有一些真正的大敌人或者有公司议程的人,否则这是不太可能发生的。

如果你使用的是linux,那么使用iptables来限制这个人大概延迟1个字节/秒,并且让他永远拿不到一个请求。 如果是分布式的,那也不会有太大的帮助。

我不确定在Windows上如何做,但是如果您有路由器或硬件防火墙,您可能会发现一些类似的选项。

编辑:同意以上,这更像是一个服务器故障的问题。

如果这个家伙的IP地址非常稳定,你可以创build一个自定义的HttpModule,通过修改web.config文件来插入它,并且当它被识别为这个IP地址时有一个延迟。 或者你可以发回他一些404代码或让他redirect到别的地方。

你知道他们在印度 您的网站是否有重要的印度客户,这将阻止他们在防火墙级别的整个IP范围的增量,直到stream量停止? 这当然不是一个坚定的解决scheme,但如果你只是处理一个典型的“脚本小子”,它应该足以阻止他们,并将他们发送到另一个目标。

更好的是,如果是来自一个IP,你可以回复你自己的拒绝服务攻击:)

除了收到的答案之外,您还需要保存文档(日志,跟踪)并将其提供给服务提供商。 这是事件中最有效的,因为你的提供者可以见证入侵。 即使您的措施取得了成功,重要的是要减less进一步的尝试,并帮助您的提供商升级向攻击者的服务提供商提出的请求。 可以说攻击者的提供者最有效的行为就是拒绝服务他的客户,即被识别的攻击者。

如果你是一个程序员,你可以使用.net Begin_Request事件,并把你的“睡眠”放在那里