dos攻击

发布时间:2011-05-06 13:54:45   来源:文档文库   
字号:

DDOS攻击并不一定非要用防火墙。一部份DDOS我们可以通过DOS命令netstat -an|more或者网络综合分析软件:sniff等查到相关攻击手法、如攻击某个主要端口、或者对方主要来自哪个端口、对方IP等。这样我们可以利用w2k自带的远程访问与路由或者IP策略等本身自带的工具解决掉这些攻击。做为无法利用这些查到相关数据的我们也可以尝试一下通过对服务器进行安全设置来防范DDOS攻击。如果通过对服务器设置不能有效解决,那么就可以考虑购买抗DDOS防火墙了。 其实从操作系统角度来说,本身就藏有很多的功能,只是很多是需要我们慢慢的去挖掘的。这里我给大家简单介绍一下如何在Win2000环境下通过修改注册表,增强系统的抗DoS能力。

请注意,以下的安全设置均通过注册表进行修改,该设置的性能取决于服务器的配置,尤其是CPU的处理能力。如按照如下进行安全设置,采用双路至强2.4G的服务器配置,经过测试,可承受大约1万个包的攻击量。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

'关闭无效网关的检查。当服务器设置了多个网关,这样在网络不通畅的时候系统会尝试连接

'第二个网关,通过关闭它可以优化网络。

"EnableDeadGWDetect"=dword:00000000

'禁止响应ICMP重定向报文。此类报文有可能用以攻击,所以系统应该拒绝接受ICMP重定向报文。

"EnableICMPRedirects"=dword:00000000

'不允许释放NETBIOS名。当攻击者发出查询服务器NETBIOS名的请求时,可以使服务器禁止响应。

'注意系统必须安装SP2以上

"NonameReleaseOnDemand"=dword:00000001

'发送验证保持活动数据包。该选项决定TCP间隔多少时间来确定当前连接还处于连接状态,

'不设该值,则系统每隔2小时对TCP是否有闲置连接进行检查,这里设置时间为5分钟。

"KeepAliveTime"=dword:000493e0

'禁止进行最大包长度路径检测。该项值为1时,将自动检测出可以传输的数据包的大小,

'可以用来提高传输效率,如出现故障或安全起见,设项值为0,表示使用固定MTU576bytes

"EnablePMTUDiscovery"=dword:00000000

'启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为12表示启动syn攻击保护,设成2之后

'安全级别更高,对何种状况下认为是攻击,则需要根据下面的TcpMaxHalfOpenTcpMaxHalfOpenRetried

'设定的条件来触发启动了。这里需要注意的是,NT4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。

"SynAttackProtect"=dword:00000002

'同时允许打开的半连接数量。所谓半连接,表示未完整建立的TCP会话,用netstat命令可以看到呈SYN_RCVD状态

'的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。

"TcpMaxHalfOpen"=dword:00000064

'判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400

"TcpMaxHalfOpenRetried"=dword:00000050

'设置等待SYN-ACK时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。

'项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。

'微软站点安全推荐为2

"TcpMaxConnectResponseRetransmissions"=dword:00000001

'设置TCP重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3

"TcpMaxDataRetransmissions"=dword:00000003

'设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5

"TCPMaxPortsExhausted"=dword:00000005

'禁止IP源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的

'源路由包,微软站点安全推荐为2

"DisableIPSourceRouting"=dword:0000002

'限制处于TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。

"TcpTimedWaitDelay"=dword:0000001e

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]

'增大NetBT的连接块增加幅度。缺省为3,范围1-20,数值越大在连接越多时提升性能。每个连接块消耗87个字节。

"BacklogIncrement"=dword:00000003

'最大NetBT的连接快的数目。范围1-40000,这里设置为1000,数值越大在连接越多时允许更多连接。

"MaxConnBackLog"=dword:000003e8

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Afd\Parameters]

'配置激活动态Backlog。对于网络繁忙或者易遭受SYN攻击的系统,建议设置为1,表示允许动态Backlog

"EnableDynamicBacklog"=dword:00000001

'配置最小动态Backlog。默认项值为0,表示动态Backlog分配的自由连接的最小数目。当自由连接数目

'低于此数目时,将自动的分配自由连接。默认值为0,对于网络繁忙或者易遭受SYN攻击的系统,建议设置为20

"MinimumDynamicBacklog"=dword:00000014

'最大动态Backlog。表示定义最大""连接的数目,主要看内存大小,理论每32M内存最大可以

'增加5000个,这里设为20000

"MaximumDynamicBacklog"=dword:00002e20

'每次增加的自由连接数据。默认项值为5,表示定义每次增加的自由连接数目。对于网络繁忙或者易遭受SYN攻击

'的系统,建议设置为10

"DynamicBacklogGrowthDelta"=dword:0000000a

以下部分需要根据实际情况手动修改

'-------------------------------------------------------------------------------------------------

'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

'启用网卡上的安全过滤

'"EnableSecurityFilters"=dword:00000001

'

'同时打开的TCP连接数,这里可以根据情况进行控制。

'"TcpNumConnections"=

'

'该参数控制 TCP 报头表的大小限制。在有大量 RAM 的机器上,增加该设置可以提高 SYN 攻击期间的响应性能。

'"TcpMaxSendFree"=

'

'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{自己的网卡接口}]

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

"PerformRouterDiscovery "=dword:00000000

DOS攻击原理以及常见方法介绍

已经有很多介绍DOSDenial of Service,即拒绝服务)攻击的文章,但是,多数人还是不知道DOS到底是什么,它到底是怎么实现的。本文主要介绍DOS的机理和常见的实施方法。因前段时间仔细了解了TCP/IP协议以及RFC文档,有点心得。同时,文中有部分内容参考了Shaft的文章翻译而得。要想了解DOS攻击得实现机理,必须对TCP有一定的了解。

1、什么是DOS攻击

DOS:即Denial Of Service,拒绝服务的缩写,可不能认为是微软的dos操作系统了。好象在5·1的时候闹过这样的笑话。拒绝服务,就相当于必胜客在客满的时候不再让人进去一样,呵呵,你想吃馅饼,就必须在门口等吧。DOS攻击即让目标机器停止提供服务或资源访问。

2、有关TCP协议的东西

TCPtransmission control protocol,传输控制协议),是用来在不可靠的因特网上提供可靠的、端到端的字节流通讯协议,在RFC793中有正式定义,还有一些解决错误的东西在RFC 1122中有记录,RFC 1323则有TCP的功能扩展。我们常见到的TCP/IP协议中,IP层不保证将数据报正确传送到目的地,TCP则从本地机器接受用户的数据流,将其分成不超过64K字节的数据片段,将每个数据片段作为单独的IP数据包发送出去,最后在目的地机器中再组合成完整的字节流,TCP协议必须保证可靠性。发送和接收方的TCP传输以数据段的形式交换数据,一个数据段包括一个固定的20字节,加上可选部分,后面再跟上数据,TCP协议从发送方传送一个数据段的时候,还要启动计时器,当数据段到达目的地后,接收方还要发送回一个数据段,其中有一个确认序号,它等于希望收到的下一个数据段的顺序号,如果计时器在确认信息到达前超时了,发送方会重新发送这个数据段。

上面,我们总体上了解一点TCP协议,重要的是要熟悉TCP的数据头(header)。因为数据流的传输最重要的就是header里面的东西,至于发送的数据,只是header附带上的。客户端和服务端的服务响应就是同header里面的数据相关,两端的信息交流和交换是根据header中的内容实施的,因此,要实现DOS,就必须对header中的内容非常熟悉。

下面是TCP数据段头格式。RFC793中的

(请大家注意网页显示空格使下面的格式错位了)

         

0     1     2     3 

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|   Source Port   |  Destination Port  |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|      Sequence Number      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Acknowledgment Number      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Data |   |U|A|P|R|S|F|        |

| Offset| Reserved |R|C|S|S|Y|I|   Window    |

|  |   |G|K|H|T|N|N|        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|   Checksum   |   Urgent Pointer  |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Options     | Padding |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|        data        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

       TCP Header Format

Source Port Destination Port :是本地端口和目标端口

Sequence Number Acknowledgment Number :是顺序号和确认号,确认号是希望接收的字节号。这都是32位的,在TCP流中,每个数据字节都被编号。

Data offset :表明TCP头包含多少个32位字,用来确定头的长度,因为头中可选字段长度是不定的。

Reserved : 保留的6位,现在没用,都是0

接下来是61位的标志,这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍:

URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断

ACK:(Acknowledgment field significant)置1时表示确认号(Acknowledgment Number)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。

SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1ACK=0,连接响应时,SYN=1ACK=1。即,SYNACK来区分Connection RequestConnection Accepted

FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。

知道这重要的6个指示标志后,我们继续来。

16位的WINDOW字段:表示确认了字节后还可以发送多少字节。可以为0,表示已经收到包括确认号减1(即已发送所有数据)在内的所有数据段。

接下来是16位的Checksum字段,用来确保可靠性的。

16位的Urgent Pointer,和下面的字段我们这里不解释了。不然太多了。呵呵,偷懒啊。

我们进入比较重要的一部分:TCP连接握手过程。这个过程简单地分为三步。

在没有连接中,接受方(我们针对服务器),服务器处于LISTEN状态,等待其他机器发送连接请求。

第一步:客户端发送一个带SYN位的请求,向服务器表示需要连接,比如发送包假设请求序号为10,那么则为:SYN=10ACK=0,然后等待服务器的响应。

第二步:服务器接收到这样的请求后,查看是否在LISTEN的是指定的端口,不然,就发送RST=1应答,拒绝建立连接。如果接收连接,那么服务器发送确认,SYN为服务器的一个内码,假设为100ACK位则是客户端的请求序号加1,本例中发送的数据是:SYN=100ACK=11,用这样的数据发送给客户端。向客户端表示,服务器连接已经准备好了,等待客户端的确认

这时客户端接收到消息后,分析得到的信息,准备发送确认连接信号到服务器

第三步:客户端发送确认建立连接的消息给服务器。确认信息的SYN位是服务器发送的ACK位,ACK位是服务器发送的SYN位加1。即:SYN=11ACK=101

这时,连接已经建立起来了。然后发送数据,ACK=101>。这是一个基本的请求和连接过程。需要注意的是这些标志位的关系,比如SYNACK

3、服务器的缓冲区队列(Backlog Queue

服务器不会在每次接收到SYN请求就立刻同客户端建立连接,而是为连接请求分配内存空间,建立会话,并放到一个等待队列中。如果,这个等待的队列已经满了,那么,服务器就不在为新的连接分配任何东西,直接丢弃新的请求。如果到了这样的地步,服务器就是拒绝服务了。

如果服务器接收到一个RST位信息,那么就认为这是一个有错误的数据段,会根据客户端IP,把这样的连接在缓冲区队列中清除掉。这对IP欺骗有影响,也能被利用来做DOS攻击。

上面的介绍,我们了解TCP协议,以及连接过程。要对SERVER实施拒绝服务攻击,实质上的方式就是有两个:

一, 迫使服务器的缓冲区满,不接收新的请求。

二, 使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接这就是DOS攻击实施的基本思想。具体实现有这样的方法:

1SYN FLOOD

利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCPHeader,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。

如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。现在有很多实施SYN FLOOD的工具,呵呵,自己找去吧。

2IP欺骗DOS攻击

这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。

攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。

3、带宽DOS攻击

如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。呵呵。Ping白宫??你发疯了啊!

4、自身消耗的DOS攻击

这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。

这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这种伪装对一些身份认证系统还是威胁巨大的。

实施DOS攻击最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。当然还有更多的实施方法,可以自己去研究。

本文只是一种技术讨论,不存在任何恶意。如果有人利用做过什么坏事情,同本人无关。

本文来源:https://www.2haoxitong.net/k/doc/2a60e41ca76e58fafab0039f.html

《dos攻击.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式