RST产生原因

  一般情况下导致TCP发送RST报文的原因有如下3种:

      1、 SYN数据段指定的目的端口处没有接收进程在等待。

         2、TCP想放弃一个已经存在的连接。

      3、TCP接收到一个数据段,但是这个数据段所标识的连接不存在。

  对于第一种情况,常见的例子是终端访问服务器未开放的端口,服务器回复RST报文。比如,访问Web服务器的21端口(FTP),如果该端口服务器未开放或者阻断了到该端口的请求报文,则服务器很可能会给终端SYN报文回应一个RST报文。因此,服务器对终端的SYN报文响应RST报文在很多时候可以作为端口扫描器判断目标端口未开放的一个可靠依据。当然,在大多数场景下,服务器对到达自身未监听端口的报文进行丢弃而不响应是一种更为安全的实现。

  第二种情况比较好理解,正常拆除一个已有TCP连接的方式是发送FIN,FIN报文会在所有排队数据都发出后才会发送,正常情况下不会有数据丢失,因此,这也被称为是有序释放。另外一种拆除已有TCP连接的方式就是发送RST,这种方式的优点在于无需等待数据传输完毕,可以立即终结连接,这种通过RST拆除连接的方式被称为异常释放。大多数时候服务器需要针对两种不同的拆链方式提供不同的处理方法,也有很多服务器无法识别RST方式的拆链,这时候就需要格外小心,因为一旦出现这种情况,尤其是大量终端使用RST方式拆链,可能会导致服务器侧连接无法得到有效释放,影响其正常业务侧处理能力。

  最后一种情况,TCP通过4元组(源目IP,源目端口)唯一的标识一个连接,由于TCP状态机的存在,触发TCP连接建立的第一个报文标志位一定是SYN置位,因此,当服务器接收到一个新四元组(服务器本地没有这个连接)的非SYN首包就会丢弃该报文并向终端响应一个RST报文。最后一种情况,TCP通过4元组(源目IP,源目端口)唯一的标识一个连接,由于TCP状态机的存在,触发TCP连接建立的第一个报文标志位一定是SYN置位,因此,当服务器接收到一个新四元组(服务器本地没有这个连接)的非SYN首包就会丢弃该报文并向终端响应一个RST报文。

问题现象

  通过终端登录Web,输入用户名密码后Web页面显示连接被重置。抓包报文如下:

  终端10.153.47.104访问服务器10.153.42.65的8051端口,三次握手建立完成后,终端向服务器发送认证请求,提交用户名和密码,而后服务器立即回应RST拆除已有连接。

问题分析

  通过对比前述3种情况,发现只能匹配上原因2,但从原因2来看也只是说明服务器在这个位置确实可以回复RST报文,无法解释为什么服务器要回复RST。

  这个时候我们需要考虑一个问题:这个RST报文是不是真的是服务器回复的?从RST报文的seq来看确实可以和前序报文对应得上(由于SYN标志位在逻辑上占用1字节序号,所以RST报文的序号是第二个报文的序号加1)。一个很好的判断一条流是否是同一个服务器发送的方法是对比同一个方向的报文的IP头中的TTL值。由于TCP对乱序非常敏感,而网络设备逐包转发数据会引入更严重的乱序,因此网络中的设备一般都是逐流转发(按五元组,源目IP、源目端口、协议),所以,大部分情况下,在捕获的数据流中,同一条流的同一个方向的报文总是有相同的TTL值,我们基于这个判断来看一下上方截图中的第二个和第五个报文的TTL值:

  第二个报文的TTL值为251:

  第五个报文的TTL为122:

  因此,基本可以判断RST报文为中间传输设备发出。排查流量路径上的安全设备,在IPS中找到对应的日志:

  由于用户名和密码都是admin且明文传输,因此触发了Web用户登录弱口令的防御规则,连接被重置,IPS冒充服务器向终端发送RST报文拆链,如果在IPS设备抓包,可以看到IPS也同时冒充终端发送了RST给服务器。

  在很多环境中,中间安全设备通过RST拦截报文时初始TTL一般是64、128、255,这时候根据终端抓包的TTL就能反推出进行拦截的安全设备所处的位置。当然也有一些安全设备进行拦截的时候TTL初始值无迹可寻,这时候只能逐跳排查了。

为什么服务器突然回复RST——小心网络中的安全设备的更多相关文章

  1. 阿里云VPC服务器通过ClassicLink访问经典网络服务器

    VPC中的服务器名称是 vpc-ecs1 , 经典网络中的服务器名称是 classic-ecs2 ,要实现 vpc-ecs1 通过内网访问 classic-ecs2 . VPC 网段是 10.0.0. ...

  2. 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

    摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...

  3. 客户也可以申请它使用的最后一个IP地址。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。

    http://baike.baidu.com/item/IP地址 公有地址 公有地址(Public address)由Inter NIC(Internet Network Information Ce ...

  4. DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化

    在过去,很多防火墙对于DDoS攻击的检测一般是基于一个预先设定的流量阈值,超过一定的阈值,则会产生告警事件,做的细一些的可能会针对不同的流量特征设置不同的告警曲线,这样当某种攻击突然出现的时候,比如S ...

  5. Android 从网络中获取数据时 产生部分数据乱码的解决

    产生部分数据乱码的解决 标签: android部分中文乱码 2014-04-12 23:24 12366人阅读 评论(10) 收藏 举报 分类: [Android 基础](15) 版权声明:本文为博主 ...

  6. 网络中两台主机的通信过程(TCP)

    两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...

  7. http报文在网络中是明文传输的,所以不安全。HTtp必然来临

    HTTP数据在网络中裸奔 HTTP明文协议的缺陷,是导致数据泄露.数据篡改.流量劫持.钓鱼攻击等安全问题的重要原因.HTTP协议无法加密数据,所有通信数据都在网络中明文“裸奔”.通过网络的嗅探设备及一 ...

  8. Sun开发的JINI技术在网络中的应用

    一.概述 Sun公司开发的Jini系统是一种创新技术,听说它的人很多但较少被人理解.Jini系统可利用Java扩展网络计算的范围,并有可能成为最佳解决方案. Jini是Sun公司的研究与开发项目,它能 ...

  9. Windows Azure 虚拟网络中虚拟机的网络隔离选项

     最近我们发布了一份<Windows网络安全白皮书>(单击此处下载),文中深入说明了客户可以如何利用该平台的本地功能,为他们的信息资产提供最好的保护. 由首席顾问Walter Myer ...

随机推荐

  1. SpringCloud之异常报警通知(八)

    在之前整合降级的基础上,整合redis,达到报警的效果(redis的启动还是之前boot里面整合的redis) order-service pom.xml <dependency> < ...

  2. Hibernate 查询方式、JPA查询方式

    hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...

  3. Centos 7修改hostname浅析

    之前写过一篇博客"深入理解Linux修改hostname",里面总结了RHEL 5.7下面如何修改hostname,当然这篇博客的内容其实也适用于CentOS 6,但是自CentO ...

  4. c#通过libreOffice实现 office文件转pdf文件

    一.安装libreOffice 点击官网下载libreOffice 二.创建一个新的项目LibreOffice 创建一个新的项目,方便后面调用 添加下面代码 public class OfficeCo ...

  5. mybatis代理机制讲解

    问题描述 在使用Mybatis开发中,或者和Spring整合中,在Dao层中的Mapper接口与xml中的sql对应着,在service中直接调用Dao中的方法就可以直接访问sql.如下所示: /** ...

  6. NOIP201605玩具谜题-解题报告

    NOIP201605玩具谜题-解题报告                                                                         2019-11- ...

  7. python设置环境变量(临时和永久)

    设置临时环境变量 import os # 设置环境变量 os.environ['WORKON_HOME']="value" # 获取环境变量方法1 os.environ.get(' ...

  8. [考试反思]1009csp-s模拟测试66:依旧

    依旧是好一场烂一场. 依旧是那么菜. 依旧是难止颓废. 依旧是在此方仰望,幻想? 上面这段中二的东西是为了防止Parisb说我的标题与内容无关而diss我莫名其妙115的语文. 但是菜是的确是菜... ...

  9. 如何在Vue项目中给路由跳转加上进度条

    1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...

  10. NOIP 模拟19

    考试状态一次不如一次,所以这次.......我经无言以对 考完试T1就A了,但不是考试时A的,所以屁用没有! 这次考试其实T1想的是正解但是自己傻逼了,感觉自己只能拿部分分,(而且我还把数据范围少看一 ...