服务器|攻击方式学习之- 拒绝服务(DOS/DDOS/DRDOS)( 二 )


完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
未连接队列: 在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到 SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包,删除该条目,服 务器进入ESTABLISHED状态。
Backlog参数:表示未连接队列的最大容纳数目。
SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
服务器|攻击方式学习之- 拒绝服务(DOS/DDOS/DRDOS)
文章插图

从 上图可看到,服务器接收到连接请求(syn=j),将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j+1),此时进入 SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效 果,通常,客户端在短时间内伪造大量不存在的IP 地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长 时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
最简单的方法,使用netstat命令查看是否有很多TCP连接的状态为SYN_RECV 。如:下面的可判定该服务器正在收到SYN攻击。
# netstat -n -ttcp 00 10.11.11.11:23124.173.152.8:25882SYN_RECV - tcp 00 10.11.11.11:23236.15.133.204:2577SYN_RECV - tcp 00 10.11.11.11:23127.160.6.129:51748SYN_RECV - tcp 00 10.11.11.11:23222.220.13.25:47393SYN_RECV - tcp 00 10.11.11.11:23212.200.204.182:60427SYN_RECV - tcp 00 10.11.11.11:23232.115.18.38:278SYN_RECV - tcp 00 10.11.11.11:23239.116.95.96:5122SYN_RECV - tcp 00 10.11.11.11:23236.219.139.207:49162SYN_RECV -
所谓Ping of Death,就是利用一些尺寸超大的ICMP报文对系统进行的一种攻击。IP报文的长度字段为16位,这表明一个IP报文的最大长度为65535。对于 ICMP 回应请求报文,如果数据长度大于65507,就会使ICMP数据+IP头长度(20)+ICMP头长度(8)> 65535。对于有些路由器或系统,在接收到一个这样的报文后,由于处理不当,会造成系统崩溃、死机或重启。
实际上从早先版本的Windows上就可以运行 Ping of Death。在命令行下只需键入:“ping -l 65550 攻击目标”即可。Windows还有一个漏洞就是它不但在收到这种无效数据时会崩溃,而且还可以在偶然的情况下生成这种数据。Windows的较新版本防 止您发送这些数据。
<tt style="margin: 0px; padding: 0px;">监控骨干网络设备,减少骨干网主机的漏洞
关闭不必要的服务。
限制同时打开的Syn半连接数目。
缩短Syn半连接的time out 时间。
及时更新系统补丁。
<tt style="margin: 0px; padding: 0px;">合理配置路由器及防火墙,实现IDS和防火墙的联动
<tt style="margin: 0px; padding: 0px;">加强网络管理,建立合理的应对策略