网络服务器预防dos攻击的层次

web服务器在处理请求的时候会涉及三个层次,第一个层析是tcp连接的层次,第二个层次是http请求的层次,第三个层次是业务处理的层次,每个层次都可能存在dos攻击,所要作的预防措施就是每个更低的层次未决之前不为其分配上层资源,具体来说就是,tcp三次握手没有完成就不为之分配连接所需的内存资源,这个通过syn cookie可以完成,syn cookie的linux实现中顺便携带了一个时间参数可以很好的处理超时,三次握手虽然完成了,但是http请求没有发到之前不为之指派处理进程,从完成三次握手到收到http请求,也需要一个时间限制,时间到连接断开,这个可以通过TCP_DEFER_ACCEPT来实现,同样的道理,虽然收到了http请求,不能确定业务之前也不要为之指派业务处理器...这样就可以避免很多的dos攻击。 不光是web处理器需要这样配置,任何的网络服务都可以类似的分成若干层次,下层帮忙在有限的时间内得到上层的逻辑头之后再将请求往上层递交,限制时间到了的话本次请求直接丢弃。这个思想虽然违背一些分层原则,在层级之间插入了一把钩子,然而却可以避免很多的基于连接的攻击--上层的半连接攻击对于下层就是全连接攻击。要知道,攻击者是不会遵循什么原则的,因此也别指望他们完全遵循分层原则。

你可能感兴趣的:(dos)