Syn flood攻击防御,包碎片攻击防御,源路由欺骗防御
(1)Syn flood攻击防御:
为防范Syn flood攻击,WindowsNT系统的TCP/IP协议栈内嵌了SynAttackProtect机制。通过更新注册表的方式配置Syn flood攻击的出发阈值在一定程度上能够抵御Syn flood攻击。打开“注册表编辑器”,在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”路径下做以下更改:
①启用SYN攻击保护。右键点击“注册表编辑器”右侧的空白处,然后单击“新建”项,在展开的菜单中单击“DWORD(32位)值(D)”项,如图所示,然后会出现一个新的键值项,如图所示,在名称“新值#1”处重新编辑键值名称为“SynAttackProtect”,按回车键完成命名,然后双击该键值项,会弹出“编辑DWORD(32位)值”对话框,在“基数”下选择“十进制”,在“数值数据(V):”下的文本框输入2,如图所示,然后单击“确定”按钮,完成新建一个名称为SynAttackProtect的键值项,键值类型为REG_DWORD,键值数据为2
注册表键值项说明:该键值项可使TCP 调整SYN-ACK 的重新传输,当值为0或不设置时,不采取任何保护措施;当值设置为1或2时,在发生SYN攻击时,系统通过减少重传次数和延迟未连接时路由缓冲项,使连接超时的响应速度更快来防范Syn flood攻击。当超过TcpMaxHalfOpen或TcpMaxHalfOpenRetried的值时,会触发SYN攻击防护。
②设置SYN保护阀值。a.新建一个名称为TcpMaxPortsExhausted的键值项,键值类型为REG_DWORD,键值数据为5。注册表键值项说明:该键值项指定触发Syn flood攻击保护所必须超过的TCP 连接请求数的阈值,有效值为0-65535。b.新建一个名称为TcpMaxHalfOpen的键值项,键值类型为REG_DWORD,键值数据为500。注册表键值项说明:该键值项的有效值为100-65535,在启用SynAttackProtect后,该键值项指定处于SYN_RECV状态的TCP连接数的阈值。c.新建一个名称为TcpMaxHalfOpenRetried的键值项,键值类型为REG_DWORD,键值数据为400。注册表键值项说明:该键值项的有效值为80–65535,在启用SynAttackProtect后,该键值项指定处于至少已发送一次重传的SYN_RECV状态中的TCP 连接数的阈值。完成全部Syn flood攻击防御键值项设置后,注册表编辑器的相应设置如图所示。
(2)ICMP重定向攻击防御
在“注册表编辑器”的“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”路径下修改EnableICMPRedirect键值项的键值数据为0,如图所示。注册表键值项说明:该键值项修改为0,能够在收到ICMP重定向数据包时禁止创建高成本的主机路由。
(3)包碎片攻击防御:
在“注册表编辑器”的“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”路径下新建名称为EnablePMTUDiscovery的键值项,键值类型为REG_DWORD,键值数据为0。注册表键值项说明:该键值项的有效值为0和1,将该值设置为1(默认值),启用最大传输单位路径发现,那么攻击者可能将数据包强制分段,会使目标主机堆栈不堪重负。将该值设置为0,则禁用最大传输单位路径发现,可将最大传输单元强制设为576 字节,从而限制攻击者将路径MTU值减少为较低值来防止攻击。
(4)源路由欺骗防御:
在“注册表编辑器”的“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”路径下新建名称为DisableIPRouting的键值项,键值类型为REG_DWORD,键值数据为2。注册表键值项说明:该键值项的有效值为0、1和2。将该值设置为0,表示转发所有数据包,设置为1表示不转发源路由数据包,设置为2表示丢弃所有传入的源路由数据包,从而进入防御该攻击模式。