【转】Linux下从TCP状态机,三次握手判断DDOS攻击
从TCP状态机判断DDOS攻击
一、TCP协议
TCP 协议是传送层的核心协议,提供了可靠面向连接的协议,分为三次握手和四次断开,在这个过程中TCP有个状态机,记录不同阶段的状态。
二、 TCP握手和断开
这里不着重介绍三次握手和四次断开,只是附加一个图解,这部分详细内容大家自行脑补:参考链接:https://blog.csdn.net/qzcsu/article/details/72861891
2.1 握手协议:
2.2 断开过程
三、TCP的状态机
在协议建立和断开过程,tcp协议一直要维护一个状态,我们称为tcp的状态机。具体情况见下图:
3.1 握手过程状态
- CLOSED: 表示初始状态。
- LISTEN: 侦听端口状态
- SYN_RCVD: 表示接受到了SYN报文,时间短暂
- SYN_SENT: 表示发送一个SYN的报文
- ESTABLISHED:表示连接已经建立了,是一个稳定状态。
为了方便理解,简单举个例子,某饭店8点之前是未开业,关门状态(closed 状态),八点之后开门营业,等待客人关顾(listen状态),客户进店点菜(SYS_SEND),老板收到并确认(SYS_RCVD), 客户说没错可以上菜,然后双方进入(Established)状态。
3.2 断开过程状态
- FIN WAIT 1:本地的 TCP 实体发送一个 FIN 报文段并等待响应的确认
- CLOSE WAIT:服务器收到一个 FIN 报文段,它确认客户端的请求发回一个 ACK 报文段
- FIN WAIT 2 :客户端收到确认 ACK 报文段,就转移到 FIN WAIT 2 状态
- CLOSED:服务器收到最后一个确认 ACK 报文段,其 TCP 实体便释放该连接,并删除连接记录
形象理解为:客人吃饭要离开,喊老板结账(fin wait1), 老板说你等一下我找你钱(closeing),客户收到检查是否正确(fin wait2),确认无误然后彼此断开(closed)
四、半打开和半关闭
DDOS网络攻击的方式很多,有应用层ddos也有网络层的,本文只讨论网络层形成的ddos攻击类型,上文我们讲述状态机,就非常好理解了,大量的半打开的链接,占用了大量的网络带宽,从而达到了DOS的目的。
4.1 半打开
发生在TCP3次握手中。
如果A向B发起TCP请求,B也按照正常情况进行响应了,但是A不进行第3次握手,这就是半连接
4.2半关闭
当一方关闭发送通道后,仍可接受另一方发送过来的数据,这样的情况叫“半关闭”。(拆除TCP连接是:你关闭你的发送通道,我关闭我的发送通道)。
五、Netstat DOS检测
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
【转】Linux下从TCP状态机,三次握手判断DDOS攻击的更多相关文章
- TCP三次握手与DDOS攻击原理
TCP三次握手与DDOS攻击原理 作者:冰盾防火墙 网站:www.bingdun.com 日期:2014-12-09 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. ...
- linux下的tcp连接超时
最近需要写一个linux下的通信程序, 通信模块用的是Qt的QTcpSocket. 最后程序需要增加一个断网检测, 在windows下调试没问题, 拔网线, 断网口都能马上检测到, 但到了部署到lin ...
- 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
- 简析TCP的三次握手与四次分手
TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也 ...
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...
- 简析TCP的三次握手与四次挥手
TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也 ...
- 简析TCP的三次握手与四次分手【转】
转自 简析TCP的三次握手与四次分手 | 果冻想http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文 ...
- 【转载】简析TCP的三次握手与四次分手
最近在补习HTTP协议相关知识点,看到这篇讲得不错,所以转载收藏一下,同时也分享给大家.原文地址:http://www.jellythink.com/archives/705,版权归原作者所有. TC ...
- TCP/IP 三次握手
网络连接状态 网络连接状态(11种)非常重要这里既包含三次握手中的也包括四次断开中的,所以要熟悉. LISTEN 被动打开,首先服务器需要打开一个socket进行监听,监听来自远方TCP端口的连接请求 ...
随机推荐
- layer插件学习——提示层
本文是自己整理的关于layer插件的提示层的结果 一.准备工作 下载jQuery插件和layer插件,并引入插件(注意:jQuery插件必须在layer插件之前引用) 百度云资源链接: jQuery插 ...
- 初入Java后端之Servlet
初入Java后端之Servlet 后端 Servlet 什么是Servlet? Servlet实际上是一个按照Servlet规范写的Java类.是运行在Web服务端的Java应用程序.与Java程序 ...
- Apriori算法进行关联分析
设全集U = {a, b, c, d, e},其元素a,b, c, d, e称为项. 数据集: D = [ {a, b}, {b, c, d}, {d, e}, {b, c, e}, {a,b, c, ...
- GCD之Group
1.问题的提出 在上面的GCD之全局.主线程中介绍了dispatch_get_global_queue.dispatch_get_main_queue的用法,可以看到最后执行的时间在10s 左右,在上 ...
- 【angular5项目积累总结】文件上传
<div class="form-group row"> <label class="col-sm-2 col-form-label"> ...
- [原] jQuery EasyUI 1.3.4 离线API、Demo (最新)
说明 本文下载包为 jQuery EasyUI 1.3.4 离线API.Demo. API 按照分类整理做成了离线版本,文档保证和官网完全一致: Demo 按照分类整理为合集. 1.3.3版本中新增 ...
- html+ashx制作网页发布之后遇到的问题
html+ashx发布之后访问不了ashx文件.(开发时一直是对的) .NETFramework开发时是4.5,服务器上的网站是2.0的. 开始意识到这个问题,发布时选择4.5的Framework.之 ...
- angularjs学习第一天笔记
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...
- 9.C#知识点:线程初识及Thread初识(一)
知识点目录==========>传送门 线程和进程的简单概括. 1.进程就是"活动中"的程序,一个.程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实 ...
- MongoDB -的连接和使用
MongoDB 的 连接使用 在节我们将讨论 MongoDB 的不同连接方式. 启动 MongoDB 服务 在前面的,我们已经讨论了如何启动 MongoDB 服务,你只需要在 MongoDB 安装目录 ...