Microsoft Corporation
目标
使用本单元以:
• | 加固服务器的 TCP/IP 堆栈 |
• | 保护服务器免受拒绝服务和其他基于网络的攻击 |
• | 在检测到攻击时启用 SYN flood 保护 |
• | 设置用于确定攻击构成的阈值 |
适用于
本单元适用于下列产品和技术:
• | Microsoft® Windows® 2000 Server 和 Windows 2000 Advanced Server 操作系统 |
如何使用本单元
本单元中所引用的项和值可能并非存在于默认情况下。若是如此,请创建所需的项、值和数值数据。
有关注册表用于 Windows 2000 控件的 TCP/IP 网络设置的详细信息,请参阅以下站点的白皮书“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 服务器的特性将确定触发拒绝服务对策的最佳阈值。某些值或许对于客户端的连接而言限制性太强。在将本单元所建议内容部署至生产服务器之前,请先对这些建议进行测试。
本页内容
摘要 | |
须知 | |
预防 SYN 攻击 | |
预防 ICMP 攻击 | |
预防 SNMP 攻击 | |
AFD.SYS 保护 | |
其他保护 | |
缺陷 | |
其他资源 |
摘要
TCP/IP 堆栈负责处理传入和传出 IP 数据包,并将数据包的数据路由到要处理这些数据的应用程序。默认情况下,TCP/IP 位于本质上并不安全的协议中。但是,MicrosoftWindows2000 实现允许配置其操作以反击大部分网络级的拒绝服务攻击。
本单元阐述了如何在 Windows 注册表中加固 TCP/IP 堆栈并配置多种 TCP/IP 参数以预防网络级的拒绝服务攻击,其中包括 SYS flood 攻击、ICMP 攻击和 SNMP 攻击。
须知
可在 Windows 注册表中配置多种 TCP/IP 参数以预防网络级拒绝服务攻击,其中包括 SYN flood 攻击、ICMP 攻击和 SNMP 攻击。可配置注册表项以:
• | 在检测到攻击时启用 SYN flood 保护。 |
• | 设置用于确定攻击构成的阈值。 |
本“如何……”文档向管理员说明了必须配置哪些注册表项和注册表值以预防基于网络的拒绝服务攻击。
注 这些设置会修改服务器上 TCP/IP 的工作方式。Web 服务器的特性将确定触发拒绝服务对策的最佳阈值。某些值或许对于客户端连接而言限制性太强。在将本文档所建议的内容部署至生产服务器之前,请先对这些建议进行测试。
TCP/IP 是一个本质上并不安全的协议。但是,Windows 2000 实现允许配置其操作以反击网络拒绝服务攻击。本“如何……”文档中引用的某些项和值或许并不存在于默认情况下。若是如此,请创建所需的项、值和数值数据。
有关注册表用于 Windows 2000 控件的 TCP/IP 网络设置的详细信息,请参阅以下站点的白皮书“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 flood 攻击,攻击者会使用程序来发送大量的 TCP SYN 请求来填充服务器上的挂起连接队列。这会阻止其他用户建立网络连接。
要保护网络免受 SYN 攻击,请遵循以下步骤,本文稍后会对这些步骤进行解释:
• | 启用 SYN 攻击保护 |
• | 设置 SYN 保护阈值 |
• | 设置附加保护 |
启用 SYN 攻击保护
启用 SYN 攻击保护的命名值位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 之下。
值名称:SynAttackProtect
推荐值:2
有效值:0–2
说明:使 TCP 来调整 SYN-ACKS 的重传。配置该值后,连接响应在 SYN 攻击事件中会更快地超时。在超过 TcpMaxHalfOpen 或 TcpMaxHalfOpenRetried 值时,触发 SYN 攻击。
设置 SYN 保护阈值
以下值确定触发 SYN 保护的阈值。本部分中的所有项和值均位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 之下。这些项和值是:
• | 值名称:TcpMaxPortsExhausted 推荐值:5 有效值:0–65535 说明:指定必须在触发 SYN flood 保护之前超过的 TCP 连接请求阈值。 |
• | 值名称:TcpMaxHalfOpen 推荐值数据:500 有效值:100–65535 说明:启用 SynAttackProtect 后,该值指定 SYN_RCVD 状态中的 TCP 连接阈值。超过 SynAttackProtect 时,触发 SYN flood 保护。 |
• | 值名称:TcpMaxHalfOpenRetried 推荐值数据:400 有效值: 80–65535 说明:启用 SynAttackProtect 后,该值指定至少发送了一次重传的 SYN_RCVD 状态中的 TCP 连接阈值。超过 SynAttackProtect 时,触发 SYN flood 保护。 |
设置附加保护
本部分中的所有项和值均位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 之下。这些项和值是:
• | 值名称:TcpMaxConnectResponseRetransmissions 推荐值数据:2 有效值:0–255 说明:控制在响应 SYN 请求时,取消尝试之前重传多少次 SYN-ACK。 |
• | 值名称:TcpMaxDataRetransmissions 推荐值数据:2 有效值:0–65535 说明:指定在中断连接之前,TCP 会将单独的数据段(不是连接请求段)重传几次。 |
• | 值名称:EnablePMTUDiscovery 推荐值数据:0 有效值:0, 1 说明:将该值设置为 1(默认设置)会强迫 TCP 发现到远程主机的路径上的最大传输单位或最大数据包大小。攻击者可以强迫数据包分割,导致堆栈工作过度。指定为 0 会强迫来自主机连接的 576 字节的 MTU 不在本地子网上。 |
• | 值名称:KeepAliveTime 推荐值数据:300000 有效值:80–4294967295 说明:指定 TCP 隔多久会通过发送保持活动的数据包来尝试验证一次闲置连接仍然维持原样。 |
• | 值名称:NoNameReleaseOnDemand 推荐值数据:1 有效值:0, 1 说明:指定计算机在收到名称释放请求时不释放其 NetBIOS 名称。 |
使用表 1 概括的值来进行最大限度地保护。
表 1:推荐值 | |
值名称 | 值 (REG_DWORD) |
SynAttackProtect | 2 |
TcpMaxPortsExhausted | 1 |
TcpMaxHalfOpen | 500 |
TcpMaxHalfOpenRetried | 400 |
TcpMaxConnectResponseRetransmissions | 2 |
TcpMaxDataRetransmissions | 2 |
EnablePMTUDiscovery | |
KeepAliveTime | 300000 (5 minutes) |
NoNameReleaseOnDemand | 1 |
预防 ICMP 攻击
本部分中的命名值位于注册表项 HKLM\System\CurrentControlSet\Services\AFD\Parameters 之下
值:EnableICMPRedirect
推荐值数据:0
有效值:0(禁用),1(启用)
说明:将该注册表值修改为 0,可在收到 ICMP 重定向数据包时阻止创建高成本的主路由。
使用表 2 中概括的值进行最大限度的保护。
表 2:推荐值 | |
值名称 | 值 (REG_DWORD) |
EnableICMPRedirect |
预防 SNMP 攻击
本部分中的命名值位于注册表项 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters 之下。
值:EnableDeadGWDetect
推荐值数据: 0
有效值:0(禁用),1,(启用)
说明:防止攻击者强制切换至二级网关
使用表 3 概括的值进行最大限度的保护。
表 3:推荐值 | |
值名称 | 值 (REG_DWORD) |
EnableDeadGWDetect |
AFD.SYS 保护
以下项指定内核模式驱动程序 Afd.sys 的参数,Afd.sys 用于支持 Windows 套接字应用程序。本部分中的所有项和值均位于注册表项 HKLM\System\CurrentControlSet\Services\AFD\Parameters 之下。这些项和值是:
• | 值:EnableDynamicBacklog 推荐值数据:1 有效值:0(禁用),1(启用) 说明:指定 AFD.SYS 功能以有效地承受大量 SYN_RCVD 连接。有关详细信息,请参阅位于 http://support.microsoft.com/default.aspx?scid=kb;en-us;142641的“Internet Server Unavailable Because of Malicious SYN Attacks”。 |
• | 值名称:MinimumDynamicBacklog 推荐值数据:20 有效值:0–4294967295 说明:指定监听终结点上允许的可用连接最少数量。如果可用连接点的数量低于此值,则会将线程排队以创建额外的可用连接。 |
• | 值名称:MaximumDynamicBacklog 推荐值数据:20000 有效值: 0–4294967295 说明:指定可用连接与 SYN_RCVD 状态中的连接之和的最大总量。 |
• | 值名称:DynamicBacklogGrowthDelta 推荐值数据:10 有效值:0–4294967295 默认显示:无 说明:指定在需要附加连接时要创建的可用连接的数量。 |
使用表 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 地址掩码请求。
使用表 4 概括的值进行最大限度地保护。
表 5:推荐值 | |
值名称 | 值 (REG_DWORD) |
DisableIPSourceRouting | 1 |
EnableFragmentChecking | 1 |
EnableMulticastForwarding | |
IPEnableRouter | |
EnableAddrMaskReply |
缺陷
测试这些值的更改时,请根据您期望在生产中使用的网络卷进行测试。这些设置会修改被认为是标准的并且源自测试默认值的阈值。如果客户端的连接速度差异很大,则某些阈值范围可能会太小以至于不能可靠地支持客户端。
其他资源
• | 有关其他与 TCP/IP 相关的阅读资料,请参考以下资源: |
• | 有关如何加固 TCP/IP 堆栈的详细信息,请参阅 Microsoft 知识库文章,315669“How To:Harden the TCP/IP Stack Against Denial of Service Attacks in Windows2000 |
• | 有关 Windows 2000 TCP/IP 实现的详细信息,请参阅 Davies、Joseph 以及 Lee、Thomas 的 Windows 2000 TCP/IP Protocols and Services,Microsoft Press,2000。 |
• | 有关 Windows 2000 TCP/IP 实现的详细信息,请参阅 TechNet Web 站点上的“Microsoft Windows 2000 TCP/IP Implementation Details”:http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/network/deploy/depovg/tcpip2k.asp。 |