几种针对DNS的DDoS攻击应对方法
DDoS攻击是指通过僵尸网络利用各种服务请求耗尽被攻击网络的系统资源,造成被攻击网络无法处理合法用户的请求。
而针对DNS的DDoS攻击又可按攻击发起者和攻击特征进行分类:1、按攻击发起者分类 僵尸网络:控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求 模拟工具:利用工具软件伪造源IP发送海量DNS查询2、按攻击特征分类 Flood攻击:发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS 查询请求。
资源消耗攻击:发送大量非法域名查询报文引起DNS服务器持续进行迭代查询,从而达到较少的攻击流量消耗大量服务器资源的目的。
处理办法:屏蔽未经请求发送的DNS响应信息一个典型的DNS交换信息是由请求信息组成的。
DNS解析器会将用户的请求信息发送至DNS服务器中,在DNS服务器对查询请求进行处理之后,服务器会将响应信息返回给DNS解析器。
但值得注意的是,响应信息是不会主动发送的。
服务器在没有接收到查询请求之前,就已经生成了对应的响应信息,回应就被丢弃丢弃快速重传数据包。
1.即便是在数据包丢失的情况下,任何合法的DNS客户端都不会在较短的时间间隔内向同一DNS服务器发送相同的DNS查询请求。
2.如果从相同IP地址发送至同一目标地址的相同查询请求发送频率过高,这些请求数据包可丢弃。
启用TTL如果DNS服务器已经将响应信息成功发送了,应该禁止服务器在较短的时间间隔内对相同的查询请求信息进行响应。
1.对于一个合法的DNS客户端如果已经接收到了响应信息,就不会再次发送相同的查询请求。
2.每一个响应信息都应进行缓存处理直到TTL过期。
3.当DNS服务器遭遇大量查询请求时,可以屏蔽掉不需要的数据包。
丢弃未知来源的DNS查询请求和响应数据通常情况下,攻击者会利用脚本来对目标进行分布式拒绝服务攻击(DDoS攻击),而且这些脚本通常是有漏洞的。
因此,在服务器中部署简单的匿名检测机制,在某种程度上可以限制传入服务器的数据包数量。
丢弃未经请求或突发的DNS请求这类请求信息很可能是由伪造的代理服务器所发送的,或是由于客户端配置错误或者是攻击流量。
所以无论是哪一种情况,都应该直接丢弃这类数据包。
非泛洪攻击 (non-flood) 时段,创建一个白名单,添加允许服务器处理的合法请求信息。
白名单可以屏蔽掉非法的查询请求信息以及此前从未见过的数据包。
这种方法能够有效地保护服务器不受泛洪攻击的威胁,也能保证合法的域名服务器只对合法的DNS查询请求进行处理和响应。
启动DNS客户端验证伪造是DNS攻击中常用的一种技术。
如果设备可以启动客户端验证信任状,便可以用于从伪造泛洪数据中筛选出非泛洪数据包。
对响应信息进行缓存处理如果某一查询请求对应的响应信息已经存在于服务器的DNS缓存之中,缓存可以直接对请求进行处理。
这样可以有效地防止服务器因过载而发生宕机。
很多请求中包含了服务器不具有或不支持的信息,我们可以进行简单的阻断设置,例如外部IP地址请求区域转换或碎片化数据包,直接将这类请求数据包丢弃。
利用ACL,BCP38,及IP信誉功能的使用托管DNS服务器的任何企业都有用户轨迹的限制,当攻击数据包被伪造,伪造请求来自世界各地的源地址。
设置一个简单的过滤器可阻断不需要的地理位置的IP地址请求或只允许在地理位置白名单内的IP请求。
还有一种情况,某些伪造的数据包可能来自与内部网络地址,可以利用BCP38通过硬件过滤也可以清除异常来源地址的请求。
BCP38对于提供DNS解析的服务提供商也相当有用,可以避免用户向外发送攻击或受到内部地址请求的攻击,过滤用户并保证其数据传输。
提供余量带宽如果服务器日常需要处理的DNS通信量达到了X Gbps,请确保流量通道不止是日常的量,有一定的带宽余量可以有利于处理大规模攻击。
结语,目前针对DNS的攻击已成为最严重的网络威胁之一。
目前越来越多的大型网站注重DNS保护这一块。
为保障网站安全,保障网站利益,选择高防型的DNS为自己的域名进行解析已经迫在眉睫。
希望可以帮到您,谢谢!
ddos攻击的常见类型有哪些?
展开全部 DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。
这种攻击方式可分为以下几种:通过使网络过载来干扰甚至阻断正常的网络通讯;通过向服务器提交大量请求,使服务器超负荷;阻断某一用户访问服务器;阻断某服务与特定系统或个人的通讯。
IP SpoofingIP欺骗攻击是一种黑客通过向服务端发送虚假的包以欺骗服务器的做法。
具体说,就是将包中的源IP地址设置为不存在或不合法的值。
服务器一旦接受到该包便会返回接受请求包,但实际上这个包永远返回不到来源处的计算机。
这种做法使服务器必需开启自己的监听端口不断等待,也就浪费了系统各方面的资源。
LAND attack这种攻击方式与SYN floods类似,不过在LAND attack攻击包中的原地址和目标地址都是攻击对象的IP。
这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。
ICMP floodsICMPfloods是通过向未良好设置的路由器发送广播信息占用系统资源的做法。
Application与前面叙说的攻击方式不同,Application level floods主要是针对应用软件层的,也就是高于OSI的。
它同样是以大量消耗系统资源为目的,通过向IIS这样的网络服务程序提出无节制的资源申请来迫害正常的网络服务。
...
洪水的洪水种类
1Smurf:smurf发生在OSI第三层,就是假冒ICMP广播ping,如果路由器没有关闭定向广播,那攻击者就可以在某个网络内对其它网络发送定向广播ping,那个网络中的主机越是多,造成的结果越是严重,因为每个主机默认都会响应这个ping,导致链路流量过大而拒绝服务,所以属于增幅泛洪攻击,当然也可以对本网络发送广播ping。
2:DDosDDos发生在OSI第三、四层,攻击侵入许多因特网上的系统,将DDos控制软件安装进去,然后这些系统再去感染其它系统,通过这些代理,攻击者将攻击指令发送给DDos控制软件,然后这个系统就去控制下面的代理系统去对某个IP地址发送大量假冒的网络流量,然后受攻击者的网络将被这些假的流量所占据就无法为他们的正常用户提供服务了。
TCP SYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。
攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,改攻击者就不对之进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。
这样更加会浪费服务器的资源。
攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。
最后应用程序泛洪发生在OSI第七层,目的是消耗应用程序或系统资源,比较常见的应用程序泛洪是什么呢?没错,就是垃圾邮件,但一般无法产生严重的结果。
其它类型的应用程序泛洪可能是在服务器上持续运行高CPU消耗的程序或者用持续不断的认证请求对服务器进行泛洪攻击,意思就是当TCP连接完成后,在服务器提示输入密码的时候停止响应。
对于大部分的攻击都能通过IDS来防御或日志分析来判断。
个人电脑受ddos防御问题
你可以看看这个国内DDOS新端 执法者DDOS单并发20gb+ 多并发可叠加,平台总流量300gb稳定多种常规攻击模式,价格实惠请百度搜索执法者DDOSd登录执法者DDOS(国内老端持续稳定)伪造服务器轮训发包保证流量输出高达300G流量
SYN Flooding的攻击原理和防范措施
说起安全,不得不说一下当前最为流行的一种 DDOS 的攻击方式,从目前看来,这种攻击仍然是危害性相当大,并且没有办法彻底防范的一种攻击方式。
而且,凡是基于 TCP 的高层应用,都有可能受到这种致命的攻击。
在“可靠的”传输层,在这里打上引号,是因为传输层并不是真正的可靠的,而只是相对的。
为什么这么说呢,因为在 2 端的通信中,如果由于通信链路的故障,或者是某一端的故障,造成了通信的异常,那么另一端是不能主动地了解到的。
打个比方说,这就好比是我汇钱给张三,用的是中国邮政的普通汇款,由于种种的原因,他们把钱在路上搞丢了,但是这个时候我并不知道钱丢了,我还在一直等张三给我打电话,告诉我钱是否到了,如果 2 个月之后,张三还是没有来电话,说钱已经收到了,按照常理来说,一个半月之前就应该收到了,那没办法,我只得再给张三汇钱,如果这次又搞丢了,我还得再汇,直到张三打电话告诉我,钱已经到了,那么可能对于张三来说,这个传输是可靠的,因为不管丢了多少次,终究他是收到了他想要的东西,但是对于我来说,我不能把丢的钱找回来,也不能自己去监视中国邮政到底是把我的钱搞丢了,还是被他们塞进自己的腰包了,我所知道的仅仅是“张三没有收到钱”,我需要再给他寄一次。
由此可以看出,TCP 的传输并不是可靠的,它存在一个等待和重传的机制,一旦数据在网络上发生丢失,它会依赖于 ACK / SYN 这些东西来进行一个重传,而且,TCP 处理程序中存在一个计时器,如果计时器发生超时,那么它就认为数据已经丢了(当然不会像上边的例子中说的是 2 个月),再去重传,那么既然要去重传,就要保证将来一旦发生超时,TCP 处理程序还能把丢失的东西找回来,那么,TCP 处理程序在收到连接请求的时候,就会要在内存中开辟一片区域来,保存 SYN 以及数据着一系列的东西。
好,现在了解到了 TCP 的可靠与不可靠的方面,现在来说一下 TCP 的 3 次握手,这个在以前的文章中已经写过了,在这里就不再多说了,在正常情况下,3 次握手的步骤如下: ISN A -------------------> B SYN/ACK A ACK A -------------------> B 在 A 向 B 发出 TCP 请求的时候,它发出一个随机的 ISN (Initial Sequence Number),B 收到后给 A 回复一个 ACK = ISN + 1,同时再回复一个自己的 SYN 号,接着会保存 A 发来的这些信息,同时再内存中开辟缓冲区进行保存,然后 A 再给 B 回复一个 ACK。
经历过这三次之后,一个端到端的 TCP 连接已经建立起来了,这是正常的情况。
但是,考虑这种情况,如果在 A 向 B 发出请求,B 给 A 回复并且开辟了资源之后,A 不再进行第三次的回复,会怎么办?这就好比说,张三收到钱了,也不给我打电话,我一等 2 个月,按照常理的话张三早该收到钱了,但是他还没来电话,没办法,我只有再去汇钱了,那么如果每一次都这样,我这里的钱是不是很快就汇完了?TCP 中也是这样,如果 A 一直在向B 发起 TCP 请求,B 也按照正常情况进行响应了,但是 A 不进行第三次的握手,造成半连接,那么 B 分配出去的内存资源就一直这么耗着,直到资源耗尽。
对于这种攻击,似乎是没有办法防范的,因为 TCP 的三次握手是协议规定死的,所有使用 TCP 协议的软件都必须遵循其规定,否则无法通信。
但是,有一种办法,似乎可以防范,那就是限制通信源的 TCP 并发连接数,例如:如果 A 在 1 秒钟之内连续产生 100 个 TCP 半连接,那么 B 就丢弃 A 所有的 TCP 信息,并且在一定时间内不再响应攻击者的释放内存资源。
这看起来似乎似乎一种行之有效的办法,可是实际并非这么简单,因为在第三层的 IP 协议是一个不可靠的协议,它的源地址可以被伪造,如果一个攻击者制造大量的伪造源地址来对受害者进行攻击,而每一个 IP 地址的 TCP 半连接只建立 3~5 次,这个时候如何防范? 基于此,一种新型的防御方式产生了—— TCP Cookie,TCP Cookie 技术针对 TCP 协议的软肋,做出了一些改进。
仍以上面的通信过程为例,在 A 向 B 发出一个 TCP 请求之后,B 并不立即为 A 的 TCP 请求分配资源,而是利用 A 发来的连接信息计算出一个 Cookie 值——取 Client 端的 IP、端口,以及 Server 端的 IP、端口,再进行一种散列算法,得到一个 Cookie,取该 Cookie 的前 24 位作为 SYN 值对对方进行回复。
当对方对这个 SYN/ACK 再次进行 ACK (ACK=SYN+1)回复的时候,利用某种算法和这个 ACK 来倒推回原来的 Cookie,如果在一定范围内符合,即认为是合法的 TCP 请求,对它进行响应,如果不符合,则认为其是非法的 TCP 请求,丢弃。
为什么说是一定范围内呢,因为 Cookie 的变化和时间有关,那么在 TCP 超时之内的所有的 ACK 都应该是合法的,那么在倒推回去的时候,只要得到的 Cookie 和原来的 Cookie 在一个合法的时间段内相符,就认为是合法的。
这种 TCP Cookie 技术并不是无懈可击的,首先,如果攻击者大量地伪造 IP 地址进行半连接攻击,受害者会忙于计算原来的 Cookie 值而造成资源耗尽,另外,由于并发连接数太多,会造成受害者的带宽耗尽,同样也会造成拒绝服务攻击(D.o.S ...
转载请注明出处51数据库 » syn泛洪攻击的软件