TCP协议的安全性
TCP协议提供的服务
基本的运输层服务:多路复用、多路分解
可靠传输:校验和、确认重传、超时机制、字节编号
面向连接:建立连接、数据传输、释放连接
流量控制:接收窗口
拥塞控制:拥塞窗口、慢启动、拥塞避免、快重传
每个TCP练级额都需要维护接收窗口和拥塞窗口两个状态变量,拥塞窗口的大小表示了当前网络的传输能力,由发送方确定。接收窗口是接收端主机根据其目前的接收缓存大小所许诺的最新窗口值。发送窗口取上述两者最小值。
TCP协议容易遭受的攻击
针对TCP连接建立阶段的三次握手过程的SYN Flood攻击
第三次客户端不发送ACK确认报文(拒绝服务攻击)-半连接
防护措施
- 在服务器前端部署相应的网络安全设备
- 根据连接信息以及己方时间戳、MSS等信息生成cookie ,如果短时间内收到某一IP的重复SYN报文,则认定受到攻击。
- 添加反向代理服务器,位于用户与目标服务器之间,但是对于客户而言,反向代理服务器相当于目标服务器,用户直接访问反向代理服务器
就可以获得目标服务器的资源
针对TCP协议不对数据包加密和认证的漏洞的TCP序列号攻击、TCP会话劫持、数据嗅探等攻击
攻击者预测目标主机选择的起始序号,伪造发送序列号在有效窗口内的报文,也可以截获报文并篡改内容再发送给接收方
防护措施
采用随机数作为初始序列号
- 攻击者X首先对B实施拒绝服务攻击,使得B在短时间内无法响应。
- X向A发送一个SYN请求,试图建立连接,并发送初始序列号为m。
- A收到请求后,尝试与B进行第二次握手,但由于B暂时无法应答,A会超时并放弃这个连接尝试。
- X不断尝试发送不同的初始序列号(例如n)给A。
- 当X发送一个初始序列号为n的SYN请求并得到A的响应时,X立即发送一个ACK报文,其序列号为n+1。
- 由于B之前已经遭受了拒绝服务攻击,所以无法发送任何响应给A,这使得A认为它已经与B建立了连接。
针对TCP的拥塞控制机制的特性,在TCP连接建立后的数据阶段攻击,主要是拒绝服务攻击
拥塞控制功能旨在防止过多的数据注入网络。利用拥塞机制的特性,周期性制造网路哦关键节点的拥塞,不断出发拥塞窗口的慢启动过程,最终达到降低正常传输的能力
网关实施检测网络异常流量
UDP协议的安全性
没有纠错和重传机制,也没有检测丢包、复制或重新排序的机制,甚至误码检测也是可选项。
在数据的接收端,被分片的UDP数据包得以重组
UDP开销小,首部只有8B,适用于挑战/响应类型的应用,如DNS
UDP flood
当UDP用于大量的数据传输时,协议自身缺乏流控制的特征,所以它只能堵塞主机或路由器,并造成丢包现象
防护手段
- 如果攻击包是大包,则根据攻击包大小设定包碎片重组大小,极端情况下可以全丢了
- 若攻击端口为业务端口,根据业务UDP最大UDP最大包以过滤异常流量
- 若非业务端口,通常设置UDP连接规则,要求所有去往该端口的UDP包,首先与TCP端口建立TCP练级额
UDP欺骗
- UDP没有连接的概念,忽略了源地址和端口号,要小心UDP数据包的源地址
- 没有握手建立过程或序列号,更容易遭受欺骗攻击
- 采取适当的认证措施