从TCP状态机判断DDOS攻击html
TCP 协议是传送层的核心协议,提供了可靠面向链接的协议,分为三次握手和四次断开,在这个过程当中TCP有个状态机,记录不一样阶段的状态。java
这里不着重介绍三次握手和四次断开,只是附加一个图解,这部分详细内容你们自行脑补:参考连接:https://blog.csdn.net/qzcsu/article/details/72861891 web
2.1 握手协议: 服务器
2.2 断开过程 网络
在协议创建和断开过程,tcp协议一直要维护一个状态,咱们称为tcp的状态机。具体状况见下图: tcp
3.1 握手过程状态 .net
为了方便理解,简单举个例子,某饭店8点以前是未开业,关门状态(closed 状态),八点以后开门营业,等待客人关顾(listen状态),客户进店点菜(SYS_SEND),老板收到并确认(SYS_RCVD), 客户说没错能够上菜,而后双方进入(Established)状态。 htm
3.2 断开过程状态 blog
形象理解为:客人吃饭要离开,喊老板结帐(fin wait1), 老板说你等一下我找你钱(closeing),客户收到检查是否正确(fin wait2),确认无误而后彼此断开(closed)排序
DDOS网络攻击的方式不少,有应用层ddos也有网络层的,本文只讨论网络层造成的ddos攻击类型,上文咱们讲述状态机,就很是好理解了,大量的半打开的连接,占用了大量的网络带宽,从而达到了DOS的目的。
4.1 半打开
发生在TCP3次握手中。
若是A向B发起TCP请求,B也按照正常状况进行响应了,可是A不进行第3次握手,这就是半链接
4.2半关闭
当一方关闭发送通道后,仍可接受另外一方发送过来的数据,这样的状况叫“半关闭”。(拆除TCP链接是:你关闭你的发送通道,我关闭个人发送通道)。
netstat -na
显示全部链接到服务器的活跃的网络链接
netstat -an | grep :80 | sort
只显示链接到80段口的活跃的网络链接,80是http端口,这对于web服务器很是有用,而且对结果排序.对于你从许多的链接中找出单个发动洪水攻击IP很是有用
netstat -n -p|grep SYN_REC | wc -l
这个命令对于在服务器上找出活跃的SYNC_REC很是有用,数量应该很低,最好少于5.
在dos攻击和邮件炸弹,这个数字可能很是高.然而值一般依赖于系统,因此高的值可能平分给另外的服务器.
netstat -n -p | grep SYN_REC | sort -u
列出全部包含的IP地址而不单单是计数.
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
列出全部不一样的IP地址节点发送SYN_REC的链接状态
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
使用netstat命令来计算每一个IP地址对服务器的链接数量
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
列出使用tcp和udp链接到服务器的数目
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
检查ESTABLISHED链接而不是全部链接,这能够每一个ip的链接数
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
显示而且列出链接到80端口IP地址和链接数.80被用来做为HTTP