电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

Linux下防范DoS攻击的方法

来源:文库作者:开心麻花2025-12-201

Linux下防范DoS攻击的方法(精选8篇)

Linux下防范DoS攻击的方法 第1篇

由于拒绝服务攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的事实,拒绝服务攻击也就成为流传广泛、极难防范的一种攻击方式,

Linux下防范DoS攻击的方法

虽然到目前为止,没有一个绝对的方法可以制止这类攻击;但对于不同的攻击方式,还是有一些解决方法的。本文以Redhat Linux

Linux下防范DoS攻击的方法 第2篇

利用三层交换建立全面的网络安全体系,其基础必须是以三层交换和路由为核心的智能型网络,有完善的三层以上的安全策略管理工具。同时,在网络的设计阶段,就应该进行合理布置。

局域网层

在局域网层上,网管员可采取很多预防措施。例如,尽管完全消除IP分组假冒现象几乎不可能,但网管员可构建过滤器,如果数据带有内部网的信源地址,则通过限制数据输入流量,可有效降低内部假冒IP攻击。过滤器还可限制外部IP分组流,防止假冒IP的DoS攻击被当作中间系统。

其他方法还有:关闭或限制特定服务,如限定UDP服务只允许于内部网中用于网络诊断目的。

遗憾的是,这些限制措施可能给合法应用(如采用UDP作为传输机制的RealAudio)带来负面影响。如果攻击者能胁迫受害者不使用IP服务或其他合法应用,那么这些 已经达到了DoS攻击的目的。

网络传输层

以下对网络传输层的控制可对以上不足进行补充。

1、独立于层的线速服务质量(QoS)和访问控制

带有可配置智能软件、独立于层的QoS和访问控制功能的线速多层交换机的出现,改善了网络传输设备保护数据流完整性的能力。

在传统路由器中,认证机制(如滤除带有内部地址的假冒分组)要求流量到达路由器边缘,并与特定访问控制列表中的标准相符,

但维护访问控制列表不仅耗时,而且极大增加了路由器开销。

相比之下,线速多层交换机可灵活实现各种基于策略的访问控制。

这种独立于层的访问控制能力把安全决策与网络结构决策完全分开,使网管员在有效部署了DoS预防措施的同时,不必采用次优的路由或交换拓扑。结果,网管员和服务供应商能把整个城域网、数据中心或企业网环境中基于策略的控制标准无缝地集成起来,而不管其采用的是复杂的基于路由器的核心服务,还是相对简单的第二层交换。此外,线速处理数据认证可在后台执行,基本没有性能延迟。

2.可定制的过滤和“信任邻居”机制

智能多层访问控制的另一优点是,能简便地实现定制过滤操作,如根据特定标准定制对系统响应的控制粒度。多层交换可把分组推送到指定的最大带宽限制的特定QoS配置文件上,而不是对可能是DoS攻击的组制订简单的“通过”或“丢弃”决策。这种方式,既可防止DoS攻击,也可降低丢弃合法数据包的危险。

另一个优点是能定制路由访问策略,支持具体系统之间的“信任邻居”关系,防止未经授权使用内部路由。

以极进网络公司的ExtremeWare套装软件为例,它映射和覆盖了IEEE802.1p和DiffServ标记,使所有交换机都能忽略、观察或处理从“不信任邻居”发来的任何DiffServ标记。这些机制,可使系统管理员根据来自特定邻居的流量调整内部路由策略。

3.定制网络登录配置

网络登录采用惟一的用户名和口令,在用户获准进入前认证身份。网络登录由用户的浏览器把动态主机配置协议(DHCP)递交到交换机上,交换机捕获用户身份,向RADIUS服务器发送请求,进行身份认证,只有在认证之后,交换机才允许该用户发出的分组流量流经网络。

一种跟踪DoS攻击的有效方法 第3篇

关键词:动态机率,DoS,标记

0 引 言

近年来, 网络黑客的各种攻击手法中, 以阻断服务攻击DoS (Denial of Services) 最为常见也最难防范。阻断服务攻击会占用服务器的网络或系统资源, 严重降低系统执行效率, 导致无法提供合法使用者正常的服务, 甚至还会导致电脑经常死机。这类型的攻击不会造成资料被窜改或遗失, 整个攻击重点放在企业所提供的网络服务上。

针对DoS攻击的威胁, 虽然已经有许多学者提出防治的方法, 但大部分都只能达到减轻受害程度而已, 并不能完全解决这个问题。在本论文里, 我们提出一个新的方法, 动态机率封包标记DPPM (Dynamic Probabilistic Packet Marking) 法。通过DPPM, 可以提升traceback的效率, 让受害者用最少的跟踪信息就可以重建攻击路径。如果可以大量减少跟踪所需的封包数, 就可以减少跟踪所需时间, 而我们将可以更快或即时地找出攻击来源。

1 防治DoS攻击的常用方法PPM

对攻击者来说, 假冒封包的来源是件非常容易的事, 这使得我们无法相信封包上所记录的信息。然而, 如果透过途中Router的协助, 将他们的IP地址记录在封包里, 则受害者可以通过这些封包找出攻击路径。但是每个封包上可以用来记录的空间非常有限, 使我们很难将所有经过Router的信息都记录下来。

为了能够减少因为记录Router信息而产生的空间需求, 我们可以让封包只记录部分的Router信息。受害者可以通过完整地收集这部分信息, 还原每个Router的原始信息。当每个Router收到一个封包时, 它会用一个固定的机率去决定要不要对这个封包进行mark。如果Router决定要对这个封包进行mark, 则该Router会将其IP地址写入这个封包。我们称这种方法为机率封包标记PPM (Probabilistic Packet Marking) 。使用PPM可以让每个封包使用很少的空间来记录途中经过Router的信息。纵使攻击的距离很长, PPM还是可以将每个Router的信息记录下来。

为了要能够完整获得所有Router的markng信息, 采用固定机率marking的方法 (PPM) 必须要收集大量的攻击封包才能完成。然而这样做会造成另一个问题。如果攻击者将他所发出的攻击封包数控制某个数目之下, 则受害者将更难找出攻击的来源。在DDoS攻击里, 由于每一条攻击路径的攻击封包数都很少, 所以一直很难找到真正的攻击来源。此外, 除了担心黑客发出的攻击封包量不够之外, 还有一个值得深思的问题。如果狡猾的黑客除了假冒来源地址外, 并同时假冒我们marking的信息 (也就是将假的Router IP填入Idenfication位) , 同样也会造成我们跟踪时的困扰。

2 动态机率封包标记 (DPPM) 法

这里, 我们提出一种更有效的跟踪DoS攻击的方法DPPM法。首先, 找出动态机率的公式, 通过这个公式, 可以提高离封包来源越近的Router的mark机率, 并降低离封包来源越远的Router的mark机率。通过机率的调整, 可以让受害者均匀地收到攻击路径中各个Router所遗留下来的marking封包。当我们得到这个动态机率的公式后, 接着就是要决定封包走过的距离, 根据封包走过的距离, 我们才能够决定Router所要采用的机率值。

2.1 动态机率公式的制订

在我们寻找适合的公式时, 除了动态地去调整各Router的机率外, 还必须能够满足二个基本条件:一是要能够保证至少要有一个第一个Router留下来的marking信息;二是黑客所能假冒marking信息的主要原因, 是通过那些没有被marking过的封包才能完成。如果没被mark的封包数越多, 受害者收到假的marking信息就越多。如果能够有效地减少这些没被mark的封包数, 对我们traceback的工作会大有帮助。动态机率公式如下所示:

Pd:从封包来源开始, 第d个Router所采取的机率值

d:封包已走过的距离 (或Router数)

Ρd=1d, d=1, 2, 3 (1)

Rd=Ρdi=1D-d (1-Ρd+i) (2)

我们将式 (2) 中的机率用式 (1) 来取代, 并试着将其展开, 可以得到下面结果:

Rd=Ρdi=1D-d (1-Ρd+i) =Ρd (1-Ρd+1) (1-Ρd+2) (1-Ρd+3) (1-ΡD) =1d (1-1d+1) (1-1d+2) (1-1d+3) (1-1D) =1ddd+1d+1d+2d+2d+3D-1D=1D (3)

我们可以由式 (3) 的展开得知, 只要各个Router都支援式 (1) 所提的动态机率公式, 那就可以保证受害者所有收集到的攻击封包里, 在攻击路径中的每一个Router最后留下的marking封包机率都是1/D

2.2 决定封包走过的距离

我们利用IP Header上的Time to live (TTL) 位来完成这件工作。当Router收到封包时, 一定会对这个位进行减1的动作, 如果减1之后变成0, 那就不再继续往后传送;如果减1之后的值大于0, 而且目前这个Router并非封包的目的地, 就会继续把封包传送给下一个Router。根据这项性质, 假设每个封包的TTL起始值都是相同的, 那Router只需计算起始值与目前TTL值的差, 就可求得封包走过的距离。

我们收集目前大部分系统的预设TTL值都定为32, 64, 128, 256这四个值的其中一个, 而且封包传送的路径都很少超过25个Router[2,4]。在DPPM中, 将每个封包预设的TTL值为x, 把目前这个Router当作是封包所经过的第一个Router。

接着, 我们将整个mark的算法叙述如下:

在这个算法中, 我们用w来表示一个封包, 且w.ttl表示这个封包目前的TTL值。在DPPM中, x代表TTL的上限值。当发现TTL的值大于x时, Router会将TTL的值转换为xp在此是代表Router对封包进行mark的机率。当Router收到封包时, 他会根据机率p来决定是否要对封包进行mark。如果Router决定要进行mark, 那他会将自己的IP地址信息写入封包内。

3 性能分析

在重建攻击路径所需的封包数方面, PPM方法和DPPM方法存在很大不同, 如表1所示。

从表中可以看出, 使用DPPM所需收集的攻击封包数比使用PPM还要少。当受害者遭受DoS攻击时, 采用动态机率的方法, 只需很少的攻击封包就可以进行traceback的工作。如果可以迅速查到攻击者来源, 不管接下来是要给攻击者法律制裁或是隔绝攻击封包的流量, DPPM的方法可以提供很大的帮助。

4 结 论

PPM在DoS攻击的问题里, 是一个非常有效的traceback技术, 然而, Router在对封包进行mark时的机率, 一直都是采用固定机率的方法, 使得很难在实际的网络架构下发挥令人满意的效果。反之, 我们通常动态机率的方法, 可以根据每个封包与攻击来源的距离来决定marking的机率, 藉此可让受害者均匀地收到攻击路径中各Router所送来的marking封包。所以我们只需要很少的攻击封包就可以完成traceback的工作。通过这个特性, 我们再也不必担心所收集的攻击封包数会不足以完成traceback的工作, 而攻击者也就越难通过攻击封包数来逃避我们的追踪。

参考文献

[1] Lee Garber.Denial-of-service Attacks Rip the Internet.Computer:12-17, Apr 2000.

[2] Ferguson P, Senie D.Network Ingress Filtering:Defeation Denial of Service Attacks Which Employ IP Source Address Spoofing.May 2000.RFC 2827.

[3] Computer Emergency Response Team.CERT Advisory Approach to IP Traceback.ACM Transactions on Information and System Security, 2002, 5 (2) :119-137.

[4]Oliver Spatscheck, Larry Peterson.Defending Against Denial of Service Attacks in Scout.1999USENLX/ACM Symposium on Operating Sys-tem Design and Implementation:59-72, Feb1999.

[5]Micah Adler.Tradeoffs in Probabilistic Packet Marking for IP Trace-back.Proceeding of34th ACM Symposium on Theory of Computing, February2002.

[6] Stefan Savage, David Wetherall, Anna Karlin, Tom Aderson.Network Support for IP Traceback.IEEE/ACM Transactions on Networking, 2001, 20 (2) :226-237.

[7] Dawn Song, Adrian Perrig.Advanced and Authenticated Marking Schemes for IP Traceback.2001 IEEE INFOCOM Conference, April 2001.

[8] Kihong Park, Heejo Lee.On the Effectiveness of Probabilistic Packet Marking for IP Traceback under Denial of Service Attack.2001 IEEE INFOCOM Conference, June 2000.

[9] Sven Dietrich, Neil Long, David Dittrich.Analyzing Distributed Denial of Service Attack Tools:The Shaft Case.Proceedings of USENLX LISA 2000, December 2000:329-339.http://home.adelphi.edu/~spock/ddos.html.

防御DoS攻击的方法 第4篇

Dos攻击的方法很多,但它们都具有一些共同的典型特征,例如:使用欺骗的源地址、使用网络协议的缺陷、使用操作系统或软件的漏洞、在网络上产生大量的无用数据包消耗服务资源等。因此,要防御dos攻击,就必须从这些攻击的特征入手,分析其特征,制定合适的策略和方法。

Smurf攻击的特征描述

Smurf攻击是根据它的攻击程序命名的,是一种ICMPechoflooding攻击。

在这样的攻击中,ping包中包含的欺骗源地址指向的主机是最终的受害者,也是主要的受害者;而路由器连接的广播网段成为了攻击的帮凶(类似一个放大器,使网络流量迅速增大),也是受害者。

防御Smurf攻击的方法

根据Smurf攻击的特征,可以从两个方面入手来防御Smurf的攻击:一是防止自己的网络成为攻击的帮凶即第一受害者;二是从最终受害者的角度来防御Smurf攻击。下面就从这两个方面来讨论防御的的测路和方法。

防御DoS攻击一、拒绝成为攻击的帮凶

Smurf要利用一个网络作为流量放大器,该网络必定具备以下特征:

1、路由器允许有IP源地址欺骗的数据包通过;

2、路由器将定向广播(发送到广播地址的数据包)转换成为第二层(MAC层)的广播并向连接网段广播;

3、广播网络上的主机允许对ping广播作出回应;

4、路由器对主机回应的ping数据流量未做限制;

所以,可以根据以上四点来重新规划网络,以使自己的网络不具备会成为流量放大器的条件。

防御DoS攻击防止IP源地址欺骗

IP源地址欺骗可以应用在多种不同的攻击方式中,例如:TCPSYNflooding、UDPflooding、ICMPflooding等。

伪造的源地址可以是不存在(不允许在公网上发布)的地址,或者是最终攻击目标的地址。

在UDPflooding中,攻击者则是通过连接目标系统的changen端口到伪造源地址指向的主机的echo端口,导致changen端口产生大量的随机字符到echo端口,而echo端口又将接收到的字符返回,最后导致两个系统都因耗尽资源而崩溃。

注意:为了防御UDPflooding,我们必须防止路由器的诊断端口或服务向管理域之外的区域开放,如果不需要使用这些端口或者服务,应该将其关闭。

防止IP源地址欺骗的最有效方法就是验证源地址的真实性,在Cisco路由器上,我们可以采用下列两种方法:

防御DoS攻击a、在网络边界实施对IP源地址欺骗的过滤

阻止IP源地址欺骗的一个最简单有效的方法是通过在边界路由器使用向内的访问列表,限制下游网络发进来的数据包确实是在允许接受的地址范围,不在允许范围的数据将被删除。同时,为了追溯攻击者,可以使用log记录被删除的数据信息。

防御DoS攻击b、使用反向地址发送

使用访问控制列表在下游入口处做ip限制,是基于下游ip地址段的确定性。但在上游入口处,流入数据的ip地址范围有时是难于确定的。在无法确定过滤范围时,一个可行的方法是使用反向地址发送(UnicastReversePathForwarding)。

反向地址发送是Cisco路由器的新版IOS提供的一项特性,简称uRPF,

uRPF的工作原理是:当路由器在一个接口上收到一个数据包时,它会查找CEF(CiscoExpressForward)表,验证是否存在从该接收接口到包中指定的源地址之间的路由,即反向查找路径,验证其真实性,如果不存在这样的路径就将数据包删除。

相比访问控制列表,uRPF具有很多优点,例如:耗费CPU资源少、可以适应路由器路由表的动态变化(因为CEF表会跟随路由表的动态变化而更新),所以维护量更少,对路由器的性能影响较小。

uRPF是基于接口配置的,配置命令如下:

(config)#ipcef

(config-if)#ipverifyunicastreverse-path

注意:uRPF的实施,CEF必须是全局打开,并在配置接口上也是启用的。

防御DoS攻击禁止定向广播

在Smurf攻击中,攻击者将ping数据包发向一个网络的广播地址,例如:192.168.1.255。大多数情况下,路由器在接收到该广播包之后,默认会将这个第三层广播转换成第二层广播,即将192.168.1.255转换成为以太网的FF:FF:FF:FF:FF:FF。而该广播网段上的所有以太网接口卡在接收到这个第二层广播之后,就会向主机系统发出中断请求,并对这个广播作出回应,从而消耗了主机资源,并且做出的回应可能造成对源地址所指目标的攻击。

所以,在绝大多数情况下,应该在边界路由器上禁止定向广播,使用以下接口命令禁止

(config)#noipdirected-broadcast

注:在绝大部分情况下,是不需要使用路由器的定向广播功能的,会使用定向广播的特例也有,例如,如果一台SMB或者NT服务器需要让一个远程的LAN能够看到自己,就必须向这个LAN发送定向广播,但对于这种应用可以通过使用WINS服务器解决。

禁止主机对ping广播作出反应

当前绝大部分的操作系统都可以通过特别的设置,使主机系统对于ICMPECHO广播不做出回应。

通过阻止放大器网络上的主机对ICMPECHO(ping)广播做出回应,可以阻止该广播网络成为攻击的帮凶。

限制icmpecho的流量

当大量的数据涌入一个接口的时候,即使使用了访问策略对ICMP包进行了删除,接口还是可能会因为忙于不断删除大量数据而导致接口不能提供正常服务。

与被动的删除数据相比,一个主动的方法是,在接口上设置承诺速率限制(committedaccessrate,简称CAR),将特定数据的流量限制在一个范围之内,允许其适量的通过,同时保证了其它流量的正常通过。

例:使用CAR限制ICMPechoflooding

!建立访问列表,分类要过滤的数据

access-list102permiticmpanyanyecho

access-list102permiticmpanyanyecho-reply

!在接口上配置CAR,将ICMPecho流量

!限制在256k,允许突发8k

interfaceSerial3/0/0

DoS和DDoS的攻击方法浅析 第5篇

由于UDP(用户数据包协议)在网络中的应用比较广泛,基于UDP攻击种类也较多。如今在Internet上提供WWW和Mail等服务设备通常是使用Unix的服务器,它们默认一些被恶意利用的UDP服务,如echo和chargen服务,它会显示接收到的每一个数据包,而原本作为测试功能的chargen服务会在收到每一个数据包时随机反馈一些字符,如果恶意攻击者将这2个UDP服务互指,则网络可用带宽将很快耗尽,

目前,我们知道的对网络进行DDoS攻击所使用的工具有:Trinoo、Tribe Flood Network(TFN)、TFN2k和Stacheldraht等。它们的攻击思路基本相近。

1.Trinoo:它是基于UDP flood的攻击软件,它向被攻击目标主机的随机端口发出全零的4字节UDP包,在处理这些超出其处理能力垃圾数据包的过程中,被攻击主机的网络性能不断下降,直到不能提供正常服务,乃至崩溃。它对IP地址不做假,此攻击方法用得不多。

2.TFN:它是利用ICMP给代理服务器下命令,其来源可以做假。它可以发动SYN flood、UDP flood、ICMP flood及Smurf(利用多台服务器发出海量数据包,实施DoS攻击)等攻击。TFN的升级版TFN2k的特点是:对命令数据包加密、更难查询命令内容、命令来源可以做假,还有一个后门控制代理服务器。

3.Stacheldraht:对命令来源做假,而且可以防范一些路由器用RFC2267过滤。若检查出有过滤现象,它将只做假IP地址最后8位,从而让用户无法了解到底是哪几个网段的哪台机器被攻击。此外,它还具有自动更新功能,可随软件的更新而自动更新。

DoS攻击原理及常见方法介绍 第6篇

什么是DOS攻击

DOS:即DenialOfService,拒绝服务的缩写,可不能认为是微软的dos操作系统了。好象在5?1的时候闹过这样的笑话。拒绝服务,就相当于必胜客在客满的时候不再让人进去一样,呵呵,你想吃馅饼,就必须在门口等吧。DOS攻击即攻击者想办法让目标机器停止提供服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。比如:

*试图FLOOD服务器,阻止合法的网络通讯

*破坏两个机器间的连接,阻止访问服务

*阻止特殊用户访问服务

*破坏服务器的服务或者导致服务器死机

不过,只有那些比较阴险的攻击者才单独使用DOS攻击,破坏服务器。通常,DOS攻击会被作为一次入侵的一部分,比如,绕过入侵检测系统的时候,通常从用大量的攻击出发,导致入侵检测系统日志过多或者反应迟钝,这样,入侵者就可以在潮水般的攻击中混骗过入侵检测系统。

有关TCP协议的东西

TCP(transmissioncontrolprotocol,传输控制协议),是用来在不可靠的因特网上提供可靠的、端到端的字节流通讯协议,在RFC793中有正式定义,还有一些解决错误的东西在RFC1122中有记录,RFC1323

则有TCP的功能扩展。

我们常见到的TCP/IP协议中,IP层不保证将数据报正确传送到目的地,TCP则从本地机器接受用户的数据流,将其分成不超过64K字节的数据片段,将每个数据片段作为单独的IP数据包发送出去,最后在目的地机器中再组合成完整的字节流,TCP协议必须保证可靠性。

发送和接收方的TCP传输以数据段的形式交换数据,一个数据段包括一个固定的20字节头,加上可选部分,后面再跟上数据,TCP协议从发送方传送一个数据段的时候,还要启动计时器,当数据段到达目的地后,接收方还要发送回一个数据段,其中有一个确认序号,它等于希望收到的下一个数据段的顺序号,如果计时器在确认信息到达前超时了,发送方会重新发送这个数据段。

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

下面是TCP数据段头格式。

SourcePort和DestinationPort:是本地端口和目标端口

SequenceNumber和AcknowledgmentNumber:是顺序号和确认号,确认号是希望接收的字节号。这都是32位的,

在TCP流中,每个数据字节都被编号。

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

Reserved:保留的6位,现在没用,都是0接下来是6个1位的标志,这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍:

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

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

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

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

SYN:(Synchronizesequencenumbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分ConnectionRequest和ConnectionAccepted。

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

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

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

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

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

我们进入比较重要的一部分:TCP连接握手过程,

这个过程简单地分为三步。

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

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

然后等待服务器的响应。

第二步:服务器接收到这样的请求后,查看是否在LISTEN的是指定的端口,不然,就发送RST=1应答,拒绝建立连接。如果接收

连接,那么服务器发送确认,SYN为服务器的一个内码,假设为100,ACK位则是客户端的请求序号加1,本例中发送的数据是:

SYN=100,ACK=11,用这样的数据发送给客户端。向客户端表示,服务器连接已经准备好了,等待客户端的确认

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

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

即:SYN=11,ACK=101。

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

服务器的缓冲区队列(BacklogQueue)

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

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

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

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

二,使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接

这就是DOS攻击实施的基本思想。具体实现有这样的方法:

1、SYNFLOOD

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

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

现在有很多实施SYNFLOOD的工具,呵呵,自己找去吧。

2、IP欺骗DOS攻击

这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.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(winsockv1),CiscoIOSv.10.x,和其他过时的系统。

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

上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段。

5、塞满服务器的硬盘

通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如:

发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。

让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。

向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。

6、合理利用策略

Linux下防范DoS攻击的方法 第7篇

关键词:应用层DoS攻击,特征分析,检测方法

1 DoS简介

目前, DoS (Denial of Service) 攻击已经成为网络中的一个重要攻击形式, 构成了对网络的严重威胁。传统的DoS攻击主要针对网络层, 如ICMP flooding, SYN flooding等。然而, 随着防御措施的不断增强, 发动网络层攻击已经越来越困难, 而针对应用层的DoS攻击呈现上升趋势, 这种攻击主要针对应用层协议 (如HTTP) 上的应用, 伪装成正常的用户请求, 从而具有较大的欺骗性, 一般的防火墙难以抵御, 而传统的针对网络层攻击的检测方法也不易奏效。攻击的主要目的除了消耗带宽资源外, 还将消耗主机资源 (如计算资源、存储资源、I/O资源等) , 以达到破坏系统可用性的目的。一旦攻击成功, 造成的危害较传统的网络层攻击更严重。

鉴于这种攻击有着巨大的破坏性、欺骗性, 目前, 已有不少针对它的研究, 主要集中在攻击的特征、攻击的检测方法等方面。研究的攻击对象主要是基于HTTP协议的各种应用 (如Website) 。其中在有的文献中还进一步将应用层DoS攻击划分为3类: (1) 请求泛洪攻击 (Request Flooding Attack) , 在一次应用层会话中向目标主机和网络发送大量超过正常数量的请求; (2) 不对称攻击 (Asymmetric Attack) , 向目标主机发送一个能引发目标服务器巨大工作负载的请求; (3) 重复的单次攻击 (Repeated One-shot Attack) , 又称为会话泛洪攻击, 它在一次会话中只发送一个请求, 但却以高于正常情况的速率建立多个会话。

2 应用层DoS攻击的特征

应用层DoS攻击的目标耗尽服务器的入口带宽和主机资源 (如CPU, Disk Bandwidth, Socket等) , 由于这种攻击以应用层请求信息作为主要攻击媒介, 所以在下层网络协议中难以发现其攻击的主要特征。但是, 这种攻击形式在应用层仍然有以下3类特征。

2.1 流量特征

流量特征主要表现为两类:泛洪攻击和脉冲式攻击。

泛洪攻击在应用层具体表现为在一次会话中以较高的请求速率, 向目标主机发送大量请求, 消耗主机与网络的资源, 使目标主机出现拥塞或大幅度降低系统的响应时间, 如HTTP Flooding。通过这样的手段, 攻击者可以达到阻塞其他合法用户的目的。由于这种特征常常与正常的突发流相似, 所以较难辨别。

脉冲式攻击, 它并不是连续不断地发送请求, 而是在每发送若干请求之后增加一个等待时间间隔。在一段时间内, 采用较高的请求速率, 当这段时间结束后, 攻击暂停等待下一个时间周期的到来。这使得每个被攻击节点的平均请求到达速率较低, 不容易被检测。

2.2 负载特征

攻击者即使在较低的请求速率下, 也可以对应用层发起攻击。恶意用户可以精心构造一个请求, 使服务器运行复杂的运算或者请求数据库生成大量的数据返回, 从而占用系统的大量计算资源、存储资源与I/O资源等, 直接导致请求的响应时间延长, 服务的吞吐量降低, 大量请求被拒绝, 甚至引起服务器崩溃。由于应用的复杂性和系统性能的动态性, 这种攻击比较难以检测, 往往只能等到其发生后才能采取措施, 但损失已经造成。

2.3 行为特征

正常用户对应用对象和内容的访问往往符合一定分布规律 (如Zipf分布) , 而攻击者一般使用特定的程序实施攻击, 在应用请求对象的顺序、频度、间隔等方面往往表现出异常特征。然而, 攻击者也可以改造攻击程序, 使其具有一定的学习功能, 从而模仿正常用户的访问行为。在这种情况下, 根据行为特征, 实现对攻击的检测较为困难, 但是, 由于攻击程序毕竟不同于实际用户, 它始终无法实时、动态地跟踪和模仿正常用户的访问行为, 所以仍然可以通过一定时间的观察追踪发现其行为特征。

3 基于特征的检测方法

目前, 检测方法的分类有许多方法:如基于模式的检测、基于异常的检测、基于第三方的检测。本文从应用层攻击特征考虑, 将检测方法分为:基于流量特征检测、基于负载特征检测、基于行为特征检测。实际上, 在应用中常常综合采用上述检测方法。

3.1 基于流量特征

基于流量特征的检测方法主要是通过对请求速率的统计分析, 围绕流量的相关属性来判断当前系统是否处于被攻击状态。

在背景流是平稳流的情况下, 利用攻击流与正常流在统计上的差异, 可以检测出攻击。例如, 可以根据以往数据, 对于一个会话中的不同请求数量, 建立关于平均请求时间间隔的概率分布函数, 以此来检测攻击。

在背景流是突发流时, 目前已提出了使用两个属性区分DoS攻击和正常突发流。一是DoS攻击是由少量攻击主机产生大量的请求造成的, 而正常突发流是由大量的客户产生大量的请求造成的, 通过判断请求速率的增长是否与用户增长成比例来判断是否受到攻击;二是DoS攻击者通常是新增用户或新增的Session, 而正常突发流下的用户通常在突发流产生前都访问过该系统。以上两个属性在某种程度上确实可以很好地检测出攻击。但也存在以下不足:一是假设攻击由少量节点产生只能适用于传统的DoS攻击, 现代的DoS攻击通常借助“僵尸网络”或病毒木马技术, 形成数量庞大的攻击客户端;二是假设攻击来自新增用户, 有可能拒绝了大量后来的合法用户, 而攻击者也可以通过先建立合法连接, 再发起攻击的方式来避开检测机制。

在不考虑应用层背景流的情况下, 还有基于熵的流量异常检测方法, 基于网络层和传输层的异常检测, 基于服务器QoS的异常检测。基于熵的流量异常检测方法通过计算不同流量中由源IP地址、目的IP地址、目的端口、流尺寸、节点出度、入度或者IP包尺寸分布特征构成的基于时间序列的熵值以及各种熵值之间的关联程度, 来判断攻击是否发生, 该方法通常能够对流量的异常做出较好的判断, 开销较小, 但其基于流的检测是一种粗粒度的检测, 有时并不足以有效地检测出恶意流量。基于网络层和传输层的异常检测, 建立网络层、传输层信息与应用层信息的关联, 通过检测网络低层参数 (如, 请求包的大小、响应包的大小、IP地址、端口等) 来推断应用层的有关信息 (请求方法、响应类型、URL等) , 从而发现异常, 这种检测方法具有较小的开销, 但它不能处理应用层持久连接的情况;基于服务器QoS的异常检测, 建立了单向延时、延时抖动、请求响应延时、包丢失率、整个会话的延时五个维度的特征向量, 利用这些特征向量建立匹配模型, 实现异常检测, 这种检测方法能够较真实地反映出流量的真实状况, 具有较高的True Positives (TP) 和较低的False Positives (FP) 。

3.2 基于负载特征

基于负载的特征检测方式, 其主要思想是通过检测一个请求 (或会话) 造成的系统资源消耗来判断其是否是恶意攻击。检测方法一般是基于统计和机器学习的, 通常分为两个阶段:一是样本学习训练, 通过合法用户的请求的负载特征 (如响应时间、CPU占用率、吞吐量等) , 利用聚类算法 (如K-means算法) 对这些样本数据进行聚类;二是获取用户实时请求或会话的负载特征, 计算出其与各类的背离程度, 根据设定的阈值, 判断其是否属于恶意攻击。

另一种不同方法是事先对系统能处理的各种请求进行分类, 并对不同类的请求统计计算出其标准负载特征;先确定实时请求所属的类型, 然后计算出标准负载特征的距离, 根据设定的阈值, 判断其是否属于恶意请求。

这类检测方法, 可以有效地检测基于负载的攻击, 并可以根据实际的情况不断学习更新已有的样本。不足之处在于有时计算出的负载特征不能反映出系统是否受到攻击的事实, 而且, 这种检测方法往往在有害负载已经运行以后才能发现, 此时已经错过了防御的最佳时机。

3.3 基于行为特征

基于行为的检测方式主要是对用户访问对象和访问序列、时间、频度等多个维度进行分析来判断DoS攻击。

通过数据挖掘等方法, 在经过大量用户访问行为学习以后, 可以建立合法用户的访问行为模型, 通过这个模型可以鉴别出恶意用户。典型的检测方案有3种:一种检测方案是, 利用HSMM模型对用户的请求行为进行建模, 通过对用户的HTTP请求序列分布的熵的比较, 鉴别出恶意用户;第二种检测方案是, 根据用户访问行为的时空特征, 建立用户与访问对象的动态访问矩阵。在此基础上对建立的矩阵进行处理, 计算特征向量、降低维度并依据HSMM模型, 来判别用户行为的合法性;第三种方案是, 首先针对服务器返回信息的加权大小和用户浏览时间之间的关系建立线性回归模型;其次通过建立信息的加权大小与用户浏览时间之间的线性函数;最后, 通过线性函数判别用户的访问行为是否异常。

这类检测方法通常能够及时的发现用户的非法访问, 对非法用户的行为有较高的识别率。不足之处在于由于应用的复杂性和用户的多样性, 这种方法需要获取较高维度的特征样本和大量的用户行为数据, 增加了系统开销。

4 结束语

应用层DoS攻击是近几年逐渐发展起来的一种攻击方法, 这种攻击危害大, 不易被察觉。因此, 检测困难。本文分析了这种攻击的特征, 回顾并分析了针对这种攻击的特征检测研究。

Linux下防范DoS攻击的方法 第8篇

如果你安装了所有正确的补丁,拥有经过测试的防火墙,并且在多个级别都激活了先进的入侵检测系统,那么只有在一种情况下你才会被黑,那就是,你太懒了以至没去做该做的事情,例如,安装BIND的最新补丁。

一不留神而被黑确实让人感到为难,更严重的是某些脚本小鬼还会下载一些众所周知的“rootkits”或者流行的刺探工具,这些都占用了你的CPU,存储器,数据和带宽。这些坏人是从那里开始着手的呢?这就要从rootkit开始说起。

一个rootkit其实就是一个软件包, 利用它来提供给自己对你的机器具有root级别的访问权限。一旦这个 能够以root的身份访问你的机器,一切都完了。唯一可以做就是用最快的效率备份你的数据,清理硬盘,然后重新安装操作系统。无论如何,一旦你的机器被某人接管了要想恢复并不是一件轻而易举的事情。

你能信任你的ps命令吗?

在Linux服务器中找出rootkit的首个窍门是运行ps命令。有可能对你来说一切都看来很正常。真正的问题是,“真的一切都正常吗?” 常用的一个诡计就是把ps命令替换掉,而这个替换上的ps将不会显示那些正在你的机器上运行的非法程序。为了测试个,应该检查你的ps文件的大小,它通常位于/bin/ps。在我们的Linux机器里它大概有60kB。

另一个明显的骗局是把root的命令历史记录文件链接到/dev/null。这个命令历史记录文件是用来跟踪和记录一个用户在登录上一台Linux机器后所用过的命令的。 们把你的历史纪录文件重定向到/dev/null的目的在于使你不能看到他们曾经输入过的命令。

你可以通过在shell提示符下敲入history来访问你的历史记录文件,

假如你发现自己正在使用history命令,而它并没有出现在之前使用过的命令列表里,你要看一看你的~/.bash_history文件。假如这个文件是空的,就执行一个ls-l~/.bash_history命令。在你执行了上述的命令后你将看到类似以下的输出:

-rw------- 1 jd jd 13829 Oct 10 17:06 /home/jd/.bash_history

又或者,你可能会看到类似以下的输出:lrwxrwxrwx 1 jd jd 9 Oct 1019:40/home/jd/.bash_history ->/dev/null

假如你看到的是第二种,就表明这个.bash_history文件已经被重定向到/dev/null。这是一个致命的信息,现在就立即把你的机器从Internet上断掉,尽可能备份你的数据,并且开始重新安装系统。

解决Linux服务器被黑,需要寻找未知的用户账号:

在你打算对你的Linux机器做一次检测的时候,首先检查是否有未知的用户账号无疑是明智的。在下一次你登录到你的Linux服务器时,敲入以下的命令:

grep :x:0: /etc/passwd

只有一行,再强调一遍,在一个标准的Linux安装里,grep命令应该只返回一行,类似以下:

root:x:0:0:root:/root:/bin/bash

假如在敲入之前的grep命令后你的系统返回的结果不止一行,那可能就有问题了。应该只有一个用户的UID为0,而如果grep命令的返回结果超过一行,那就表示不止一个用户。认真来说,虽然对于发现 行为,以上都是一些很好的基本方法。但这些技巧本身并不能构成足够的安全性,而且其深度和广度和在文章头提到的入侵检测系统比起来也差得远。

Linux下防范DoS攻击的方法

Linux下防范DoS攻击的方法(精选8篇)Linux下防范DoS攻击的方法 第1篇由于拒绝服务攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部