什么是DDoS?
DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。分布式拒绝服务攻击一旦被实施,攻击网络包就会从很多DOS攻击源(俗称肉鸡)犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等。
关于DDos攻击的常见方法
1、 SYN Flood:利用TCP协议的原理,这种攻击方法是经典最有效的DDOS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK 包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务。TCP通道在建立以前,需要三次握手:
a. 客户端发送一个包含SYN标志的TCP报文, 同步报文指明客户端所需要的端口号和TCP连接的初始序列号
b. 服务器收到SYN报文之后,返回一个SYN+ ACK报文,表示客户端请求被接受,TCP初始序列号加1
c.客户端也返回一个确认报文ACK给服务器,同样TCP序列号加1
d. 如果服务器端没有收到客户端的确认报文ACK,则处于等待状态,将该客户IP加入等待队列,然后轮训发送SYN+ACK报文
所以攻击者可以通过伪造大量的TCP握手请求,耗尽服务器端的资源。
2、HTTP Flood:针对系统的每个Web页面,或者资源,或者Rest API,用大量肉鸡,发送大量http request。这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。缺点是对付只有静态页面的网站效果会大打折扣。
3、慢速攻击:Http协议中规定,HttpRequest以\r\n\r\n结尾来表示客户端发送结束。攻击者打开一个Http 1.1的连接,将Connection设置为Keep-Alive, 保持和服务器的TCP长连接。然后始终不发送\r\n\r\n, 每隔几分钟写入一些无意义的数据流, 拖死机器。
4、P2P攻击:每当网络上出现一个热门事件, 精心制作一个种子, 里面包含正确的文件下载, 同时也包括攻击目标服务器的IP。这样,当很多人下载的时候, 会无意中发起对目标服务器的TCP连接。
DDOS攻击现象判定方法
1.SYN类攻击判断:A.CPU占用很高;B.网络连接状态:netstat –na,若观察到大量的SYN_RECEIVED的连接状态;C.网线插上后,服务器立即凝固无法操作,拔出后有时可以恢复,有时候需要重新启动机器才可恢复。
2.CC类攻击判断:A.网站出现service unavailable提示;B.CPU占用率很高;C.网络连接状态:netstat –na,若观察到大量的ESTABLISHED的连接状态 单个IP高达几十条甚至上百条;D.用户无法访问网站页面或打开过程非常缓慢,软重启后短期内恢复正常,几分钟后又无法访问。
3.UDP类攻击判断:A.观察网卡状况 每秒接受大量的数据包;B.网络状态:netstat –na TCP信息正常。
4.TCP洪水攻击判断:A.CPU占用很高;B.netstat –na,若观察到大量的ESTABLISHED的连接状态 单个IP高达几十条甚至上百条
netstat命令判断服务器是否受到攻击
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
1、显示所有活动的网络连接。
netstat -na
2、显示所有80端口的网络连接并排序。这里的80端口是http端口,所以可以用来监控web服务。如果看到同一个IP有大量连接的话就可以判定单点流量攻击了。
netstat -an | grep :80 | sort
3、查找出当前服务器有多少个活动的 SYNC_REC 连接。正常来说这个值很小,最好小于5。 当有Dos攻击或者邮件炸弹的时候,这个值相当的高。尽管如此,这个值和系统有很大关系,有的服务器值就很高,也是正常现象。
netstat -n -p|grep SYN_REC | wc -l
4、列出所有连接过的IP地址。
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
5、列出所有发送SYN_REC连接节点的IP地址。
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
6、计算每个主机连接到本机的连接数。
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
7、列出所有连接到本机的UDP或者TCP连接的IP数量。
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
8、检查 ESTABLISHED 连接并且列出每个IP地址的连接数量。
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
9、列出所有连接到本机80端口的IP地址和其连接数。80端口一般是用来处理HTTP网页请求。
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
如何减少DOS攻击
一旦你获得攻击服务器的IP地址你就可以使用以下命令拒绝此IP的所有连接。
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
注意,你需要将 $IPADRESS 替换成需要拒绝连接的IP地址。
执行完以上命令后,使用以下命令结束所有的httpd连接以清理系统。
killall -KILL httpd
然后执行以下命令重启httpd服务
systemctl restart httpd
本文深入解析DDoS(分布式拒绝服务)攻击,介绍其工作原理、常见类型如SYN Flood、HTTP Flood及慢速攻击,以及如何通过netstat命令判断服务器受攻击情况。同时,提供减少DOS攻击的有效策略。
1609

被折叠的 条评论
为什么被折叠?



