DoS

  DoS(Denial of Service,拒绝服务攻击),它的原理很简单,就是用我们手里的机器去给服务器发请求,如果我们手头的服务器各方面性能都比服务器的主机的性能好,那么当我们发送大量请求给服务器,占用服务器的资源,导致服务器没有能力去处理其他用户请求。

  为了加深大家的理解,我就详细介绍DoS攻击中最有名的实现方式:Syn-Flood攻击。在具体介绍之前,我先和大家温故一下什么是三次握手。所谓的三次握手,就是在建立TCP连接的时候,客户端和服务器需要做几次通讯,确认相互之间的信息。它是保证TCP协议可靠性的重要手段之一。下面我们就来看一下它的具体流程:

  

  1、客户端(Client)首先向服务器(Server)发送连接请求,请求内容是:SYN=1 Seq=X

  2、服务器收到这个包以后,将这个数据放入到一个队列中,这个队列叫syn_table。并且发送一个返回包,作为响应,这个返回包有自己的序列号(Seq=Y),以及一个Ack,Ack的值就是客户端发来的Seq值加一;

  3、客户端收到返回信息以后,将服务器的Seq加一作为Ack又发给服务器;

  4、服务器收到这第三个包,验证没问题以后,就将这个连接放入到request_sock_queue
,三次握手完成。

  以上就是三次握手的具体流程。看到这里大家可能会有个疑问,平时我们在和服务器建立连接的时候仅仅调用connect,我们并没有进行三次握手,实际上connect这个高层概念是对三次握手的抽象,它的具体实现完成了三次握手流程。

  面对TCP的三次握手协议,攻击者应该如何发起攻击呢?攻击者首先故意发起一个握手数据包,服务器收到以后将它放入等待队列,并返回确认。其次,攻击者不再发送第3个确认包,这样一来,服务器就会进行多次重传发送(Linux系统通过tcp_synack_retries配置重传次数),消耗了大量额外开销,以及等待队列被占用,甚至于等待队列被占满,最终导致服务器不能接收客户端的请求。这就是Syn-Flood攻击。

  目前,我们是采取何种方法来解决Syn-Flood攻击的呢?第一种方法,缩短等待时间,尽早删除在等待队列中等待非法请求数据包;第二种方法是在第一次握手报文不放入等待队列,我们将一个32位的无符号整数作为第二次握手的Seq返回给客户端,该整数通过将用户请求的参数(包括请求的地址、端口等),加上服务器的一个序列号等做了一次运算得到。如果是正常用户,它在收到这个整数之后加1作为ACK返回给服务器,服务器在拿到数据后,对这个ACK减1再进行逆运算得到各个参数,最后发出去的数据进行比对,如果完全一致,说明是一个有效的响应,存放到相应的数据结构,反之则不是。通过该方法,非法请求就不能占用系统资源了。

  DDoS

  DDoS(Distributed Denial of Service,分布式拒绝服务),它是DoS家族里很难防范的一种攻击方式,攻击者首先控制大量肉鸡,然后向目标服务器发送海量请求,导致目标服务器不可用。这里我们不禁要问攻击者是如何获取大量肉鸡的呢?攻击者会对某些APP或网站植入一些恶意代码,譬如说curl www.mukedada.com,用户在使用这款APP或网站时,会自动请求www.mukedada.com这个网站,如果这款APP或网站的活跃用户数很多,那么这个网站就会受到很多莫名的请求。这就要求我们在平时上网过程中不要浏览一些不知名的网站和下载来源不明的APP。

  针对这种攻击方式,我们该如何防御呢?首先,作为用户我们尽量从正规渠道下载APP以及文明上网,尽量不让自己做肉鸡;其次,作为服务厂家,当服务器受到DDoS攻击时,我们尽量提升服务器的处理能力,当我们服务器的处理能力大于攻击者的能力时,这些攻击对服务器就不算啥事;最后,一般情况下,我们的服务器的处理能力一般低于攻击者的能力,针对这种情况,目前有以下几种方法:1.暴力方式,譬如:设置访问频率阈值,当某个IP单位时间内访问次数超过这个阈值就拒绝;对于某个服务,如果瞬时请求过大,选择直接拒绝保证其他服务的正常工作;这种方式可能导致正常用户也无法使用。2.验证码,为了防止暴露方式带来的误伤正常用户,目前服务商在收到大量请求时,会向"用户"发送验证码,如果是真实用户则会输入验证码,而是肉鸡的话,则不会,通过该方法则分辨出真实用户和肉鸡。

  DRDoS

  通过上文介绍,DDos攻击需要获取大量的肉鸡,但是获取肉鸡也越来越困难了,那目前还有没有不用控制肉鸡还能大量攻击的呢?DRDoS((Distributed Reflection Denial of Service,分布式反射拒绝服务),攻击者将不是将请求直接发送给被攻击者,而是发送给一个第三方,通过第三方中转到被攻击者,这就是"Reflection"的体现。它的流程具体如下:攻击者将请求包的源IP篡改成要被攻击者的IP,目标IP是第三方IP,那么第三方的恢复报文的目标IP就变成被攻击者的IP,这样一来,被攻击者就会收到大量请求导致服务不可用。

  

  需要注意的是:1. 攻击者往往选择的是基于UDP协议的系统,因为UDP协议是不可靠的,能够伪造源IP; 2. 攻击者往往会选择那些响应包大于请求包的服务。基于此,一般被被攻击的服务包括DNS服务、Memcached服务等。
为了加深大家理解,我就以Memecached服务为例。首先,Memcahced运行在11211端口,支持TCP和UDP一些,也就是说攻击者能够伪造源IP,同时,Memcached支持最大键值但数据对1M存储,意味着攻击者用较小的请求包让攻击者收到变大了几十倍的数据包。

  对于这种攻击,有没有方法来防范呢?首先,扩大服务器的宽带;其次,尽可能选择TCP协议;最后,对于一些被放大的返回包直接进行丢弃。

  写在最后

DoS、DDos以及DRDoS攻击手段和防范措施相关推荐

  1. 计算机网络之什么是 DoS、DDoS、DRDoS 攻击

    文章目录 计算机网络之什么是 DoS.DDoS.DRDoS 攻击? 计算机网络之什么是 DoS.DDoS.DRDoS 攻击? 这是涉及网络安全的一个知识点,DDos 还会挺常见的,如 SYN Floo ...

  2. 针对WEB服务器的攻击途径和防范措施

    对策: 1:停止运行不需要的软件 2:定期实施漏洞防范措施 3:对不需要对外公开的端口或者服务加以访问限制,      通过端口扫描确认各端口服务状态(工具:Nmap(windows版)) 4:提高认 ...

  3. 前端网路与安全:XSS和CSRF的基本概念、攻击原理以及防范措施是什么?

    一.XSS跨站脚本攻击 攻击者想尽一切办法,将可以执行的代码注入到网页中. 1.1存储型 场景:常见于带有用户保存数据的网站功能,如论坛发帖,商品评论,用户私信等. 攻击步骤: 攻击者将恶意代码提交到 ...

  4. DOS DDOS DRDOS原理

    DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Service的简写就是分布式拒绝服务,而DRDoS就是Distributed ...

  5. (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)

    历史回顾 1. 2000年2月的"电子珍珠港事件",正是互联网史上这样噩梦的集中时刻.2月7日.8日.9日连续三天,黑客对美国包括雅虎.亚马逊.国家贴现经纪公司网站.洛杉矶时报网站 ...

  6. DOS、DOS攻击、DDOS攻击、DRDOS攻击

    DOS:中文名字是拒绝服务,一切引起DOS行为的攻击被称为DOS攻击.该攻击的效果是使得计算机或者网络无法提供正常的服务.常见的DOS攻击有针对计算机网络带宽和连通性的攻击.DOS是单机与单机之间的攻 ...

  7. dos/ddos攻击与防范_ddos和dos

    文章目录 关于DOS攻击 相关攻击案例 如何防御 关于DOS攻击 DOS攻击也叫做拒绝服务攻击 其原理是 模拟正常用户访问,但访问量巨大 大量占用服务器资源,服务器负载和网络带宽等资源总是有限的 当攻 ...

  8. 反射型 DDoS 攻击的原理和防范措施

    随着僵尸网络的兴起,同时由于攻击方法简单.影响较大.难以追查等特点,分布式拒绝服务攻击(DDoS,Distributed Denial of Service)得到快速壮大和日益泛滥. 成千上万主机组成 ...

  9. DDOS为什么是黑客通俗的攻击手段呢?

    先让我们普及一下ddos通俗的概念一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?(只为举例,切勿模仿)恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法 ...

最新文章

  1. USG防火墙telnet实验
  2. window7 telnet localhost 5554
  3. ESP8266--学习笔记(八)串口源码分析
  4. nginx负载均衡的简单实现
  5. 用eval在txt中存储list,dict,tuple
  6. openshift s2i_对Openshift上的Play Framework 2应用进行故障排除
  7. 记录ie下报XMLHttpRequest: 网络错误 0x80070005, 拒绝访问。
  8. EF:oracle的number类型映射为C#的boolean类型
  9. Web前端求职必备 常见前端面试题汇总(二)
  10. python输入y继续运行_Python二三事 - 接触Python(x,y)
  11. Lua 之table的测试
  12. 【前端后端运维】Web开发人员学习路线,汇总整理
  13. 61单片机程序下载一闪而过,下载完成之后没有看到实验现象。
  14. Linux下source ./bashrc出现的command not found: shopt问题
  15. 怎样给div增加resize事件
  16. linux命令增删改查,hw_linux_study_day003,Linux系统终端中的增删改查命令
  17. densepose的IUV图像I通道数字与身体部分对应关系
  18. 主板usb接口全部失灵_主板USB接口都无法使用故障
  19. 弹幕的开发(DanmakuFlameMaster)
  20. 时钟芯片 服务器,通用实时时钟芯片

热门文章

  1. 升级Android8.0系统原来APP图标变为小机器人的问题
  2. ncre计算机职业英语,NCRE计算机职业英语一级考试样卷.doc
  3. AI实战:目标检测模型应用之生活垃圾图片分类
  4. linux 挂载fat32格式u盘
  5. 淘宝用户日志数据集的用户行为分析与用户分群
  6. 租房中介系统源码,房屋租赁管理系统源码
  7. 后N天C语言,c语言计算一个日期的下一天后N天后的日期
  8. Nextcloud整合Aria2和AriaNg、Aria2 WebUI实现离线下载
  9. 奥马电器赵国栋转让股份兜底钱包金融展期项目,奥马获国资输血
  10. 删除2345网页导航