DDOS攻击 – 如何防止

最近我读了关于亚马逊和PayPal的拒绝服务攻击。 我很好奇这是如何执行的。 这些大公司必须拥有巨大的服务器,因此DOS需要数十亿台机器人才能访问它。

所以我的问题是

  1. 如何在这个级别执行DDOS攻击?
  2. 如何预先知道这是攻击事件?
  3. 如何防止这一点(如何区分机器人与用户,除了通用的validation码方式)

从根本上说,这种拒绝服务攻击涉及向服务器发送比它能处理的更多的请求。 它可能是大量的机器人发送简单的请求(虽然它不需要数十亿来closures一台服务器 – 几千台)或less数机器人发送要求执行很长的请求。

第二种攻击types是最恶毒的,因为一个机器人可能会打倒服务器。 例如,当M变大的时候,MySQL的LIMIT N OFFSET M是非常慢的,所以一个简单的攻击就是连续快速地请求200到500个页面,堵塞所有的MySQL工作线程。 在不受保护的服务器上,这可以通过萤火虫来完成。 唯一的解决办法是确定代价高昂的操作,然后优化它们,让它们连续(这样堵塞该部分的网站不会使网站的其余部分),或检测IP,要求昂贵的操作和拒绝执行该操作,除非有一定的等待时间间隔。

第一种攻击types很难取消,因为你需要很多机器人。 另一方面,服务器也很难停下来:如果你有成千上万的机器人以尽可能快的速度向你发送数据,你的带宽将被洪水所吞噬,服务器也无法做到这一点(即使它平坦拒绝99%的请求),所以如果你认为你可能成为一个目标,防洪路由器是一个很好的select。

真的没有办法阻止一个真正的分布式DOS攻击,因为没有什么区别,并处理合法stream量的浪涌。 (服务validation码可以防止攻击捆绑长时间运行的stream程或占用大量资源,但足够的攻击将压倒validation码服务带宽)。