TCP安全,SYN Flooding 和 nmap
SYN flooding
简介:向target持续发送SYN=1的TCP报文,使target因内存满而拒绝服务。
命令:netwox 76 -i target_ip -p port
原理:TCP建立连接时,server收到SYN报文,会分配一个较大的TCB空间,存储相关信息,并进入half-opening状态。
防御:发现这种攻击后,开启SYN Cookies:echo 1 > /prop/sys/net/ipv4/tcp_syncookies
SYN Cookies原理:
在ACK到达之前不分配任何资源。收到SYN数据包时,服务器构造SYN + ACK数据包发送回客户端,该数据包中的序列号不再是随机值,
而是SYN Cookie,它根据以下规则构建:
- 前5位:t mod 32.设t是一个缓慢递增的时间戳(通常是time()逻辑上右移6个位置,这给出了64秒的分辨率)
- 中3位:表示m的编码值 .令m为服务器在SYN队列条目中存储的最大段大小(MSS)值
- 最后24位:s=Hash(server ip、port、client ip、port)
当客户端向服务器发回ACK数据包后,服务器从确认号中减去1,得到发送给客户端的 SYN cookie,并执行检验:
- 检查值t与当前时间,以查看连接是否已过期。
- 重新计算s以确定它是否确实是一个有效的SYN cookie。
- 从SYN cookie中的3位编码解码值m,然后可以使用它来重建SYN队列条目。
SYN Cookie的缺点: - 服务器仅限于8个唯一的MSS值,因为它只能以3比特编码。
- 服务器必须拒绝所有TCP选项(例如大窗口或时间戳)。
nmap
简介:扫描工具,集成了多种扫描功能
端口检测命令,nmap ip ,也称作tcp connect(-sT)扫描
原理:向目标各端口发送SYN,若目标端口open,则建立连接,若close,则收到RST,若设置SYN过滤,则无回复。
缺点:建立连接后会留下痕迹。
改进:sudo nmap ip, TCP SYN(半开-sS)扫描
原理:需要root权限,直接干预发包,在收到目标的syn+ack后,不回复ack,而是回复RST,避免连接建立。
-sF,FIN扫描,可以判断port是close还是open/filter,扫描结果是closed 或 open|filtered
-sA,ACK扫描,判断目标端口是否设置过滤。当port open/close时,收到ACK报,会回复RST。扫描结果是filtered或 unfiltered
F和A的交集可判断目标port的状态。
|target port| open | closed | filtered |
|--|--|--|--|
| -sT | SYN+ACK | RST | no reply |
| -sS | SYN+ACK | RST | no reply |
| -sA | RST | RST | no reply |
| -sF | no reply | RST | no reply |
nmap idle
与nmap比,不用自己给target发包,不留痕。利用了ip数据报标识(identifier,用于分片重组)自增1的规律(目前已修补该漏洞)。
步骤:
- hack 发SYN给zombie(僵尸,联网但没有活动的主机),zombie的RST回应中带有ip_id=1033
- hack 冒充zombie的ip,发SYN给target, 如果目标主机上该端口是开着的,那么会发送SYN+ACK,zombie收到这个数据包,会发RST;如果是关着的,会发送RST,zombie收到这个数据包,会直接忽略。
- hack 发syn给zombie,zombie的RST回复中带有ip_id,若它=1033+1,说明zombie没有与target建立连接,target为close,
若id=1033+2,说明target open,若id=1033+3,说明zombie不是真的僵尸。
原理:
- 收到SYN包时,如果port open,回复SYN+ACK,若close,则回复RST。
- 如果没有发送SYN,却收到一个SYN+ACK,会回复RST。
- 根据id自增1的规律,检测identifier,判断主机距离上一次发包之后又发了几个数据包。
参考1:
https://zhuanlan.zhihu.com/p/59750145
《TCP/IP详解》
TCP安全,SYN Flooding 和 nmap的更多相关文章
- 服务请求比较慢SYN flooding
服务请求比较慢 dmesg 查看日志,发现SYN flooding 问题,某一端口居多 内核输出“TCP: Possible SYN flooding on port”信息,在内核syncookie机 ...
- SYN flooding引发的网络故障
故障现象: 1.应用无法通过外网访问,应用服务器所在的内网网段之间(web和db数据库之间访问丢包严重)不能互相访问 其他网段正常 2.怀疑是网络设备问题,将连接该网段设备的交换机重启后故障依旧,通过 ...
- 当MySQL数据库遇到Syn Flooding
Syn攻击是最常见又最容易被利用的一种攻击手法,利用TCP协议的缺陷,发送大量伪造TCP连接请求,常用假冒的IP发来海量的SYN包,被攻击的服务器回应SYN+ACK,因为对方是假冒的IP,永远收不到包 ...
- linux kernel: possible SYN flooding on port 8080. Sending cookie
possible SYN flooding on port 7244. Sending cookie
- kernel: possible SYN flooding on port 80. Sending cookies
1. sysctl -w net.ipv4.tcp_syncookies=1 #启用使用syncookiessysctl -w net.ipv4.tcp_synack_retries=1 #降低syn ...
- TCP协议: SYN ACK FIN RST PSH URG 详解
TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给 ...
- TCP,SYN,FIN扫描
1.TCP扫描相对来说是速度比较慢的一种,为什么会慢呢?因为这种方法在扫描的时候会从本地主机的一个端口向目标主机的一个端口发出一个连接请求报文段,而目标主机在收到这个这个请求报文后: 有回复: 若同意 ...
- TCP中SYN洪水攻击
在查看TCP标识位SYN时,顺便关注了一下SYN Flood,从网上查阅一些资料加以整理,SYN洪水攻击利用TCP三次握手. 1.SYN洪水介绍 当一个系统(客户端C)尝试和一个提供了服务的系统(服务 ...
- 【TCP】SYN攻击
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确 ...
随机推荐
- openstack网络(四)-虚机流量分析
几种网络名词解释 使用LinuxBridge时虚机流量分析 VLAN FLAT Local VXLAN 使用OVS时虚机流量分析 几种网络名词解释 1.local网络:local网络是与其他网络和节点 ...
- Nginx目录结构与配置文件详解
Nginx安装 具体安装nginx请移步:[nginx部署] 安装依赖 安装pcre依赖软件 [root@ubuntu ~]# yum install -y pcre pcre-devel //外网情 ...
- BZOJ [HNOI2006]鬼谷子的钱袋
1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5367 Solved: 3646[Submit][St ...
- Django 09
目录 多对多三种创建方式 全自动 纯手撸 半自动(推荐) form组件 校验数据 渲染标签 展示错误信息 validators校验器 钩子函数 补充 多对多三种创建方式 全自动 ManyToManyF ...
- Vue中实现聊天窗口overflow:auto自动滚动到底部,实现显示当前最新聊天消息
在做消息的项目,当有新消息的时候让新消息出现在最底部,此时的box用的是overflow:auto 注意:vue项目需要注意在dom结构渲染完再进行操作 <div class="mai ...
- 用递归实现N!
def digui(n): result = 1 if n == 2: result = 2 elif n > 2: result = n* digui(n-1) print(result) r ...
- [从今天开始修炼数据结构]图的最短路径 —— 迪杰斯特拉算法和弗洛伊德算法的详解与Java实现
在网图和非网图中,最短路径的含义不同.非网图中边上没有权值,所谓的最短路径,其实就是两顶点之间经过的边数最少的路径:而对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,我们称路径上第 ...
- 一个简单的示例在spring boot中实现国际化
最近在网上找了一个有关账单管理的spring boot项目,其中有一部分是涉及显示国际化信息的,即将页面上的中英文进行转换.因为在这之前这部分内容没有接触过,所以在这记录下过程. 中文效果图如下所示: ...
- django基础之day04知识点----查询相关
from django.test import TestCase # Create your tests here. ''' 当你想单独测试django中某一个py文件时,你需要手动配置测试文件 在m ...
- CMAKE同时编译C++和CUDA文件
1. 首先是运行环境 Ubuntu 16.04 G++ 5.4.0 CUDA 8.0 2. 文件结构 cv@cv:~/myproject$ tree src src/ |-- CMakeLists.t ...