拒绝服务(Denial of Service, DoS)攻击是最简单的网络攻击形式之一,它只阻止对服务或资源的访问,而不是试图窃取信息。DoS攻击有两种常见的形式:使服务崩溃和泛洪服务。相比基于网络的利用而言,使服务崩溃的拒绝服务攻击实际上更类似于程序利用。通常这些攻击依赖于特定供应商提供的拙劣实现。缓冲区溢出漏洞通常会使目标程序崩溃,而不是将执行流程转向注入的shellcode。如果该程序恰好在服务器上,那么在服务器崩溃之后任何人将不能访问它。类似的崩溃式DoS攻击紧紧依赖于特定程序和特定版本。因为操作系统负责处理网络堆栈,代码的崩溃会卸下内核程序,拒绝为整个机器提供服务。在现代操作系统中,许多这样的漏洞在很久以前就已经得到修补,但考虑这些技术如何应用于不同的情形仍是有用的。
TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服
分布式拒绝服务攻击网络结构图务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—— 即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况就称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。SYN COOKIE 防火墙是SYN cookie的一个扩展,SYN cookie是建立在TCP堆栈上的,他为linux操作系统提供保护。SYN cookie防火墙是linux的 一大特色,你可以使用一个防火墙来保护你的网络以避免遭受SYN洪水攻击。
TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服
