「作者简介」:北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖Web安全、系统安全等12个知识域的一百多个知识点,持续更新。
这一章节我们需要知道TCP/IP每层存在哪些安全问题,每一层的解决方式是什么,重点是网络层的IPsec和传输层的SSL。
TCP/IP协议栈
TCP/IP协议簇是以TCP协议和IP协议为核心、由多种协议组成的「协议栈」,是一组协议的集合。
因为OSI是理想化的七层模型,所以TCP/IP协议簇从「实用性」的角度出发,将OSI七层参考模型简化为四层模型。从上往下依次是应用层、传输层、网络互联层、网络接口层。
TCP/IP协议栈起初是为了网络互联互通设计的,主要应用在大学、研究所等区域,那种场景下,网络是可信的。随着互联网的发展,个人PC加入到网络以后,开始出现嗅探、拒绝服务等攻击。解决这些安全隐患,最基本的思路是用VPN来保证数据的完整性、机密性和身份认证。
VPN(Virtual Private Network)是建立在「公网」上的「专用网络」,因为这个专用网络只是逻辑存在,没有实际的物理线路,所以也叫虚拟专用网。
1、网络接口层的安全问题
网络接口层的主要协议有ARP协议 和 RARP协议。
ARP协议可以把IP地址解析成MAC地址;RARP则是反过来,把MAC地址解析成IP地址。
这一层的安全问题主要有物理线路损坏、ARP欺骗、嗅探和拒绝服务。
网络接口层使用四种VPN协议来保证安全:PPP、PPTP、L2F、L2TP。
PPP(Point to Point Protocol)是点对点协议,在点对点之间建立连接传输数据。用PAP和CHAP做身份验证。PAP用两次握手建立连接,客户端发送用户明和密码,认证方判断通过还是不通过;CHAP用三次握手建立连接,认证方先发送一个随机数给客户端,客户端用密码把随机数加密成哈希值和用户名一起发送给认证放,认证放也把随机数用密码加密,如果相同就认证成功,不相同就认证失败。
PPTP(Point-to-Point Tunneling Protocol)是点对点隧道协议,用PPP做身份验证、传输数据;用GRE建立隧道、封装数据(明文、不提供加密)。
L2F(Layer 2 Forwarding Protocol)是二层转发协议,本身不提供加密或保密,用PPP做身份验证、传输数据。
L2TP(Layer Two Tunneling Protocol)用PPP做身份验证、传输数据,可以搭配IPsec等安全协议实现数据加密、隧道验证。L2TP和PPTP很想,都是点对点隧道协议,区别在于:PPTP只支持IP网络,L2TP支持多种网络;PPTP只能在两个端点之间建立一个隧道,L2TP支持多个隧道;PPTP不能用IPsec加密,L2TP能用IPsec加密,更安全。
2.1、ARP欺骗
相关文章: ARP协议工作原理、 ARP欺骗原理与实现
ARP是无状态协议,不需要请求就能应答;向对方单播一个假的ARP响应,对方就会在ARP缓存表里保存我定义的IP/Mac映射关系。以后它访问这个IP的时候,就会找到我这个Mac地址。如果我不转发数据包,对方收不到回包,网络就断了;如果我转发数据包,就能一直截取对方通信的数据包。
ARP欺骗的防御有四种方式:
- 使用静态ARP缓存:ARP缓存表的映射关系分为动态和静态。通过ARP响应获取的是动态映射关系(dynamic);用 arp -s 手动添加的是静态映射关系(static ),静态的映射关系不会被ARP响应修改。所以手动添加也叫IP - MAC绑定,可以有效防止ARP欺骗。
- 使用三层交换设备:三层交换设备可以通过路由和VLAN隔离ARP广播,限制ARP欺骗的范围。
- IP/MAC地址绑定:在路由器上绑定终端的IP/MAC;或者在终端上绑定网关的IP/MAC。
- ARP防御产品:比如防火墙等产品,防止ARP欺骗。
2.2、嗅探
二层协议都是明文传输的,如果截取到数据包,就能知道他们通信的内容。
使用Ettercap等嗅探工具,在ARP欺骗的基础上,当作一个中间人转发数据包,就能一直监听他们的通信。
2.3、拒绝服务
二层利用ARP协议的拒绝服务有两种:mac flooding、arp flooding。
2.3.1、MAC flooding
交换机内部有一张CAM缓存表,跟ARP缓存表一样主动学习并记录IP/MAC的映射关系,用来实现数据包的转发。但缓存表的大小是固定的,默认只能存几千条,存满以后就会从交换模式变成failopen模式,类似集线器,所有新进来的数据包不经过处理就会广播道所有端口。
我们可以向交换机发送大量源MAC地址不同的数据包,塞满它的缓存表,然后用嗅探工具捕获交换机广播的数据包。
防御mac flooding 可以限制每个端口能够发送的源MAC地址的数量。比如思科交换机的 Port security 功能。
2.3.1、ARP flooding
ARP缓存表的大小是有上限的,我们发送大量源IP地址不同的ARP报文,就会把ARP缓存表占满,导致通信中断。即使没有占满,设备处理ARP报文也需要消耗资源,当超过资源上限,系统的性能就会降低,无法处理正常业务。
防御 ARP flooding 可以在交换机上限制ARP的处理速度,比如每秒超过50个ARP报文,就丢弃超出的报文;或者只学习自己发送的ARP报文,不学习其他交换机发来的ARP报文。
2、网络层的安全问题
网络层的主要协议是IP协议。
这一层的安全问题主要有IP欺骗、嗅探和拒绝服务。
网络层用IPsec协议来保证安全。
IPsec(Internet Protocol Security)是互联网安全协议。使用AH实现数据的完整性;用ESP实现数据的机密性。用户现场常见的IPsec VPN就是用IPsec协议实现的VPN技术。
AH(Authentication Header)是认证头协议,使用哈希算法计算出报文的散列值,放到AH报文的认证数据里,用来验证数据是否完整;AH报文头里还有一个序列号,会单向递增,可以防止重放。
- 下一头部:被传送的数据属于什么协议
- 负载长度:AH报头的大小
- 安全参数索引:安全策略的索引,与IP地址一同用来标识安全参数
- 序列号:由单向递增的计数器维护,用于防重放。
- 认证数据:验证算法计算的结果,用于完整性校验。
ESP(Encapsulating Security Payload)是封装安全载荷协议,使用加密算法将数据加密后放到ESP报文的数据部分,保证数据的机密性;ESP报文的序列号也能自增,用来防止重放。
- 安全参数索引:与IP地址一同用来标识安全参数
- 序列号:由单向递增的计数器维护,用于防重放。
- 载荷长度:实际要传输的加密后的数据。
- 填充:由加密算法决定。
- 填充长度:填充数据的长度,接收方根据这个计算实际数据的长度。
- 下一个头:被传送数据所属的协议。
- 认证数据:
AH协议在IP报头后边添加AH报头;ESP协议在IP报头后边添加ESP报头,并在IP数据后边添加ESP尾部。
AH和ESP可以单独使用也可以同时使用,同时使用时,ESP先封装,AH再封装;解封时,AH先解封,ESP再解封。
2.1、IP欺骗
相关文章:IP协议原理与抓包分析
IP欺骗通过修改数据包头部的源IP,伪造IP地址。
可以随机生成大量源IP做DDOS,或者在两个互相信任的主机中,伪装成其中一个主机的IP,与另一个主机通信。
通过防火墙可以防止IP欺骗,防火墙使用NAT技术实现访问控制,NAT会将内部私有地址转换成公网地址,实现内网和外网的通信,并且通信过程中,防火墙会记录转换前后的IP、端口等对应关系。如果有跟记录不匹配的数据包,就会被丢弃,这样就能防止IP欺骗。
2.2、拒绝服务
三层利用IP协议的拒绝服务有分片攻击、死亡ping
数据链路层用最大传输单元MTU来限制数据帧的最大长度,默认是1500。如果数据包大小超过了MTU,网络层在传给数据链路层之前,就会先对数据包分片,在IP数据包的头部用偏移量标识分片的位置,接收方可以根据偏移量重组数据包。
一些老的操作系统默认不检查数据包的分片情况,如果我们构造超过MTU的数据包,操作系统就无法处理,导致崩溃或司机;或者我们修改一下偏移量,操作系统也会无法处理。目前新的操作系统都增加了检测数据包分片的机制,不受分片攻击的影响;对于老机器,可以在防火墙上拦截IP碎片。
除了数据链路层,网络层对最大传输单元也有限制,IP协议规定一个IP数据包的大小不能超过65500,因此,大多数包处理程序为数据包重组预留的内存空间也不会超过这个值。
如果我们构造超过65500的数据包,操作系统就会因为缓冲区溢出而崩溃。
防火墙很难过滤这种数据包,因为每一个分片包看起来都很正常;最好的办法就是打补丁,不再重组超过65500的数据包。
3、传输层的安全问题
传输层的主要协议有TCP协议 和 UDP协议。
TCP提供面向连接的、可靠的数据传输;UCP提供非链接的、不可靠的数据传输。
相关文章:TCP协议工作原理与抓包分析
这一层的安全问题主要有会话劫持、嗅探和拒绝服务。
传输层使用SSL协议来保证安全。
SSL(Secure Socket Layer)是安全套接层协议,在握手过程中使用非对称秘钥实现数据的机密性;使用哈希算法实现数据的完整性。
TLS在SSL的基础上进行了标准化,相当于SSL的升级版,实际上两个协议的功能没有明显的差距。
相关文章:SSL协议工作原理与抓包分析
3.1、TCP会话劫持
TCP只在建立连接时验证身份,建立连接后就只用seq和ack来识别会话,我们监听网络中的通信数据包,拿到seq和ack,结合IP欺骗,就能冒充一个主机和另一个主机进行通信了。
3.2、拒绝服务
利用TCP协议的拒绝服务有 SYN Flood;利用UDP协议的拒绝服务有 UDP Flood。
3.2.1、SYN Flood
SYN Flood 也叫SYN泛洪攻击,利用TCP三次握手缺陷实现的DDOS。
客户端向服务端发送SYN请求建立连接后,服务端就会给客户端返回ACK进行确认并在半连接队列里维护这个连接,如果没收到客户端的确认,就会重复给客户端返回ACK确认,直到连接超时。
如果我们给服务器发送大量的SYN请求,服务器就会维护大量的半连接队列并不停的返回ACK确认,导致半连接队列溢出或资源耗尽,无法处理正常业务。在SYN请求的基础上用IP欺骗伪造源IP,那么服务器的响应也不会返回给我们,DDOS的成本也会降低很多。
3.2.2、UDP Flood
UDP Flood 也叫UDP泛洪攻击,利用UDP不可靠的特性实现DDOS。
UDP协议只会尽最大能力传输数据,没有安全性的校验,我们使用僵尸网络向目标发送大量UDP请求,从而消耗目标的资源,这种方式没什么技术含量,单纯就是两边拼资源。
由于UDP协议没有源认证机制,我们将UDP报文的源IP改成攻击目标的IP,返回的UDP报文就会发给目标IP,这招也叫UDP 反射。
许多基于UDP的服务具有“小请求、大响应”的特点,UDP响应包远大于请求包,我们利用网络中开放的NTP服务器,配合UDP反射,实现四两拨千斤的效果。
协议端口响应放大倍数DNS5328~54NTP123556.9SNMP1616.3
防御 UDP Flood,可以用防火墙限流,比如统计每个IP的UDP流量,超过上限就限流;或者监控UDP会话的报文速率,速度太快的就限流。
UDP Flood的报文基本都是重复的,而正常业务的报文都是不断变化的,根据这个特点,有的安全工具通过识别报文指纹的方式,进行过滤。
4、应用层的安全问题
应用层的安全问题就是我们常说的WEB漏洞,比如SQL注入、XSS跨站脚本攻击、暴力破解、应用数据篡改、钓鱼攻击、cookie欺骗、超长URL连接等。
相关文章:SQL注入漏洞详解、文件上传漏洞详解、文件包含漏洞详解、XSS漏洞详解
应用层使用很多安全协议来解决安全问题
- HTTPS(Hypertext Transfer Protocol Secure)超文本传输协议,相当于HTTP + SSL,在HTTP的基础上用SSL实现加密。
- SSH(Secure Shell)安全外壳协议,实现安全的数据传输、远程登录。
- SFTP(SSH File Transfer Protocol)安全文件传输协议,也叫SSH文件传输协议,在FTP的基础上通过SSH加密建立链接,实现安全的文件传输。
版权归原作者 士别三日wyx 所有, 如有侵权,请联系我们删除。