http://www.microsoft.com/china/technet/security/guidance/secmod109.mspx
如何:强化 TCP/IP 堆栈安全
本页内容
目标 | |
适用范围 | |
如何使用本模块 | |
摘要 | |
必备知识 | |
抵御 SYN 攻击 | |
抵御 ICMP 攻击 | |
抵御 SNMP 攻击 | |
AFD.SYS 保护 | |
其他保护 | |
缺陷 | |
其他资源 |
目标
使用本模块可以实现:
• | 强化服务器的 TCP/IP 堆栈安全 |
• | 保护服务器免遭“拒绝服务”和其他基于网络的攻击 |
• | 在检测到攻击时启用 SYN 洪水攻击保护 |
• | 设置用于确认是什么构成攻击的阈值 |
适用范围
本模块适用于下列产品和技术:
• | Microsoft Windows 2000 Server 和 Windows 2000 Advanced Server |
如何使用本模块
默认情况下,本模块中的一些注册表项和值可能不存在。在这些情况下,请创建这些注册表项、值和数值数据。
有关 Windows 2000 控制的 TCP/IP 网络设置的注册表的详细信息,请参阅白皮书“Microsoft Windows 2000 TCP/IP Implementation Details”,网址为 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/network/deploy/depovg/tcpip2k.asp(英文)
注意:这些设置会修改服务器上 TCP/IP 的工作方式。Web 服务器的特征将确定触发拒绝服务对策的最佳阈值。对于客户端的连接,一些值可能过于严格。在将本模块的建议部署到产品服务器之前,要对这些建议进行测试。
摘要
TCP/IP 堆栈负责处理传入和传出的 IP 数据包,并将数据包中的数据路由到要处理它们的应用程序。默认情况下,TCP/IP 天生就是一个不安全的协议。但是,Microsoft® Windows® 2000 版本允许您配置其操作,以抵御网络级别的大多数拒绝服务攻击。
本模块解释如何强化 TCP/IP 堆栈的安全,以及如何在 Windows 注册表内配置各种 TCP/IP 参数,以便保护服务器免遭网络级别的拒绝服务攻击,包括 SYS 洪水攻击、ICMP 攻击和 SNMP 攻击。
必备知识
可以在 Windows 注册表内配置各种 TCP/IP 参数,以便保护服务器免遭网络级别的拒绝服务攻击,包括 SYS 洪水攻击、ICMP 攻击和 SNMP 攻击。可以配置注册表项,以便:
• | 在检测到攻击时启用 SYN 洪水攻击保护机制。 |
• | 设置用于确认构成攻击的阈值。 |
本“如何”向管理员介绍必须配置哪些注册表项和注册表值,以抵御基于网络的拒绝服务攻击。
注意 这些设置会修改服务器上 TCP/IP 的工作方式。Web 服务器的特征将确定触发拒绝服务对策的最佳阈值。对于客户端的连接,一些值可能过于严格。在将本文档的建议部署到产品服务器之前,应当测试这些建议。
TCP/IP 天生就是一个不安全的协议。但是,Windows 2000 版本允许您配置其操作,以抵御网络级别的拒绝服务攻击。默认情况下,本“如何”中引用的一些注册表项和值可能不存在。在这些情况下,请创建这些注册表项、值和值数据。
有关 Windows 2000 的注册表所控制的 TCP/IP 网络设置的详细信息,请参阅白皮书“Microsoft Windows 2000 TCP/IP Implementation Details”,网址为 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/network/deploy/depovg/tcpip2k.asp(英文)。
抵御 SYN 攻击
SYN 攻击利用了 TCP/IP 连接建立机制中的安全漏洞。要实施 SYN 洪水攻击,攻击者会使用程序发送大量 TCP SYN 请求来填满服务器上的挂起连接队列。这会禁止其他用户建立网络连接。
要保护网络抵御 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 用于支持 Windows Sockets 应用程序。这一部分的所有注册表项和值都位于注册表项 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 |
缺陷
在测试这些值的变化时,请参照在产品中所期望的网络流量进行测试。这些设置会修改被认为正常并偏离了测试默认值的项目的阈值。一些阈值可能由于范围太小而无法在客户端的连接速度剧烈变化时可靠地支持客户端。