您的位置:首页 > 理论基础 > 计算机网络

网络安全知识之DDOS介绍

2017-12-03 21:39 323 查看




一. 神马是DDOS?——野蛮且残忍的攻击方式

      DOS:DOS的全称是Denial of Service,意思是拒绝服务。其目的就是通过各种手段,使网络或者计算机无法提供正常服务。

      DDOS:DDOS攻击就是高级的DOS攻击,全称是Distributed Denial of Service,意思是分布式拒绝访问攻击。随着计算机科技的发展,服务器的性能也再不断的提升,靠单一的机器来对服务器进行DOS攻击已经杯水车薪,所以出现了分布式DOS攻击,即利用成千上万的机器来对服务器发起DOS攻击,这些成千上万的机器被成为“肉鸡”。

      DDOS的比喻:譬如有一个黑客想攻击你家的电话,那么他可以找来几百个人同时给你家打电话,这样正常用户想联系你时会一直占线,可以理解为 你的电话遭遇了“DDOS攻击”。


二. 发生在身边的DDOS——比特币交易网站崩溃

      亲身经历:

      2013.11.21:我入手莱特币(简称LTC,比特币的兄弟)。入手时60元一个,买了1w的。交易网站是 中国最大的LTC交易平台 OKCOIN。

      2013.11.29:LTC疯涨到380元一个,1w变成了4w。周围的同事都疯了一样,紧紧握住手中的币,深深相信LTC的价格将直奔1000元。

      2013.12.10:OKCOIN交易网站出现了无法访问的现象,随后OKCOIN官方微博发布声明:OKCOIN正在遭受DDOS攻击,用户的资金不受影响,稍安勿躁。LTC的价格开始下跌。

      2013.12.15:央行发表正式声明,声明称:虚拟货币不是
4000
货币,之后将禁止其买卖。BTC和LTC的价格开始大跌。LTC从200+降到40而后反弹回150,这期间只用了3-4个小时。

      2013.12月底:OKCOIN交易网站又遭受了几次DDOS的攻击,不过此时的用户的心理素质已经变强,攻击后价格波动不大。趁着价格波动,又入手1w。

      2014.初:LTC价格仍旧居高不下,央行又陆续发表了n次声明。

      2014.中:LTC价格终于跌回20元。当时有朋友说,LTC终究会涨回去的,我半信半疑。

      2015年今天:LTC价格仍旧在20元左右徘徊。算了算,赔了1w。

      结论:在金融的世界,技术DDOS神马的都是浮云,政策才是王道。珍爱生命,远离虚拟货币。


三. 小试牛刀——Target is CRM

      实验原理:利用slowloris脚本来对Apache进行攻击

      实验方法:

      1. 在192.168.22.194的8082端口上布置CRM的服务

      2. 在192.168.22.194上布置Apache服务,默认在80端口监听,并设置转发规则如下:

          ProxyPass / http://127.0.0.1:8082/

          ProxyPassReverse / http://127.0.0.1:8082/

      3. 访问http://192.168.22.194/,可以正常访问CRM服务

      4. 在192.168.11.243,运行attack.sh

      5. 再次访问http://192.168.22.194/,观察效果

      6. 在192.168.22.194上运行netstat -anpt | grep 80,观察效果


四. 琳琅满目的攻击方式——DDOS的原理及工具

      1. DDOS攻击原理

          一个比较完善的DDOS攻击体系,分为4大部分,如下图:

          


      2. DDOS攻击方式

          (1) 畸形HTTP请求

               原理:此种攻击方式利用Web Server的设计缺陷,以极低的速度往服务器发送Http请求,但是该请求是畸形的:正常的Http请求以两个\r\n表示头部的结束,攻击者只发送一个。这时Web Server认为该请求的头部尚未结束,保持连接不放。这样一来,Web Server将会保持大量的恶意连接,而Web Server对于并发的连接数都是有上限的(Apache默认是256),当达到上限时,将无法提供正常服务。

               工具:Slowloris(Perl编写),就是利用这个原理来进行攻击。

          (2) SYN FLOOD

               原理:SYN FLOOD利用TCP三次握手的固有漏洞来进行攻击。攻击机器向目标机发送SYN(第一次握手)后,不接收服务器返回的ACK并给与回应,这种情况下,服务器一般会重试并等待一段时间后再丢弃这个连接,等待的时间是分钟级(30s-2min)。当攻击者向服务器大量发送这种SYN包,并且不做回应时,服务器将维护一个非常巨大的半连接列表并忙于重试,消耗大量的资源而导致无法提供正常服务。

               工具:TFN2K(C语言编写)和LOIC(低轨道离子炮,C#编写),都提供了SYN FLOOD的攻击模式。

          (3) HTTP FLOOD

               原理:利用大量的“肉鸡”,向服务器发送http请求。当请求量达到一定QPS时,服务将崩溃。当请求的后天处理涉及数据库请求时,往往瓶颈会出现在数据库;当不涉及数据库时,瓶颈会出现在web容器(jetty)。

               工具:LOIC,任意打压工具。

          (4) PING FLOOD

               原理:PING是通过发送ICMP报文来探寻网络主机是否存在的一个工具。由于ICMP基于无连接,所以主机A可以伪装成主机B向主机C发送ICMP报文,那么主机C会将回应发送到主机B,A不受任何影响。当服务器接收到大量的PING时,有可能会崩溃,瓶颈可能出现在 服务器资源 或 网络带宽。

               工具:TFN2K提供了PING FLOOD模式。


五. 人无远虑,必有近忧——如何防范

      1. 被DDOS时攻击的现象

          (1) 服务响应变慢甚至无法响应

          (2) 被攻击的服务器上充斥着大量的TCP连接,大多数处于SYN_RECV和TIME_WAIT状态

                查看方法:netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

          (3) 网络中充斥着大量的无用数据包

          (4) 服务器CPU占有率很高

      2. 防御方法

          (1) 防火墙

                如果能够通过netstat观察出攻击者的IP特征,可以用iptables临时封掉最大嫌疑的ip或ip段。

          (2) 调整服务配置

                (i) 修改tcp_synack_retries,减少服务器收到SYN包后的重试次数——针对SYN FLOOD

                (ii) 减小TCP的SYN的半连接的超时时间——针对SYN FLOOD

                (iii) 增大Apache或nginx的并发连接数量——针对畸形HTTP请求

          (3) 加机器

                对于HTTP FLOOD的攻击方式,最简单的方法就是加机器,以暴制暴,看谁耗得过谁,毕竟攻击者的资源也是有限的。

          (4) 取消域名绑定

                一般攻击者是根据域名来对一个服务进行攻击,所以取消域名绑定,可以让攻击者失去目标,同时通知你的用户通过ip访问服务。

          (5) nginx限制客服端的访问频次

                可参考:http://www.aichengxu.com/view/38512

          (6) 第一个也是最重要的是:联系运维!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: