服务器SYN洪水攻击原理和防御办法

您所在的位置:网站首页 dos攻击保护开不开 服务器SYN洪水攻击原理和防御办法

服务器SYN洪水攻击原理和防御办法

2024-07-13 02:42| 来源: 网络整理| 查看: 265

服务器SYN洪水攻击原理和防御办法-SynAttackProtect保护机制 一、设置SynAttackProtect键值步骤二、防止SYN洪水攻击修改项说明三、特别注意

SYN洪水攻击是利用客户端和服务端建立TCP连接,服务器必须收到客户端返回的一个ACK包才完成建立连接,否则一直处于等待的缺陷,连续发送SYN报文给服务器端请求建立TCP连接,却不回应(这种情况称为半开连接),当半开连接数达到系统允许的最大值时,系统不再接受建立连接请求,即后面的用户无法访问到服务器。

拿网站服务器来说就是无法打开网页,最终还可能耗尽服务器的 CPU 和内存,使服务器彻底瘫痪。

好在 Windows 系统提供了修改注册表的办法,防止SYN洪水攻击来保护服务器的正常运行,这种方法咱们称为SynAttackProtect机制。

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

默认情况下,Win2000操作系统并不支持SynAttackProtect保护机制,需要在注册表以下位置增加SynAttackProtect键值

一、设置SynAttackProtect键值步骤

1、依次选择“开始 → 运行”,输入 regedit 回车,打开注册表编辑器。 2、定位到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

在空白处单击右键,选择“DWORD(32-位)值”,如图1所示:

在这里插入图片描述 3、名称输入 SynAttackProtect,双击 SynAttackProtect,把值设置为1或2,如图2所示:

在这里插入图片描述 需要特别说明一下,当SynAttackProtect值(如无特别说明,本文提到的注册表键值都为十六进制)为0或不设置时,系统不受SynAttackProtect保护。

当SynAttackProtect值为1时,系统通过减少重传次数和延迟未连接时路由缓冲项(route cache entry)防范SYN攻击。

当SynAttackProtect值为2时(Microsoft推荐使用此值),系统不仅使用backlog队列,还使用附加的半连接指示,以此来处理更多的SYN连接,使用此键值时,tcp/ip的TCPInitialRTT、window size和可滑动窗囗将被禁止。

4、单击“确定”设置完成,按照上述步骤继续设置以下项(新建类型均为 DWORD值):

TcpMaxHalfOpen 值:500 TcpMaxHalfOpenRetried 值:400 EnablePMTUDiscovery 值:0 NoNameReleaseOnDemand 值:1 EnableDeadGWDetect 值:0 KeepAliveTime 值(十进制):300,000 PerformRouterDiscovery 值:0 EnableICMPRedirects 值:0

二、防止SYN洪水攻击修改项说明

SynAttackProtect:syn 洪水攻击保护,取值范围 0、1、2; TcpMaxHalfOpen:允许的最大半开连接数; TcpMaxHalfOpenRetried:是处于至少已发送一次重传的 SYN_RCVD 状态中的TCP连接数; EnablePMTUDiscovery:是否进行最大包长度路径检测; NoNameReleaseOnDemand:当收到网络名称释放请求时,是否释放 NetBIOS 名称; EnableDeadGWDetect:是否允许网关检测; KeepAliveTime:每隔多长时间验证一次闲置未断开连接,单位:毫秒; PerformRouterDiscovery:是否将试图执行路由器发现每个 RFC 1256 在每个接口基础上; EnableICMPRedirects:是否启用 ICMP 重定向。

我们应该知道,平时,系统是不启用SynAttackProtect机制的,仅在检测到SYN攻击时,才启用,并调整tcp/ip协议栈。那么系统是如何检测SYN攻击发生的呢?事实上,系统根据TcpMaxHalfOpen,TcpMaxHalfOpenRetried和TcpMaxPortsExhausted三个参数判断是否遭受SYN攻击。

TcpMaxHalfOpen表示能同时处理的最大半连接数(也即服务器处于SYN_RECV阶段),如果超过此值,系统认为正处于SYN攻击中。Win2000 server默认值为100,Win2000 Advanced server为500。

TcpMaxHalfOpenRetried定义了保存在backlog队列且重传过的半连接数(即服务器处于SYN_RECV阶段,并且对于一些连接,若发送了SYN-ACK后没有响应使得服务器重发SYN-ACK),如果超过此值,系统自动启动SynAttackProtect机制。Win2000 server默认值为80,Win2000 Advanced server为400。

TcpMaxPortsExhausted 是指系统拒绝的SYN请求包的数量(也即服务器处于LISTEN阶段,个人认为是与socket中的listen第二个参数backlog一样的意思,也即等待连接队列的长度),默认是5。

如果想调整以上参数的默认值,可以在注册表里修改(位置与SynAttackProtect相同)

三、特别注意

tcp/ip协议栈的调整可能会引起某些功能的受限,管理员应该在进行充分了解和测试的前提下进行此项工作



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3