目标
使用本模块可以实现:
•强化服务器的 TCP/IP 堆栈安全
•保护服务器免遭“拒绝服务”和其他基于网络的攻击
•在检测到攻击时启用 SYN 洪水攻击保护
•设置用于确认是什么构成攻击的阈值
适用范围
本模块适用于下列产品和技术:
•Microsoft Windows 2000 Server 和 Windows 2000 Advanced Server
如何使用本模块
默认情况下,本模块中的一些注册表项和值可能不存在。在这些情况下,请创建这些注册表项、值和数值数据。
注意:这些设置会修改服务器上 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 版本允许您配置其操作,以抵御网络级别的拒绝服务攻击。默认情况下,本“如何”中引用的一些注册表项和值可能不存在。在这些情况下,请创建这些注册表项、值和值数据。
抵御 SYN 攻击
SYN 攻击利用了 TCP/IP 连接建立机制中的安全漏洞。要实施 SYN 洪水攻击,攻击者会使用程序发送大量 TCP SYN 请求来填满服务器上的挂起连接队列。这会禁止其他用户建立网络连接。
要保护网络抵御 SYN 攻击,请按照下面这些通用步骤操作(这些步骤将在本文档的稍后部分进行说明):
•启用 SYN 攻击保护
•设置 SYN 保护阈值
•设置其他保护
启用 SYN 攻击保护
启用 SYN 攻击保护的命名值位于此注册表项的下面:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices。
值名称: SynAttackProtect
建议值: 2
有效值: 0 – 2
说明:使 TCP 调整 SYN-ACK 的重传。配置此值后,在遇到 SYN 攻击时,对连接超时的响应将更快速。在超过 TcpMaxHalfOpen 或 TcpMaxHalfOpenRetried 的值后,将触发 SYN 攻击保护。
设置 SYN 保护阈值
下列值确定触发 SYN 保护的阈值。这一部分中的所有注册表项和值都位于注册表项 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 的下面。这些注册表项和值是:
•值名称: TcpMaxPortsExhausted
建议值: 5
有效值: 0 – 65535
说明:指定触发 SYN 洪水攻击保护所必须超过的 TCP 连接请求数的阈值。
值名称: TcpMaxHalfOpen
建议的数值数据: 500
有效值: 100 – 65535
说明:在启用 SynAttackProtect 后,该值指定处于 SYN_RCVD 状态的 TCP 连接数的阈值。在超过 SynAttackProtect 后,将触发 SYN 洪水攻击保护。
值名称: TcpMaxHalfOpenRetried
建议的数值数据: 400
有效值: 80 – 65535
说明:在启用 SynAttackProtect 后,该值指定处于至少已发送一次重传的 SYN_RCVD 状态中的 TCP 连接数的阈值。在超过 SynAttackProtect 后,将触发 SYN 洪水攻击保护。
设置其他保护
这一部分中的所有注册表项和值都位于注册表项 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 的下面。这些注册表项和值是:
•值名称: TcpMaxConnectResponseRetransmissions
建议的数值数据: 2
有效值: 0 – 255
说明:控制在响应一次 SYN 请求之后、在取消重传尝试之前 SYN-ACK 的重传次数。
值名称: TcpMaxDataRetransmissions
建议的数值数据: 2
有效值: 0 – 65535
说明:指定在终止连接之前 TCP 重传一个数据段(不是连接请求段)的次数。
值名称: EnablePMTUDiscovery
建议的数值数据: 0
有效值: 0, 1
说明:将该值设置为 1(默认值)可强制 TCP 查找在通向远程主机的路径上的最大传输单元或最大数据包大小。攻击者可能将数据包强制分段,这会使堆栈不堪重负。对于不是来自本地子网的主机的连接,将该值指定为 0 可将最大传输单元强制设为 576 字节。
值名称: KeepAliveTime
建议的数值数据: 300000
有效值: 80 – 4294967295
说明:指定 TCP 尝试通过发送持续存活的数据包来验证空闲连接是否仍然未被触动的频率。
值名称: NoNameReleaseOnDemand
建议的数值数据: 1
有效值: 0, 1
说明:指定计算机在收到名称发布请求时是否发布其 NetBIOS 名称。
使用表 1 中汇总的值可获得最大程度的保护。
表 1:建议值
值名称 值 (REG_DWORD)SynAttackProtect
2
TcpMaxPortsExhausted
1
TcpMaxHalfOpen