【转】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

原文地址:https://www.cnblogs.com/ftl1012/p/9569111.html

时间: 2024-11-10 14:35:52

【转】Linux下从TCP状态机,三次握手判断DDOS攻击的相关文章

linux下查看uuid的三种方法及使用uuid的作用

查看设备的uuid的三种方法,总结如下: 1 命令查看:blkid2 文件查看:ls -l /dev/disk/by-uuid3 命令查看:vol_id /dev/sda1 UUID的作用及意义 1:它是真正的唯一标志符 UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的.如果你在系统中启动的时候,使用盘符挂载时,可能找不到设备而加载失败,而使用UUID挂载时,则不会有这样的问题. 2:设备名并非总是不变的 自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺

简析TCP的三次握手与四次分手

TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层:在第二层上的数据,我们把它叫Frame,在第三层上的数据叫Packet,第四层的数据叫Se

简析TCP的三次握手与四次分手(TCP协议头部的格式,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端)good

2014-10-30 分类:理论基础 / 网络开发 阅读(4127) 评论(29) TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层:在第二

大杂烩 -- 简析TCP的三次握手与四次分手

基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层

TCP的三次握手与四次挥手

最近在看一些Tcp网络编程方面的内容,不免涉及客户端和服务器交互的内容,其中最经典的应该是TCP的三次握手和四次挥手了. 背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据.IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程.而端到端的通信才应该是应用进程之间的通信. UDP,在传送数据前不需要先建立连接,远地的主机在

TCP/IP 三次握手

网络连接状态 网络连接状态非常重要这里既包含三次握手中的也包括四次断开中的,所以要熟悉. 状态 说明 LISTEN 首先服务器需要打开一个socket进行监听,监听来自远方TCP端口的连接请求 SYN_SENT 表示主动连接,客户端能通过应用程序调用connect()函数进行active open.于是客户端TCP发送一个SYN以请求建立一个连接,之后状态为SYN_SEND,表示已发送一个SYN到服务器端,等待SYN 1+ACK 0响应. SYN_RECV 服务器端收到客户端的SYN 1+ACK

TCP的三次握手、四次挥手--非常详细讲解

TCP(Transmission Control Protocol) 传输控制协议 1?TCP三次握手和四次挥手的过程图 tcp的6种标志位的分别代表: SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Acknowledge number(确认号码) 客户端TCP状态迁移:CLOSED->SYN_SENT-

网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法

TCP协议:三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立连接的请求 3:客户端接收到服务端发来的请求,返回接成功给服务端,完成双向连接 第一客戶向服务端发送请求,请求建立连接 服务端同客户端的请求,并同时向客户端发送建立 连接的请求,最后客户端同意后建立 双向连接. C ----> S C <---- S - 反馈机制: 客户端往服务端发送请求,服务端必须返回响应, 告诉客户

TCP的三次握手以及TCP状态转换图详解

今天来讨论一下TCP的三次握手以及TCP的状态转换图.首先发一个三次握手的流程图如下: 圖 2.4-3.三向交握之封包连接模式A:封包发起当用戶端想要对服务器端发起连接时,就必須要送出一個要求连线的封包,此时用戶端必须随机取用一個大于1024 以上的端口來做为程序通信的通道.然后在 TCP 的表头当中,必须带有 SYN 的主动连线(SYN=1),並并且记下发送给服务器端的序列号(Sequence number = 10001) .B:封包接收与确认封包发送当服务器端收到这个包,并且确定要接受这个