TCP/IP堆栈负责处理传入和传出的IP数据包,并将数据包中的数据路由到要处理它们的应用程序。默认情况下,TCP/IP天生就是一个不安全的协议。但是,Microsoft®Windows®2000版本允许您配置其操作,以抵御网络级别的大多数拒绝服务攻击。
启用SYN攻击保护
设置SYN保护阈值
设置其他保护
抵御SYN攻击
SYN攻击利用了TCP/IP连接建立机制中的安全漏洞。要实施SYN洪水攻击,攻击者会使用程序发送大量TCPSYN请求来填满服务器上的挂起连接队列。这会禁止其他用户建立网络连接。
要保护网络抵御SYN攻击,请按照下面这些通用步骤操作(这些步骤将在本文档的稍后部分进行说明):
启用SYN攻击保护设置SYN保护阈值设置其他保护
启用SYN攻击保护
启用SYN攻击保护的命名值位于此注册表项的下面:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services。
值名称:SynAttackProtect
建议值:2
有效值:0–2
说明:使TCP调整SYN-ACK的重传。配置此值后,在遇到SYN攻击时,对连接超时的响应将更快速。在超过TcpMaxHalfOpen或TcpMaxHalfOpenRetried的值后,将触发SYN攻击保护。
设置SYN保护阈值
下列值确定触发SYN保护的阈值。这一部分中的所有注册表项和值都位于注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services的下面。这些注册表项和值是:
• | 值名称:TcpMaxPortsExhausted |
• | 值名称:TcpMaxHalfOpen |
• | 值名称:TcpMaxHalfOpenRetried |
设置其他保护
这一部分中的所有注册表项和值都位于注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services的下面。这些注册表项和值是:
• | 值名称:TcpMaxConnectResponseRetransmissions |
• | 值名称:TcpMaxDataRetransmissions |
• | 值名称:EnablePMTUDiscovery |
• | 值名称:KeepAliveTime |
• | 值名称:NoNameReleaseOnDemand |
使用表1中汇总的值可获得最大程度的保护。
表1:建议值
值名称 | 值(REG_DWORD) |
SynAttackProtect | 2 |
TcpMaxPortsExhausted | 1 |
TcpMaxHalfOpen | 500 |
TcpMaxHalfOpenRetried | 400 |
TcpMaxConnectResponseRetransmissions | 2 |
TcpMaxDataRetransmissions | 2 |
EnablePMTUDiscovery | 0 |
KeepAliveTime | 300000(5分钟) |
NoNameReleaseOnDemand | 1 |
抵御ICMP攻击
这一部分的命名值都位于注册表项HKLM\System\CurrentControlSet\Services\AFD\Parameters的下面
值:EnableICMPRedirect
建议的数值数据:0
有效值:0(禁用),1(启用)
说明:通过将此注册表值修改为0,能够在收到ICMP重定向数据包时禁止创建高成本的主机路由。
使用表2中汇总的值可以获得最大程度的保护:
表2:建议值
值名称 | 值(REG_DWORD) |
EnableICMPRedirect | 0 |
抵御SNMP攻击
这一部分的命名值位于注册表项HKLM\System\CurrentControlSet\Services\Tcpip\Parameters的下面。
值:EnableDeadGWDetect
建议的数值数据:0
有效值:0(禁用),1(启用)
说明:禁止攻击者强制切换到备用网关
使用表3中汇总的值可以获得最大程度的保护:
表3:建议值
值名称 | 值(REG_DWORD) |
EnableDeadGWDetect | 0 |
AFD.SYS保护
下面的注册表项指定内核模式驱动程序Afd.sys的参数。Afd.sys用于支持WindowsSockets应用程序。这一部分的所有注册表项和值都位于注册表项HKLM\System\CurrentControlSet\Services\AFD\Parameters的下面。这些注册表项和值是:
• | 值EnableDynamicBacklog |
• | 值名称:MinimumDynamicBacklog |
• | 值名称:MaximumDynamicBacklog |
• | 值名称:DynamicBacklogGrowthDelta |
使用表4中汇总的值可以获得最大程度的保护。
表4:建议值
值名称 | 值(REG_DWORD) |
EnableDynamicBacklog | 1 |
MinimumDynamicBacklog | 20 |
MaximumDynamicBacklog | 20000 |
DynamicBacklogGrowthDelta | 10 |
其他保护
这一部分的所有注册表项和值都位于注册表项HKLM\System\CurrentControlSet\Services\Tcpip\Parameters的下面。
保护屏蔽的网络细节
网络地址转换(NAT)用于将网络与传入连接屏蔽开来。攻击者可能规避此屏蔽,以便使用IP源路由来确定网络拓扑。
值:DisableIPSourceRouting
建议的数值数据:1
有效值:0(转发所有数据包),1(不转发源路由数据包),2(丢弃所有传入的源路由数据包)。
说明:禁用IP源路由,后者允许发送者确认数据报在网络中应采用的路由。
避免接受数据包片段
处理数据包片段可以是高成本的。虽然拒绝服务很少来自外围网络内,但此设置能防止处理数据包片段。
值:EnableFragmentChecking
建议的数值数据:1
有效值:0(禁用),1(启用)
说明:禁止IP堆栈接受数据包片段。
切勿转发去往多台主机的数据包
多播数据包可能被多台主机响应,从而导致响应淹没网络。
值:EnableMulticastForwarding
建议的数值数据:0
有效范围:0(false),1(true)
说明:路由服务使用此参数来控制是否转发IP多播。此参数由路由和远程访问服务创建。
只有防火墙可以在网络间转发数据包
多主机服务器切勿在它所连接的网络之间转发数据包。明显的例外是防火墙。
值:IPEnableRouter
建议的数值数据:0
有效范围:0(false),1(true)
说明:将此参数设置为1(true)会使系统在它所连接的网络之间路由IP数据包。
屏蔽网络拓扑结构细节
可以使用ICMP数据包请求主机的子网掩码。只泄漏此信息是无害的;但是,可以利用多台主机的响应来了解内部网络的情况。
值:EnableAddrMaskReply
建议的数值数据:0
有效范围:0(false),1(true)
说明:此参数控制计算机是否响应ICMP地址屏蔽请求。
使用表5中汇总的值可以获得最大程度的保护。
表5:建议值
值名称 | 值(REG_DWORD) |
DisableIPSourceRouting | 1 |
EnableFragmentChecking | 1 |
EnableMulticastForwarding | 0 |
IPEnableRouter | 0 |
EnableAddrMaskReply | 0 |
缺陷
在测试这些值的变化时,请参照在产品中所期望的网络流量进行测试。这些设置会修改被认为正常并偏离了测试默认值的项目的阈值。一些阈值可能由于范围太小而无法在客户端的连接速度剧烈变化时可靠地支持客户端。