传输层的安全

1.tcp与udp协议的安全问题

  tcp作为互联网中非常重要的一个协议,攻击者对它的攻击自然也是相当关注。突然想起经常听到tcp数据流服务这个词,为什么称数据流呢?这里数据流指的是应用层将数据下发给tcp层时是以字节流的形式的发送的。tcp维护着一个tcp发送缓冲区和一个接收缓冲区,所有应用层发来的字节流会存放在发送缓冲区中,网络层上传的tcp数据会存放在接收缓冲区中。对于tcp协议的安全将从四个方面来进行分析,分别是头部、协议、流量和验证。

  基于头部的攻击可分为2类:一是攻击者可以发送无效的头部信息,这样就可以扰乱tcp层的运行;二是攻击者可以通过收到的tcp回应数据来探测目标主机的一些信息。在tcp头部的攻击中最常被攻击的就是标识字段了,这6个标识字段分别是:URG(数据包中含有紧急数据)、ACK(回应号有效)、PSH(需要将数据推送到应用)、RST(复位数据包)、SYN(同步数据包)、FIN(结束数据包)。比如我们可以伪装数据包修改这些标识的组合,有些系统对于未知的组合会断开连接,这将导致被攻击者连接断开。这种攻击对应上述分类的第一类攻击它会中断单个连接,当然现在系统在这个地方都做了改进。在第二类探测攻击中,仍然是利用这些标识。由于tcp标准并没有规定所有组合,不同的操作系统对于某一特定标识组合有不同的回应,因此可以发送探测包获得目标主机的操作系统类型或其他特定的信息。探测攻击很难消除,因为操作系统实现tcp协议存在不同的标准,除非统一这些标准。

  tcp协议是目前因特网中最复杂的协议之一,由于它的复杂性,针对tcp协议的攻击层出不穷。这里仍然将攻击分为2类,一类是攻击者与目标进行不正确的通信;一类是攻击者将数据包插入到tcp协议流中。第一类攻击中有一个经典的攻击成为SYN雪崩,攻击者使用自己的ip地址和多个端口号发送连接请求,受害者受到请求后会回复ACK数据包并进入半连接状态,显然这个时候受害者在内存中会存放这次会话数据。当受害者内存中占有大量的半连接会话时将会大量消耗性能,严重可导致主机掉线并且忽略掉其他主机连接请求。针对这种情况目标主机可以进行过滤,也就是接受连接请求的时候只允许存在限定数量的源IP连接请求。但是显然攻击者还可以使用分布式主机同时对某一主机发起攻击,这样目标主机可能一下子就掉线了。第二类攻击需要攻击者可以看到流量,比如切断连接攻击,如下图所示。

这里还有一个点需要考虑,伪装数据包不是仅仅改变源IP地址就可以了的,还有mac地址以及一些标志都要进行修改,当然好在前提是我们可以嗅探到数据包进行伪造。如果攻击者还修改了数据包的源mac地址,那这样的话由于无法知道攻击者是哪台主机,这将会对消除攻击带来难度。接下来再来看一个第二类攻击例子,这种攻击称为会话劫持,它要求攻击者可以看到受害者与服务器之间的流量。与切断连接攻击不同的是它是窃取连接,攻击者将代替受害者与服务器之间通信或代替服务器与受害者进行通信。如下图所示。

  在流量方面,从切断连接和窃取连接可以看到它们的基础正是能够看到流量,syn雪崩也是由于大量的流量而降低服务性能,因此它是其他攻击的基础。

  tcp协议不支持验证,因此这方面没有代表性攻击。不过tcp首部中第1和2个字段是源端口和目的端口,操作系统其实可以限定端口号的范围从而起到一个验证的保护作用。由于udp协议首部很简单,因此基于首部和协议的攻击不常见,基于验证方面和流量的攻击与tcp差不多。不过也要看到tcp与udp的区别,udp不需要回复确认和保持连接,因此对udp发动雪崩需要更高的成本。

2.传输层安全的解决方案

  tcp/ip协议簇在设计时并没有专门在传输层安全方面做太多保障措施,现在传输层的安全一般都是由低层或应用层来提供,这些安全措施我会在其他层做相应的介绍。接下来对上面的攻击进行分析,主要是基于头部和协议的攻击。在基于头部的攻击中我们发现基本上就是围绕着标志位,针对这方面的攻击只要系统做过滤检查基本就可以做到100%检测并阻断。在基于协议的攻击中,syn雪崩是一个很头疼的问题。针对这类攻击,一般是对攻击者ip进行限制,比如一次只限制一个ip加几个端口进行连接。还有当在规定时间没有收到客户端的ack确认时一般服务器会重发5次,可以修改配置文件将重发次数降为2次,减少服务器等待时间。防火墙技术也可在这里使用,让防火墙将完成3次握手的数据包再发送给服务器。但是这些措施显然,如果攻击者可以每秒攻击上万次或更多,那对于syn雪崩仍然无法很好的进行防御。攻击者攻击也是有风险的,因为即使你伪装ip地址,服务器收到的源ip地址是出口路由器的ip地址,这样攻击者的大概地理位置就会被发现。而且SNMP应该也会做一些限制,我曾经用C#做过端口扫描程序,如果一下子扫描太多我那个ip地址短时间就不能使用了。我现在是刚入门,如果以后有好的想法我再去更新这篇随笔。

  在针对协议的攻击中,还有RST攻击。显然RST需要攻击者能够看到流量并伪装成正确的数据包。我百度了7到8页,发现几乎都是同样的话那就是使用防火墙丢弃所有的rst包。确实如果不采用防火墙真的拿这样的攻击没办法。可是这样的话RST本身的作用就没有了,再来回顾出现RST包的情况:目标主机无端口监听;请求超时;目标主机连接关闭。如果在两端采用防火墙,当目标主机出现上述三种情况返回一个RST数据包时。由于被防火墙隔离,因此发送方将会继续尝试发送数据包直到由于没有答复而放弃发送,一般防火墙遇到这种情况应该会返回一些错误信息的。可以看出没有RST数据包,连接仍然可以释放只是需要更长的时间周期。在会话劫持中,除了发送RST让客户端断开,还可以发送FIN或其他方式让客户端退出连接,总之就是让服务器相信攻击者就是合法的客户端。在会话劫持中如果攻击者不使用RST方式中断客户端的连接而使用其他方式,这样设置防火墙过滤RST将无法阻挡会话劫持攻击,此时可以使用更加复杂的TSL协议来增加攻击者与服务器连接难度。

  传输层安全TLS和安全套接层SSL是在应用层和传输层之间再加一个安全层。TLS(Transport Layer Security)协议可看作是一个新的层,位于应用层与tcp之间。它提供服务器与客户端之间的验证,提供应用程序之间的保密性和数据完整性,TLS包括TLS记录协议与TLS握手协议。SSL(Security Socket Layer)和TLS差不多,也是通过相互验证达到认证的目的,它使用数字签名确保完整性、使用加密确保私密性,它由SSL记录协议和SSL握手协议组成。TLS是在SSL的基础上进行改进得到的版本,但是TLS和SSL的差别很大而且加密算法都不同,这导致它们之间是无法进行互操作的。由于TSL是SSL的增强版,故先来研究SSL,目前它已广泛的用于浏览器与服务器之间的身份认证和信息加密。前面提到SSL分为SSL记录协议和SSL握手协议,记录协议为应用层协议主要提供数据封装、压缩和加密。握手协议则是在记录协议的基础上用于通信双方的身份认证、加密算法的协商、交换密钥。通过记录协议和握手协议,SSL可确保客户端与服务器之间的数据不会被窃取以及数据在传输过程中不被改变。接下来我画了一个图来说明SSL协议的传输过程。

TLS和SSL的通信机制差不多,其实现在我们使用的基本上都是TLS协议。另外关于TLS密钥的分配是TLS协议中非常重要的一部分,对这块我只是懂点皮毛感兴趣的可以自行百度。对于TLS协议从中间人角度看也是有可能被攻击的,比如A和B通信,C可以看到A与B之间的通信流量。这时C可以伪造证书给A,假装自己是一个服务器,并与真正的服务器建立一个有效连接,这样C就可以任意的查看修改这些信息了。不过成本应该是相当高的,因为攻击者除了要得到TLS以下层的数据流量外,还需要知道加解密算法以及各种密钥。

时间: 2024-08-06 11:51:21

传输层的安全的相关文章

从HTTP 2.0想到的关于传输层协议的一些事

0.HTTP协议的历史 我也不知道... 1.关于HTTP 2.0 收到了订阅的邮件,头版是说HTTP 2.0的内容,我本人不是很关注HTTP这一块儿,但是闲得无聊时也会瞟两眼的.HTTP 2.0的最大改进我觉得有两点:第一:新增了帧层帧层的好处在于重新分发流信息,服务器处理顺序可以不再依赖用户提交请求的顺序了.另外就是不必一定用TCP传输HTTP了,实际上规范一开始就是这么说的.第二:HTTP头的内容可以增量交互了很 多的HTTP头里面的信息都是参数的协商,每次都要携带,如key/value的

网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结

引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. UDP全称为用户数据报协议,它可以提供非连接的不可靠的点到多点的通信. 使用TCP还是UDP,那要看你的程序注重哪一个方面,可靠(tcp)还是快速(udp). TCP/IP 建立连接的过程 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.   

传输层:UDP协议

传输层:UDP 协议 一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP 数据报首部就标明了这两台主机的 IP 地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程.主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在于 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信.两个主机的传输层

计算机网络 学习笔记-传输层:TCP协议简介

概述: TCP传输前先要建立连接 TCP在传输层 点对点,一条TCP只能连接两个端点 可靠传输.无差错.不丢失.不重复.按顺序 全双工 字节流 TCP报文段 TCP报文段的报头前20字节是固定的,后面4n字节是根据需要而添加的. 20字节的固定部分: 源端口和目的端口:分别写入源端口号和目的端口号 序号:0-(2^32-1),本报文段数据的第一个字节的序号,用来解决乱序问题 确认序号:期望收到对方下一个报文段的第一个数据字节的序号,用来解决丢包问题 数据偏移:TCP报头长度,包括固定的20字节和

传输层:UDP 协议

一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP 数据报首部就标明了这两台主机的 IP 地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程. 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在与 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信. 两个主机的传输层之间有一个灰色双向

Sipdroid实现SIP(四): 传输层和应用层之间的枢纽SipProvider

I. 概述 在整套Sipdroid源码中, 类SipProvider是最靠近TCP/UDP的一层, 在Sipdroid实现的SIP协议栈中扮演底层枢纽的角色(前一篇文章中介绍的SipdroidEngine扮演的是上层枢纽), 这一角色也可以从该类是Configurable, TransportListener, TcpServerListener的继承体现出来. 向下层, SipProvider和通信传输层进行交互, 包括接收Transport的回调, 向Transport传递要发送的msg 向

网络安全——传输层安全协议(Transport Layer Security) TLS/SSL

网络安全——传输层安全协议(Transport Layer Security) TLS/SSL 1. 综述 TLS/SSL用于认证和加密. TLS/SSL的核心在于公钥和私钥,公钥在安全证书中. 公钥和私钥成对出现,通信个体的公钥公开,私钥则严格保密,只有自己知道:有下面的特性: 1. 公钥加密的数据只能由私钥解密: 2. 私钥加密的数据只能由公钥解密. A用私钥加密后,其他人尝试用A的公钥解密可以判断是否是A发出的数据:发给A的数据用A的公钥加密,则只有A能读取. 2. 对称密码和非对称密码

【精】TCP/IP协议简介(四) 之 传输层UDP&TCP

传输层:UDP 协议 一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP 数据报首部就标明了这两台主机的 IP 地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程. 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在于 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信. 两个主机的传

传输层的几个部分的ALCAP、SSCOP、MTP3-B、SCCP、SAAL、SCCF、STC、IP、UDP、GTPU

物理层:物理层主要提供ATM信元的传输通道,它将上层ATM层传来的信元加上其传输开销后,形成连续的比特流.同时,接收到物理媒介上传来的连续比特流后,取出有效信元并传递给ATM层. ATM层:ATM(Asynchronous Transfer Mode,异步传输模式)层处于物理层之上,利用物理层提供的服务,与对等层进行以信元为单位的通信.ATM层与物理媒介的类型.物理层的具体实现及其具体传送的业务类型也无关,它只识别和处理信头.也就是说,ATM层负责将上层传来48字节信元净荷加上5个字节的信头,或