如何加固 TCP 堆栈

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 攻击预防 SYN 攻击
预防 ICMP 攻击预防 ICMP 攻击
预防 SNMP 攻击预防 SNMP 攻击
AFD.SYS 保护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

转载于:https://my.oschina.net/u/187928/blog/34790

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值