(1)减小等待SYN-ACK包的时间
TCP在发送SYN-ACK包后,首先等待3秒钟,如果仍然没有回应,则将时间加大一倍,从3秒增大到6秒,再重发一次SYN-ACK,然后继续等待回应。重发的次数定义在注册表中的一个双字节值项TcpMaxConnectResponseRetransmissions 里,该值项位于注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters中。默认值为3,表示重发次数为3次,先等待3秒后发送一次,然后等待6秒后发送一次,然后等待12 秒发送一次,最后等待24秒,如果仍然接收不到回应,不再继续发送SYN-ACK,而是清除此次连接,并释放所有资源。这样总共经过了45秒钟。值为2表示重发次数为2次,总共的耗费时间为21秒,值为1表示重发次数为1次,总共的耗费时间为9秒。0表示不重发SYN-ACK,耗费时间为3秒。耗费时间越短,SYN攻击造成的影响就相应的要小一些。此值项的默认值为3次。如果系统容易受到SYN淹没攻击,可以将此值项修改为2。 (2)增大NetBT的连接块增加幅度和最大数目
NetBT(基于TCP/IP的NetBIOS)使用139号TCP端口,一般用在微软网络中,例如文件和打印服务。在建立连接时,如果BetBT发现可用的连接块数目小于2个,会自动的再分配可用连接块。
NetBT每次增加的连接块的数目定义在注册表中的双字节值项BacklogIncrement中,该值项位于注册表项注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\NetBt\Parameters下。默认值为3,最小值为1,最大值位20。增大此值可以在有众多连接时提升性能。每个连接块消耗 87个字节。
NetBT最多可以使用的连接块的数目定义在注册表项中双字节值项MaxConnBackLog中,默认为1000个,最大值可以取到40000个。可以适当的增大此参数的值以允许更多的同时连接。