一台机器在网络中通讯时首先需要建立TCP握手,标准的TCP握手需要三次包交换来建立。一台服务器一旦接收到客户机的SYN包后必须回应一个SYN/ACK包,然后等待该客户机回应给它一个ACK包来确认,才真正建立连接。然而,如果只发送初始化的 SYN包,而不发送确认服务器的ACK包会导致服务器一直等待ACK包。由于服务器在有限的时间内只能响应有限数量的连接,这就会导致服务器一直等待回应 而无法响应其他机器进行的连接请求。
一种新型的防御***的方式—— TCP Cookie,TCP Cookie 技术针对 TCP 协议的软肋,做出了一些改进,只需要在系统中开启tcp_syncookies。
1. 在 /etc/rc.d/rc.local中添加
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
2. 编辑/etc/sysctl.conf 文件
net.ipv4.tcp_syncookies = 1
3. 重启系统
令人高兴的是,我的centos5.3系统,已做了上述防御工作。不知fedora 13是不是也做了相关防御。
补充:
TCP SYN扫描
在这种技术中,扫描主机向目标主机的选择端口发送SYN数据段。如果应答是RST,那么说明端口是关闭的,按照设定就探听其它端口;如果应答中包含SYN 和ACK,说明目标端口处于监听状态。由于所有的扫描主机都需要知道这个信息,传送一个RST给目标机从而停止建立连接。由于在SYN扫描时,全连接尚未 建立,所以这种技术通常被称为半打开扫描。SYN扫描的优点在于即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全扫描少得多。缺点是在大部分操 作系统下,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。
转载于:https://blog.51cto.com/wuhaoshu/429020