windows服务器应对高并发和DDOS攻击

jopen 11年前

windows系统本身就有很多机制可以用来提高性能和安全,其中有不少可以用来应对高并发请求和DDOS攻击的情况。

通过以下配置可以改善windows服务器性能:

一、应对高并发请求:

1TCP连接延迟等待时间 TcpTimedWaitDelay

这是设定TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT状态或两倍最大段生命周期(2MSL)状态。在此时间内,重新打开到客户机和服务器的连接的成本少于建立新连接。减少此条目的值允许 TCP/IP更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于 TIME_WAIT中存在很多连接,导致低吞吐量,则调整此参数。缺省值240秒,最小30秒,最大300秒,建议设为30秒。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "TcpTimedWaitDelay"=dword:0000001e

2、最大TCP使用端口 MaxUserPort:

TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000,也就是说默认情况下,客户端最多可以同时发起3977Socket连接。通过修改调整这个动态端口的范围,可以提高系统的数据吞吐率

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "MaxUserPort"=dword:000ffffe

3、保持连接时间 KeepAliveTime:

Windows默认情况下不发送保持活动数据包,但某些TCP包中可能请求保持活动的数据包。保持连接可以被攻击者利用建立大量的连接造成服务器拒绝服务。降低这个参数值有助于系统更快速地断开非活动会话。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "KeepAliveTime"=dword:000493e0

4、TCP数据最大重发次数 TcpMaxDataRetransmissions

此参数控制TCP在连接异常中止前数据段重新传输的次数。如果这个限定次数内,计算机没有收到任何确认消息,连接将会被终止。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "TcpMaxDataRetransmissions"=dword:00000003
5、TCP连接最大重发次数 TcpMaxConnectResponseRetransmissions

此参数设定SYN-ACK等待时间,可以用来提高系统的网络性能。缺省时间为3,消耗时间为45秒;项值为2,消耗时间为21秒;项值为1,消耗时间为9秒;项值为0,表示不等待,消耗时间为3秒

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "TcpMaxConnectResponseRetransmissions"=dword:00000002

二、应对DDOS攻击:(包括以上设置)

1、SYN攻击防护 SynAttackProtect:

为防范SYN攻击,Windows NT系统的TCP/IP协议栈内嵌了SynAttackProtect机制。SynAttackProtect机制是通过关闭某些socket选项,增加额外的连接指示和减少超时时间,使系统能处理更多的SYN连接,以达到防范SYN攻击的目的。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "SynAttackProtect"=dword:00000002

2、无效网关检测功能 EnableDeadGWDetect:

当服务器设置了多个网关,在网络不通畅的时候系统会尝试连接第二个网关。允许自动探测失效网关可导致 DoS,关闭它可以抵御SNMP攻击,优化网络。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "EnableDeadGWDetect"=dword:00000000

3、ICMP重定向功能 EnableICMPRedirect:

是否响应ICMP重定向报文。ICMP重定向报文有可能被用以攻击,所以系统应该拒绝接受此类报文,用以抵御ICMP攻击。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "EnableICMPRedirect"=dword:00000000

4、IP源路由限制 DisableIPSourceRouting:

是否禁用IP源路由包,禁用可以提高IP源路由保护级别,用以防范数据包欺骗

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "DisableIPSourceRouting"=dword:00000002

5、路由发现功能 PerformRouterDiscovery:

ICMP路由通告报文可以被用来增加路由表纪录,可能导致DOS攻击,所以禁止路由发现。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "PerformRouterDiscovery"=dword:00000000    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces]  "PerformRouterDiscovery"=dword:00000000

6、服务器名响应功能 NoNameReleaseOnDemand

允许计算机忽略除来自 Windows服务器以外的 NetBIOS名称发布请求。当攻击者发出查询服务器NetBIOS名的请求时,可以使服务器禁止响应。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "NoNameReleaseOnDemand"=dword:00000001

7、Internet组管理协议级别 IGMPLevel

用于控制系统在多大程度上支持IP组播和参与Internet组管理协议。缺省值为2,支持发送和接收组播数据;项值为1表示只支持发送组播数据;项值为0表示不支持组播功能。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]  "IGMPLevel"=dword:00000000

8、匿名访问限制 RestrictAnonymous

用于禁止匿名访问查看用户列表和安全权限。匿名访问可以使连接者与目标主机建立一条空连接而无需用户名和密码,利用这个空连接,连接者可以得到用户列表。有了用户列表,就可以穷举猜测密码。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]  "restrictanonymous"=dword:00000001

参考文章:

1、http://technet.microsoft.com/library/dd349797(v=ws.10).aspx
2、http://technet.microsoft.com/library/cc708591(v=WS.10).aspx
3、http://technet.microsoft.com/library/cc163074.aspx
4、http://technet.microsoft.com/library/cc940037.aspx
5、http://www.isi.edu/touch/pubs/infocomm99/infocomm99-web
6、http://support.microsoft.com/default.aspx?scid=kb;EN-US;q120642