保护自己免受Dos攻击

Kdg*_*Dev 18 webserver protection denial-of-service

这可能更适合Serverfault,但许多只来这里的网络开发人员可能会从这个问题的可能答案中受益.

问题是:您如何有效地保护自己免受针对您的网络服务器的拒绝服务攻击?

读完这篇文章后我问自己这个问题

对于那些不熟悉的人,这是我记忆中的事情:DoS攻击将通过反复向您的服务器发送虚假标头来尝试占用您的所有连接.

通过这样做,您的服务器将达到可能的同步连接的限制,因此,普通用户将无法再访问您的站点.

维基百科提供了更多信息:http://en.wikipedia.org/wiki/Denial_of_service

Dou*_*ean 46

没有灵丹妙药,但通过执行以下操作可以使DoS攻击变得更加困难:

  • 不要(或限制您的意愿)代表未经身份验证的客户进行昂贵的操作
  • 节流认证尝试
  • 代表每个经过身份验证的客户端执行节流操作,如果他们在太短的时间内执行太多操作,则将其帐户置于临时锁定状态
  • 对所有未经身份验证的客户端具有类似的全局限制,并准备在检测到正在进行的攻击时降低此设置
  • 在攻击期间可以使用标记来禁用所有未经身份验证的访问
  • 不要代表未经身份验证的客户端存储内容,并使用配额来限制每个经过身份验证的客户端的存储
  • 一般情况下,尽快拒绝所有格式错误,不合理复杂或不合理的巨大请求(并记录它们以帮助检测攻击)
  • 如果来自未经身份验证的客户端的请求可能导致从该缓存中删除内容,请不要使用纯LRU缓存,因为您将受到缓存中毒攻击(恶意客户端要求许多不常使用的东西,导致您驱逐所有缓存中有用的东西,需要做更多的工作来为你的合法客户服务)

请记住,彻底拒绝限制请求(例如,使用HTTP 503:服务不可用响应或适用于您正在使用的任何协议的类似响应)而不是排队限制请求非常重要.如果你对它们进行排队,队列就会占用你所有的内存,DoS攻击至少和没有限制时一样有效.

针对HTTP服务器的一些更具体的建议:

  • 确保您的Web服务器配置为拒绝POST没有附带Content-Length标头的邮件,并拒绝超过规定的请求(并限制违规客户端)Content-Length,并拒绝具有(或)Content-Length服务的服务不合理的请求.目的是POSTPUT