DoS
:
我们所说的
DoS (Denial of Service)
攻击其中文含义是拒绝服务攻击,
这种攻击行动使网站
服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于
瘫痪而停止提供正常的网络服务。
黑客不正当地采用标准协议或连接方法,
向攻击的服务发出
大量的讯息,占用及超越受攻击服务器所能处理的能力,使它当
(Down)
机或不能正常地为用户
服务。
“
拒绝服务
”
是如何攻击的通过普通的网络连线,使用者传送信息要求服务器予以确定。服务器
于是回复用户。用户被确定后,就可登入服务器。
“
拒绝服务
”
的攻击方式为:用户传送众多要
求确认的信息到服务器,使服务器里充斥着这种无用的信息。所有的信息都有需回复的虚假地
址,以至于当服务器试图回传时,却无法找到用户。服务器于是暂时等候,有时超过一分钟,
然后再切断连接。服务器切断连接时,黑客再度传送新一批需要确认的信息,这个过程周而复
始,最终导致服务器无法动d,瘫痪在地。
在这些
DoS
攻击方法中,又可以分为下列几种:
TCP SYN Flooding
Smurf
Fraggle
1TCP Syn Flooding
由于
TCP
协议连接三次握手的需要,在每个
TCP
建立连接时,都要发送一个带
SYN
标记的数据
包,如果在服务器端发送应答包后,客户端不发出确认,服务器会等待到数据超时,如果大量
的带
SYN
标记的数据包发到服务器端后都没有应答,会使服务器端的
TCP
资源迅速枯竭,导致
正常的连接不能进入,甚至会导致服务器的系统崩溃。这就是
TCP
SYN Flooding
攻击的过程。
图
1 TCP Syn
攻击
TCP
Syn
攻击是由受控制的大量客户发出
TCP
请求但不作回复,使服务器资源被占用,再也
无法正常为用户服务。服务器要等待超时
(Time
Out)
才能断开已分配的资源。
2Smurf
黑客采用
ICMP(Internet Control Message Protocol RFC792)
技术进行攻击。常用的
ICMP
有
PING
。
首先黑客找出网络上有哪些路由器会回应
ICMP
请求。
然后用一个虚假的
IP
源地
址向路由器的广播地址发出讯息,路由器会把这讯息广播到网络上所连接的每一台设备。这些
设备又马上回应,这样会产生大量讯息流量,从而占用所有设备的资源及网络带宽,而回应的
地址就是受攻击的目标。例如用
500K bit/sec
流量的
ICMP echo (PING)
包广播到
100
台设备,
产生
100
个
PING
回应,便产生
50M bit/sec
流量。这些流量流向被攻击的服务器
,
便会使这服
务器瘫痪。
ICMP Smurf
的袭击加深了
ICMP
的泛滥程度,
导致了在一个数据包产生成千的
ICMP
数据包发送
到一个根本不需要它们的主机中去,传输多重信息包的服务器用作
Smurf
的放大器。
图
2 Smurf
攻击图
3Fraggle
:
Fraggle
基本概念及做法像
Smurf,
但它是采用
UDP echo
讯息。
如何阻挡
“
拒绝服务
”
的攻击
阻挡
“
拒绝服务
”
的攻击的常用方法之一是:
在网络上建立一个过滤器
(
filter
)
或侦测器
(
sniffer
)
,
在信息到达网站服务器之前阻挡信息。过滤器会侦察可疑的攻击行动。如果某种可疑行动经常
出现,过滤器能接受指示,阻挡包含那种信息,让网站服务器的对外连接线路保持畅通。
DDoS
:
DDoS(Distributed Denial of Service)
其中文含义为分布式拒绝服务攻击。
Distributed
DoS
是黑客控制一些数量的
PC
机或路由器,用这些
PC
机或路由器发动
DoS
攻
击。因为黑客自己的
PC
机可能不足够产生出大量的讯息,使遭受攻击的网络服务器处理能力
全部被占用。
黑客采用
IP
Spoofing
技术,令他自己的
IP
地址隐藏,所以很难追查。如果是在
Distributed
DoS
情况下,被追查出来的都是被黑客控制的用户的
IP
地址;他们本身也是受害者。1、服务器连接不到,网站也打不开
如果网站服务器被大量DDoS攻击时,有可能会造成服务器蓝屏或者死机,这时就意味着服务器已经连接不上了,网站出现连接错误的情况。
2、服务器CPU被大量占用
DDoS攻击其实是一种恶意性的资源占用攻击,攻击者利用肉鸡或者攻击软件对目标服务器发送大量的无效请求,导致服务器的资源被大量的占用,因而正常的进程没有得到有效的处理,这样网站就会出现打开缓慢的情况。如果服务器某段时期能突然出现CPU占用率过高,那么就可能是网站受到CC攻击影响。
3、服务器带宽被大量占用
占用带宽资源通常是DDoS攻击的一个主要手段,毕竟对很多小型企业或者个人网站来说,带宽的资源可以说非常有限,网络的带宽被大量无效数据给占据时,正常流量数据请求很很难被服务器进行处理。如果服务器上行带宽占用率达到90%以上时,那么你的网站通常出现被DDoS攻击的可能。
4、域名ping不出IP
域名ping不出IP这种情况站长们可能会比较少考虑到,这其实也是DDoS攻击的一种表现,只是攻击着所针对的攻击目标是网站的DNS域名服务器。在出现这种攻击时,ping服务器的IP是正常联通的,但是网站就是不能正常打开,并且在ping域名时会出现无法正常ping通的情况。
如果经常发生DDoS攻击,对于网站来说是比较危险的,因此要重视DDOS攻击。防御DDoS攻击,可以使用安全狗来防护。
TCP/IP 中,对资源占杳和分配设计的一个基本原则是自觉原则。如参加 TCP通信的一方发现上次发送的数据报丢失,则主动将通信速率降至原来的一半。这样,也给恶意的网络破坏者提供了机会 c 如网络破坏者可以大量的发 IP 报,造成网络阻塞,也可以向一台主机发送大量的 SYN 包从而大量占有该主机的资源 (SYN Flood) 。这种基于资源占用造成的攻击被称为拒绝服务攻击( DOS)
IP 欺骗是指一个攻击者假冒一个主机或合法用户的 IP 地址,利用两个主机之间的信任关系来达到攻击的目的,而这种信任关系只是根据源 IP 地址来确定。所谓信任关系是指当主机 B 信任主机 A 上的 X用户时,只要 X 在 A 上登录, X 用户就可以直接登录到主机 B 上,而不需要任何口令。
IP 欺骗通常需要攻击者能构造各种形式 IP 数据包,用虚假的源 IP 地址替代自己的真实 IP 地址。如果主机之间存在基于 IP 地址的信任关系,目标主机无法检测出已经被欺骗。
防范措施
TCP 会话劫持跳过连接过程对一个已经建立的连接进行攻击。攻击者与被假冒主机和目标主机之一在同一个子网中,攻击者通过一个嗅探程序可以看到被假冒主机和目标主机之间通信的数据包。
防范措施
最主要的方法是在传输层对数据进行加密。
拒绝服务坷的目的就是使受害的服务器不能提供正常的网络服务。
当开放了一个TCP端口后,该端口就处于Listening状态,不停地监视发到该端口的Syn报文,一旦接收到Client发来的Syn报文,就需要为该请求分配一个TCB(Transmission Control Block),通常一个TCB至少需要280个字节,在某些 *** 作系统中TCB甚至需要1300个字节,并返回一个SYN ACK命令,立即转为SYN-RECEIVED即半开连接状态,而 *** 作系统在SOCK的实现上最多可开启半开连接个数是一定的。
从以上过程可以看到,如果恶意的向某个服务器端口发送大量的SYN包,则可以使服务器打开大量的半开连接,分配TCB,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被相应。而攻击发起方的资源消耗相比较可忽略不计。
防范措施
从上图(左图)中可以看出,防火墙在确认了连接的有效性后,才向内部的服务器(Listener)发起SYN请求,在右图中,所有的无效连接均无法到达内部的服务器。
采用这种方式进行防范需要注意的一点就是防火墙需要对整个有效连接的过程发生的数据包进行代理,如下图所示:
因为防火墙代替发出的SYN ACK包中使用的序列号为c,而服务器真正的回应包中序列号为c’,这其中有一个差值|c-c’|,在每个相关数据报文经过防火墙的时候进行序列号的修改。
TCP Safe Reset技术:
这也是防火墙Syn代理的一种方式,其工作过程如下图所示:
这种方法在验证了连接之后立即发出一个Safe Reset命令包,从而使得Client重新进行连接,这时出现的Syn报文防火墙就直接放行。在这种方式中,防火墙就不需要对通过防火墙的数据报文进行序列号的修改了。这需要客户端的TCP协议栈支持RFC 793中的相关约定,同时由于Client需要两次握手过程,连接建立的时间将有所延长。
死亡之 Ping 是利用 ICMP 协议的一种碎片攻击 。攻击者发送一个长度超过 65 535Byte 的 Echo Request 数据包,目标主机在重组分片的时候会造成事先分配的 65 535 Byt 字节缓冲区溢出,系统通常会崩愤或挂起
IP 数据包的最大长度是 65 535 (2 16 - 1) Byte,其中包括包头长度(如果 IP 选项末指定,一般为 20 B)超过 MTU( Maximum Transmission Unit) 的数据包被分割成小的数据包,在接受端重新组装。一般以太网的MTU 为 11500 Byte ,互联网上的 MTU 通常是 576 Byte ICMP 回应请求放在 IP 数据包中,其中有 8 Byt 的 ICMP头信息,接下来是 "Ping" 请求的数据宇节的数目。因此数据区所允许的最大尺寸为 65 535 - 20 - 8 = 65 507Byte
分段后的 IP 包要在接收端的 IP 层进行重组,这样"死亡之 Ping"就可以再发送一个回应请求数据包,使它的数据包中的数据超过 65 507 Byte ,使得某些系统的 IP 分段组装模块出现异常。因为在 IP 分段组装的过程中,它通过每一个 IP 分段中的偏移量来决定每一个分段在整个 IP 包中的位置,最后一个分段中,如果 IP 包的长度大于 65 507 Byte各个分段组装后就会超过 IP 包的最大长度。某些 *** 作系统要等到将所有的分段组装完后才对 IP 包进行处理,所以就存在这样一种内部缓冲区或内部变量溢出的可能性,这样会导致系统崩愤或重启。
防范措施
在 TCP 包中有 6 个标志位来指示分段的状态。其中 RST 用来复位一个连接, FIN 表示没有数据要发送了攻击者经常利用这两个标志位进行拒绝服务攻击。他们先分析通过目标主机和受骗主机之间的 IP 数据包,计算出从受骗主机发往目标主机的下一个 TCP 段的序列号,然后产生一个带有 RST 位设置的 TCP 段,将其放在假冒源 IP 地址的数据包中发往目标主机,目标主机收到后就关闭与受骗主机的连接。
利用 FIN 位的攻击与 RST 位的攻击很相似。攻击者预测到正确的序列号后,使用它创建一个带 FIN 位的 TCP 分段,然后发送给目标主机,好像受骗主机没有数据要发送了,这样,由受骗主机随后发出的 TCP 段都会目标主机认为是网络错误而忽略。
通过地址欺骗,并使用回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行。最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞
用一个特别打造的SYN包,其原地址和目标地址都被设置成某一个服务器地址。此举将导致服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都将保留,直到超时
防御方法:
这类攻击的检测方法相对来说比较容易,因为可以直接通过判断网络数据包的源地址和目标地址是否相同确认是否属于攻击行为。反攻击的方法当然是适当地配置防火墙设备或制定包过滤路由器的包过滤规则,并对这种攻击进行审计,记录事件发生的时间、源主机和目标主机的MAC地址和IP地址,从而可以有效地分析并跟踪攻击者的来源。
UDP不需要像TCP那样进行三次握手,运行开销低,不需要确认数据包是否成功到达目的地。这就造成UDP泛洪攻击不但效率高,而且还可以在资源相对较少的情况下执行。UDP FLOOD可以使用小数据包(64字节)进行攻击,也可以使用大数据包(大于1500字节,以太网MTU为1500字节)进行攻击。大量小数据包会增大网络设备处理数据包的压力;而对于大数据包,网络设备需要进行分片、重组,最终达到的效果就是占用网络传输接口的带宽、网络堵塞、服务器响应慢等等。
防御方案: 限制每秒钟接受到的流量(可能产生误判);通过动态指纹学习(需要攻击发生一定时间),将非法用户加入黑名单。
“teardrop”,又称“泪滴”:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动,达到攻击者需要的拒绝服务的目的。
“DoS”是Denial of Service,拒绝服务的缩写。所谓的拒绝服务是当前网络攻击手段中最常见的一种。它故意攻击网络协议的缺陷或直接通过某种手段耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务停止响应甚至崩溃,而最值得注意的是,攻击者在此攻击中并不入侵目标服务器或目标网络设备,单纯利用网络缺陷或者暴力消耗即可达到目的。
从原理上来说 ,无论攻击者的攻击目标(服务器、计算机或网络服务)的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。任何资源都有一个极限,所以攻击者总能找到一个方法使请求的值大于该极限值,导致所提供的服务资源耗尽。
从技术分类的角度上来说 ,最常见的DoS攻击有对计算机网络的带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法用户的请求无法通过。连通性攻击指用大量的连接请求冲击服务器或计算机,使得所有可用的 *** 作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。
在网络还不发达的时候,单一的DoS攻击一般是采用一对一的方式,也就是攻击者直接利用自己的计算机或者设备,对攻击目标发起DoS攻击。当攻击目标处在硬件性能低下、网络连接情况不好等情况的时候,一对一的DoS攻击效果是非常明显的,很有可能直接一个攻击者就搞定一个网站或者一个服务器,让它拒绝服务。
随着计算机和网络技术的发展,硬件设备的处理性能加速度增长,成本也变得非常低廉,网络的快速发展更是让带宽、出入口节点宽度等大大的提升,这让传统的DoS攻击很难凑效。
随着这样情况的出现,攻击者研究出了新的攻击手段,也就是DDoS。
DDoS是在传统的DoS攻击基础之上产生的一种新的攻击方式,即Distributed Denial Of Service,分布式拒绝服务攻击。
如果说计算机与网络的处理能力比以往加大了10倍的话(示例数据,没有实质意义),那攻击者使用10台计算机同时进行攻击呢?也就达到了可以让目标拒绝服务的目的。简单来说,DDoS就是利用更多的计算机来发起攻击。
就技术实现方式来分析,分布式拒绝服务攻击就是攻击者利用入侵手段,控制几百台,或者成千上万台计算机(一般被控制的计算机叫做傀儡主机,或者口头被网络安全相关人员称为“肉鸡”),然后在这些计算机上安装大量的DDoS程序。这些程序接受来自攻击者的控制命令,攻击者同时启动全部傀儡主机向目标服务器发起拒绝服务攻击,形成一个DoS攻击群,猛烈的攻击目标,这样能极为暴力的将原本处理能力很强的目标服务器攻陷。
通过上面的分析,可以看出DDoS与DoS的最大区别是数量级的关系,DoS相对于DDoS来说就像是一个个体,而DDoS是无数DoS的集合。另一方面,DDoS攻击方式较为自动化,攻击者可以把他的程序安装到网络中的多台机器上,所采用的这种攻击方式很难被攻击对象察觉,直到攻击者发下统一的攻击命令,这些机器才同时发起进攻。可以说DDoS攻击是由黑客集中控制发动的一组DoS攻击的集合,现在这种方式被认为是最有效的攻击形式,并且非常难以抵挡。
502 Bad Gateway是指错误网关,无效网关。
1、简单来说502是报错类型代码badgateway错误的网关。
2、产生错误的原因,连接超时我们向服务器发送请求与服务器当前链接太多,导致服务器方面无法给予正常的响应,产生此类报错。
3、解救的办法:最好的解决办法当然还是在服务器上做,但对大家来说不太现实,所以我能做的其实很简单,就是刷新(不过不是一般的刷新)。
刷新的原理:很多人可能不知道刷新也是有两种的。所谓刷新其实就是从服务下载数据到本地的硬盘浏览器,再从本地硬盘中读取数据到浏览器显示给我们看。
①基本刷新:
就是点击刷新后者使用F5快捷键,基本刷新只是从本地的硬盘重新拿取数据到浏览器,并不重新向服务器发出请求。大部分用户很多时候都是这样刷新的,遇到502报错就没有任何效果。
②从服务器刷新:
如果你重新直接点击你想要浏览的网页链接,你会发现刚才还是显示502badgetway的页面现在又可以正常浏览了!当你点击你想要浏览的网页链接的时候,是会从服务器重新下载数据的。解决方法就是从服务器上刷新:快捷键ctrl+F5(windows)command+R (Mac),这样就是重新向服务器发送请求了。
三次握手的流程图:
在网络数据传输中,传输层协议TCP(传输控制协议)是建立连接的可靠传输,TCP建立连接的过程,我们称为三次握手。
第一次,客户端向服务器发送SYN同步报文段,请求建立连接
客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次,服务器确认收到客户端的连接请求,并向客户端发送SYN同步报文,表示要向客户端建立连接
服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次,客户端收到服务器端的确认请求后,处于建立连接状态,向服务器发送确认报文
客户端发包,服务端收到了。
这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
因此,需要三次握手才能确认双方的接收与发送能力是否正常。
无法确认客户端的接收能力。
假设第二次握手的报文丢失了,或者是说有人恶意向服务器不断发送SYN同步报文(SYN洪水)。那么服务器端就会有大量的无效连接,服务器处理连接的数量是有限的,当有大量的无效连接建立后,服务器处理有效连接是能力就会受限,且建立连接会消耗大量是资源,至此有可能导致服务器崩溃。
因为三次已经足够确认双方的发送和接收的能力了,四次以及四次以上当然就没必要啦
可以,但是只有第三次,此时的established状态相对安全并且够确认服务器的接收发送能力。但是,第一次、第二次握手不可以携带数据
为什么这样呢大家可以想一个问题,假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据。因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话,这会让服务器花费很多时间、内存空间来接收这些报文。
也就是说,第一次握手不可以放数据,其中一个简单的原因就是会让服务器更加容易受到攻击了。而对于第三次的话,此时客户端已经处于 ESTABLISHED 状态。对于客户端来说,他已经建立起连接了,并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据也没啥毛病。
服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列。
当然还有一个全连接队列,就是已经完成三次握手,建立起连接的就会放在全连接队列中。如果队列满了就有可能会出现丢包现象。
SYN Flood 属于典型的 DoS/DDoS 攻击。其攻击的原理很简单,就是用客户端在短时间内伪造大量不存在的 IP地址,并向服务端疯狂发送SYN。对于服务端而言,会产生两个危险的后果:
处理大量的SYN包并返回对应ACK, 势必有大量连接处于SYN_RCVD状态,从而占满整个半连接队列,无法处理正常的请求。
由于是不存在的 IP,服务端长时间收不到客户端的ACK,会导致服务端不断重发数据,直到耗尽服务端的资源。
增加 SYN 连接,也就是增加半连接队列的容量。
减少 SYN + ACK 重试次数,避免大量的超时重发。
利用 SYN Cookie技术,在服务端接收到SYN后不立即分配连接资源,而是根据这个SYN计算出一个Cookie,连同第二次握手回复给客户端,在客户端回复ACK的时候带上这个Cookie值,服务端验证Cookie 合法之后才分配连接资源。
下面来看看四次挥手的流程图:
中断连接端可以是客户端,也可以是服务器端。
不像建立连接的过程,服务器端在调用了accept()之后,剩下的都交给内核来处理,用户空间不用做什么,断开连接是,A端调用close()关闭文件描述符后,A端就停止发送数据了进行发送,B端收到后结束报文段之后,的得知A端要断开连接了,但是B端可能有自己还没有处理完的数据,不能立即断开连接,就要先给出回复,表示自己已经收到消息了,然后将自己的数据处理完之后,可以断开连接的时候,再调用close()发出断开连接请求,在收到A端的确认回复之后,断开连接,一共需要四次挥手。
MSL是 最长报文段寿命,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
2MSL等待状态:它是任何报文段被丢弃前在网络内的最长时间。
(1)保证客户端发送的最后一个ACK报文段能够到达服务端。
(2)防止“已失效的连接请求报文段”出现在本连接中。
客户端在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现这种旧的连接请求报文段。
上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况,
具体流程如下图:
参考资料:
一篇文章带你熟悉 TCP/IP 协议
「计算机网络」前端必备知识,看到就是赚到系列(上)
什么是三次握手、四次挥手
面试官,不要再问我三次握手和四次挥手
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)