分布式拒绝服务攻击是如何实现拒绝服务的_分布式拒绝服务攻击原理是什么

分布式拒绝服务攻击是如何实现拒绝服务的_分布式拒绝服务攻击原理是什么摘要:拒绝服务(DoS)攻击是指攻击者通过某种手段,有意地造成计算机或网络不能正常运转从而不能向合法用户提供所需要的服务或者使得服务质量降低。分布式拒绝服务(DDoS)攻击则是指处于不同位置的多个攻击者同时向一个或数个目标发起攻击,或者一个或多个攻击者控制了位于不同位置的多台机器(称为傀儡机)并利用这些机器对受害者同时实施攻击。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

摘要:拒绝服务(DoS)攻击是指攻击者通过某种手段,有意地造成计算机或网络不能正常运转从而不能向合法用户提供所需要的服务或者使得服务质量降低。分布式拒绝服务(DDoS)攻击则是指处于不同位置的多个攻击者同时向一个或数个目标发起攻击,或者一个或多个攻击者控制了位于不同位置的多台机器(称为傀儡机)并利用这些机器对受害者同时实施攻击。

一、关于分布式拒绝服务攻击技术的现状

SYNFlood是当前最流行的DoS (拒绝服务攻击)与DDoS(Distributed Denial Of Service 分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

二、分布式拒绝服务攻击原理

SYN Flood攻击的过程在TCP协议中被称为三次握手(Three-wayHandshake),而SYN Flood拒绝服务

攻击就是通过三次握手而实现的。

(1) 攻击者向被攻击服务器发送一个包含SYN标志的TCP报文,

SYN(Synchronize)即同步报文。同步报文会指明客户端使用的端口以及TCP连接的初始序号。这时同被攻击服务器建立了第一次握手。

(2) 受害服务器在收到攻击者的SYN报文后,将返回一个SYN+ACK的报文,表示攻击者的请求被接受,同时TCP序号被加一,ACK(Acknowledgment)即确认,这样就同被攻击服务器建立了第二次握手。

(3) 攻击者也返回一个确认报文ACK给受害服务器,同样TCP序列号被加一,到此一个TCP连接完成,三次握手完成。

具体原理是:TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—— 即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况就称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

SYN COOKIE防火墙是SYN cookie的一个扩展,SYN cookie是建立在TCP堆栈上的,他为linux操作系统提供保护。SYN cookie防火墙是linux的 一大特色,你可以使用一个防火墙来保护你的网络以避免遭受SYN洪水攻击。

下面是SYN cookie防火墙的原理:

client firewall server

—— ———- ——

1. SYN———– – – – – – – – — ->

2.<————SYN-ACK(cookie)

3. ACK———– – – – – – – – — ->

4. – – – – – –SYN—————>

5. <- – – – – – – – ————-SYN-ACK

6. – – – – – –ACK—————>

7. ———–> relay the——->

<———– connection<——-

1:一个SYN包从C发送到S

2:防火墙在这里扮演了S的角色来回应一个带SYN cookie的SYN-ACK包给C

3:C发送ACK包,接着防火墙和C的连接就建立了。

4:防火墙这个时候扮演C的角色发送一个SYN给S

5:S返回一个SYN给C

6:防火墙扮演C发送一个ACK确认包给S,这个时候防火墙和S的连接也就建立了

7:防火墙转发C和S间的数据

如果系统遭受SYN Flood,那么第三步就不会有,而且无论在防火墙还是S都不会收到相应在第一步的SYN包,所以我们就击退了这次SYN洪水攻击。

三、被SYNFlood攻击时的现象

1、 被攻击主机上有大量等待的TCP连接

2、 网络中充斥着大量的无用的数据包,源地址为假

3、 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯

4、 利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求

5、 严重时会造成系统死机

根据攻击对目标造成的破坏程度,攻击影响自低向高可以分为:无效(None)、服务降低(Degrade)、可自恢复的服务破坏(Self-recoverable)、可人工恢复的服务破坏(Manu-recoverable)以及不可恢复的服务破坏(Non-recoverable)。

如果目标系统在拒绝服务攻击发生时,仍然可以提供正常服务,则该攻击是无效的攻击。如果攻击能力不足以导致目标完全拒绝服务,但造成了目标的服务能力降低,这种效果称之为服务降低。而当攻击能力达到一定程度时,攻击就可以使目标完全丧失服务能力,称之为服务破坏。服务破坏又可以分为可恢复的服务破坏和不可恢复的服务破坏,网络拒绝服务攻击所造成的服务破坏通常都是可恢复的。一般来说,风暴型的DDoS攻击所导致的服务破坏都是可以自恢复的,当攻击数据流消失时,目标就可以恢复正常工作状态。而某些利用系统漏洞的攻击可以导致目标主机崩溃、重启,这时就需要对系统进行人工恢复;还有一些攻击利用目标系统的漏洞对目标的文件系统进行破坏,导致系统的关键数据丢失,往往会导致不可恢复的服务破坏,即使系统重新提供服务,仍然无法恢复到破坏之前的服务状态。

 

四、解决方法

从防御角度来说,有几种简单的解决方法:

第一种是缩短SYN Timeout时间

由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度x SYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃该连接的时间,例如设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。

第二种方法是设置SYN Cookie

就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。 可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用随机改写IP报文中的源地址,以上的方法将毫无用武之地。例如SOCK RAW返回的套接字通过适当的设置可以自己完全控制IP头的内容从而实现IP欺骗。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226591.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • firebase怎么用_firebase是什么

    firebase怎么用_firebase是什么firebase文档:https://firebase.google.com/docs/auth/web/google-signin?hl=zh-cn以下代码中firebaseConfig参数从

    2022年8月3日
    4
  • 什么叫侧面指纹识别_又见侧面指纹,四大指纹识别技术,你会如何选择?「建议收藏」

    什么叫侧面指纹识别_又见侧面指纹,四大指纹识别技术,你会如何选择?「建议收藏」原标题:又见侧面指纹,四大指纹识别技术,你会如何选择?1.正面实体指纹系统关于最早搭载正面指纹识别技术的手机,估计大家都会说是苹果公司在2013年9月发布的iPhone5s。其实最早的应该是摩托罗拉公司。只是苹果公司的影响比较大,在iPhone5s之后,将这项技术推向了颠峰,引领了潮流。之后各大手机厂商也纷纷加入了这个行列,越来越多的指纹识别手机面世。得益于苹果手机传统的HOME键,刚好可…

    2022年6月29日
    30
  • 简单介绍BASE64Encoder的使用

    简单介绍BASE64Encoder的使用BASE64Encoder其实是在jkd中的,但是默认不开放,在API中也是找不到的所以先看看怎么将其导入:右击项目–buildpath–&gt;&gt;configurebuildpath–&gt;&gt;双击Accessrules–&gt;&gt;edit–&gt;&gt;edit–&gt;&gt;修改为accessible,RulePatter…

    2022年6月15日
    285
  • c语言中图书管理系统_C语言图书管理系统源代码

    c语言中图书管理系统_C语言图书管理系统源代码目录C语言图书管理系统文件数据库(功能巨多,反复操作无bug)简介题目要求实现的功能readme代码C语言图书管理系统文件数据库(功能巨多,反复操作无bug)简介c语言的一个大作业,发上来纪念下嘿嘿。写的不是很好,很多东西都揉在一起来,不过注释写的也挺多,希望能帮到有需要的朋友。题目要求简单文件数据库-模拟图书馆管理系统涉及知识点:文件读写、内存管理、结构体定义、基本数据结构、高级格式化输入输出要求:编写一个程序模拟图书管理系统。用户分为管理员和读者两类,分别显示不同文本格式菜单,通过菜

    2022年10月7日
    0
  • 【ArcGIS二次开发】Engine界面搭建[通俗易懂]

    【ArcGIS二次开发】Engine界面搭建[通俗易懂]文章目录一、新建窗体项目WindowsAppplication(Engine)二、添加menuStrip、statusStrip和ToolbarControl控件,并设置相应的Dock属性三、用SplitContainer控件把显示区域分成三部分,并设置splitContatiner1的Orientation属性为Horizontal四、添加TabControl控件①添加TabControl控件到splitContatiner1.Panel1,并设置Dock属性为Fill②设置TabPages属性,添加一

    2022年7月23日
    5
  • 机器学习之朴素贝叶斯算法详解

    机器学习之朴素贝叶斯算法详解1-1基本流程朴素贝叶斯公式:P(A|B)=P(A)P(B|A)P(B)P(A|B)=P(A)P(B|A)P(B)P(A|B)=\frac{P(A)P(B|A)}{P(B)}一、概率基础知识:条件概率是指事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为:P(A|B),读作“在B条件下A的概率”。若只有两个事件A,B,那么:P(AB)=P…

    2022年10月23日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号