TCP/IP 是一种本质上不安全的协议。但是,Windows 2000 实现可以使您配置其操作以防止网络的拒绝服务攻击。默认情况下,本文中所涉及的一些项和值可能并不存在。在这些情况下,请创建该项、值或值数据。
有关 Windows 2000 的注册表所控制的 TCP/IP 网络设置的详细信息,请参阅白皮书“Microsoft Windows 2000 TCP/IP Implementation Details”,位于 http://www.microsoft.com/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-ACKS 的重新传输。如果您配置这个值,当发生 SYN 攻击时,连接响应的超时速度会比较快。当超出 TcpMaxHalfOpen 或 TcpMaxHalfOpenRetried 的值时,便会触发 SYN 攻击。
设置 SYN 保护阈值
下列值确定要触发的 SYN 保护的阈值。本部分中的所有项和值都位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 中。这些项和值如下所示:
值名称: TcpMaxPortsExhausted
建议值: 5
有效值: 0-65535
说明: 指定 TCP 连接请求的阈值,必须超过该阈值才会触发 SYN 洪水保护。
值名称: TcpMaxHalfOpen
建议值数据: 500
有效值: 100-65535
说明: 启用 SynAttackProtect 时,该值会指定在 SYN_RCVD 状态下的 TCP 连接的阈值。超过 SynAttackProtect 时,便会触发 SYN 洪水保护。
值名称: TcpMaxHalfOpenRetried
建议值数据: 400
有效值: 80-65535
说明: 启用 SynAttackProtect 时,该值指定在 SYN_RCVD 状态下的 TCP 连接的阈值,其中至少已经进行了一次重新传输。超过 SynAttackProtect 时,便会触发 SYN 洪水保护。
设置其他的保护
本部分中的所有项和值都位于注册表项 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
0
KeepAliveTime
300000 (5 minutes)
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 套接字应用程序。本部分中的所有项和值都位于注册表项 HKLM\System\CurrentControlSet\Services\AFD\Parameters 中。这些项和值如下所示:
值: EnableDynamicBacklog
建议值数据: 1
有效值: 0(禁用)、1(启用)
说明: 指定 AFD.SYS 功能来有效抵御大量的 SYN_RCVD 连接。有关详细信息,请参阅“Internet Server Unavailable Because of Malicious SYN Attacks”,位于 http://support.microsoft.com/default.aspx?scid=kb;en-us;142641。
值名称: MinimumDynamicBacklog
建议值数据: 20
有效值: 0-4294967295
说明: 指定侦听终结点上允许的可用连接的最小数量。如果可用连接的数目低于该值,线程便会排入队列以创建其他的可用连接。
值名称: MaximumDynamicBacklog
建议值数据: 20000
有效值: 0-4294967295
说明: 指定可用连接再加上 SYN_RCVD 状态中的连接的总数的最大值。
值名称: DynamicBacklogGrowthDelta
建议值数据: 10
有效值: 0-4294967295
默认为存在: No
说明: 指定需要其他连接时将创建的可用连接数量。
请使用表 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 源路由,发送方可以利用 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
缺陷
测试这些值的更改时,请根据您在生产中预期使用的网络卷来进行测试。这些设置会修改被认为是正常的阈值,而且偏离经过测试的默认值。如果各个客户端的连接速度差异很大,那么有些设置可能过于狭隘而无法稳定地支持客户端。
其他资源
有关 TCP/IP 的其他详细信息,请参考下列资源:
有关强化 TCP/IP 堆栈的详细信息,请参阅 Microsoft 知识库文章 315669“How To:Harden the TCP/IP Stack Against Denial of Service Attacks in Windows 2000”。
有关 Windows 2000 TCP/IP 实现的详细信息,请参阅 Lee Davies 的“Windows 2000 TCP/IP Protocols and Services”(Microsoft Press 书籍)。
有关 Windows 2000 TCP/IP 实现的详细信息,请参阅 TechNet 网站上的“Microsoft Windows 2000 TCP/IP Implementation Details”,位于http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.asp

如何强化 TCP/IP 堆栈的更多相关文章

  1. Linux内核 TCP/IP、Socket参数调优

    Linux内核 TCP/IP.Socket参数调优 2014-06-06  Harrison....   阅 9611  转 165 转藏到我的图书馆   微信分享:   Doc1: /proc/sy ...

  2. TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议

    原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...

  3. Linux下TCP/IP内核参数优化

    /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这 ...

  4. Linux内核、 TCP/IP、Socket参数调优

    /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这 ...

  5. TCP/IP网路协议复习

    1.OSI (Open System Interconnect Protocol) 开放互联协议,这是一个七层的计算机网络协议,包括:物理层.数据链路层.网络层.传输层.回话层.表示层.应用层.    ...

  6. Windows计算机重置TCP / IP

    传输控制协议 (TCP / IP)是Internet上使用的通信协议. 在Windows的早期版本中,TCP / IP是一个单独的可选组件,可以像其他任何协议一样删除或添加. 早期版本中,从Windo ...

  7. (转)Linux内核 TCP/IP、Socket参数调优

    Doc1: /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失) ...

  8. 【转】TCP/IP协议栈及OSI参考模型详解

    OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设 ...

  9. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

随机推荐

  1. Ruby类,模块1

    类的扩展和继承 class Fixnum def dosome(str) puts str end def abs puts "覆盖了原有的方法" end end puts 1.c ...

  2. Ext入门学习系列(二)弹出窗体

    第二章 弹出窗体 上节学习了Ext的环境搭建和最基本的一个操作——弹出对话框,作为一个引子,本节讲述如何弹出一个新窗体,从实例讲解Ext的基本运行原理. 一.Ext的窗体长什么样? 先来看看几个效果, ...

  3. ImagePacker

    [下载]:ImagePacker 0.0.2 [作用]:将多个图片打包到指定大小的图片中,并输出配置文件.类似于 TexturePacker,不过当前只支持 Starling 格式输出(因为我现在使用 ...

  4. C/C++:拷贝构造函数

    拷贝构造函数是一种特殊的构造函数,因为它也是用来构造对象的.它具有构造函数的所有特性.拷贝构造函数的作用是用一个已经存在的对象去初始化另一个对象,这两个对象的类类型应该是一样的.定义拷贝构造函数的形式 ...

  5. NOIP2013 货车运输

    3.货车运输 (truck.cpp/c/pas) [问题描述] A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货 ...

  6. POJ3264 Balanced Lineup 线段树区间最大值 最小值

    Q个数 问区间最大值-区间最小值 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include <i ...

  7. SRM 599 DIV 2

    rating又掉了...变灰色了%>_<%.250pt很简单,一眼看上去是个背包,没有多想立马写了个01背包,后面发现其实就是个简单的排序...因为只是需要求数量而已.500pt被我写残了 ...

  8. sqlserver 出现 因为文件组 'PRIMARY' 已满 的解决办法 有可能是磁盘剩余空间不足 导致的

    一般虚拟主机提供商是通过限制数据库文件的大小来实现提供定制的数据库空间的.当你把从虚拟数据库空间备份下来的文件恢复到自己的服务器上时,这个限制还是存在的.找到数据库文件 给增加个数据文件就好了 解决办 ...

  9. IE比Chrome强的一个地方

    今天在开发时,调试一个功能.死活显示和同事不一样,他是测试过正常的,我的Chrome显示死活不对. 最后要重新部署了,才想起会不会是缓存的问题.清除Chrome缓存,再一试,一切正常. IE有一个功能 ...

  10. 一步一步学数据结构之n--n(图遍历--深度优先遍历--非递归实现)

    前面已经说了图的深度优先遍历算法,是用递归实现的,而在这里就讲一下用非递归实现,需要借助栈: 算法思想:        1. 栈初始化        2. 输出起始顶点,起始顶点改为“已访问”标志,将 ...