IPSEC的实现方式

在IPSEC通信中涉及到一个重要方面,那就是如何定义要保护的数据流(又称为感兴趣流)。这不仅涉及到IPSEC最终要保护哪部分数据,还关系到IPSEC的实现方式,因此有必要把感兴趣流的定义方式进行详细说明。

1. 感兴趣流的定义方式

“感兴趣流”指的是哪些数据可以进入IPsec隧道进行传输,哪些数据不能进入IPsec隧道传输。在现有的IPsec 实现过程中,最常用的实现方式有两种:“基于ACL”、“基于虚拟隧道接口”。下面我们对这两中方式进行详细的介绍。

2. 基于ACL(访问控制)方式

​ 我们知道,高级IP ACL可以基于源/目的IP地址、源/目的端口、协议等信息对数据报文进行过滤, 而这IPsec正好可以使用ACL的方式来确定哪些数据报文需要隧道保护。

​ 当使用当采用ACL的方式来定义“感兴趣流”时,手动方式和IKE协商方式建立的IPsec 隧道是由高级ACL来指定需要保护的数据流范围,并从中过滤出需要进行IPsec隧道的报文。ACL规则允许的报文(permit)将被保护;ACL规则拒绝的报文(deny)将不会被保护。

​ 因为这里的ACL为高级IP ACL, 所以可以明确的指定数据报文中的源/目的IP地址**、源/目的端口、**协议类型等参数。但是这里的源、目的IP地址指数据发送方和接收方的主机IP地址,通常是两端内部网络中的私网地址。

​ 这种基于ACL方式定义感兴趣流的方式的优点是:

可以利用ACL配置的灵活性,根据IP地址、端口信息、协议类型(TCP, UDP, ICMP, IP等)等信息对报文进行过滤从而指定灵活的IPSec保护方法。

3. 基于虚拟隧道接口方式

​ 基于虚拟隧道接口来定义需要保护的数据流,首先需要在两端的IPsec设备创建一个虚拟的隧道接口Tunnel, 然后通过配置以该Tunnel接口为出接口的静态路由,以此来将到达某一个子网的数据流量通过IPSec隧道进行转发。因为Tunnel接口为点对点类型的接口,是运行PPP链路层协议的,因此以该接口为出接口的静态路由是可以不指定下一跳IP地址的。

​ IPsec虚拟隧道接口是一种三层逻辑接口,采用这种方式时,所有路由到IPsec虚拟隧道接口上的报文都将进行IPSec保护,而不再对数据流类型进行细分。使用IPSec虚拟隧道接口有如下诸多优点:

  • 简化配置

    只需要将IPSec保护的数据流引到虚拟隧道接口上,无需再通过ACL来定义加解密流量的特征。这使得IPSec的配置不会受到网络规划的影响,增加了网络规划的可扩展性,降低了网络维护的成本。

  • 较小开销

    在保护远程接入用户流量的组网中,只需要在IPSec虚拟隧道接口处进行IPSec报文封装,与IPSec over GRE 或者 IPSec over L2TP方式的隧道封装相比,较少了封装层次,节省了带宽。

  • 支持范围更广

    点对点IPSec虚拟隧道接口可以支持动态路由协议,同时还可以支持对组播流量的报文。另外,IPSec虚拟隧道接口在实施过程中明确的区分出“加密前”和“加密后”两个阶段,用户可以根据不同的组网需求灵活的选择其他业务(例如NAT, QoS)实施的阶段。 例如用户希望对加密前的报文进行QoS,则可以在IPSec虚拟隧道接口上应用QoS策略;如果希望对IPSec封装后的报文应用QoS,则可以在报文发送的物理接口上应用QoS策略。

4. 虚拟隧道接口

​ IPSec 虚拟隧道接口(即Tunnel接口),是一种支持路由的三层逻辑接口,它可以支持动态路由协议、所有路由到IPSec虚拟隧道接口的报文都将进行IPSec保护,同时可以支持对组播流量的保护。

​ 下面简单介绍下IPSec隧道两端的虚拟隧道接口上报文处理流程:

4.1 IPSec虚拟隧道接口上封装和加密流程

用户数据到达IPSec设备(如路由器),需要被IPSec保护的报文(感兴趣流)会被转发到IPSec虚拟隧道接口上进行封装和加密。如下图所示:

  • Router将从入接口上收到的明文IP报文后发送到转发模块进行处理
  • 转发模块依据路由表查询结果进行转发,如果为相应的感兴趣流,会被引到IPSec虚拟隧道接口上进行AH或ESP封装;
  • IPSec虚拟隧道接口完成对明文的封装处理后,根据建立的IPSec SA安全策略再将封装后的报文进行加密,然后再将加密后的报文交由转发模块进行处理
  • 转发模块通过第二次转发查询后,将已经封装完毕的加密IPSec报文通过相应的物理接口发送出去,最终密文到达对端的IPSec设备的虚拟隧道接口上。

4.2 IPSec虚拟隧道接口上解封装和解密流程

数据经过IPSec隧道传输到达对端IPSec设备时,需要对数据包进行解密、解封装处理。它的处理流程如下所示:

  • Router将从入接口上收到的加密的IP报文发送到转发模块进行处理
  • 转发模块识别到此密文的目的IP地址为本设备的隧道接口IP地址,且IP报文协议号为ESP、AH、UDP时,会将此报文发送到相应的虚拟隧道接口上进行解密和解封装处理;
  • IPSec虚拟隧道接口完成对密文的解封装处理后,再将解封装后的报文交由转发模块进行处理
  • 转发模块通过第二次转发查询后,将IP明文通过相应的物理接口发送出去,最终密文到达相应的主机上。

IPSEC的实现方式的更多相关文章

  1. IPSec

    一. +IPSec(IP Security)Internet 协议安全性 是IFTF制定的为保证在Internet上传送数据的安全保密性能的框架协议 +IPSec包括报文验证头协议AH(协议号51)和 ...

  2. [转帖] IPsec相关知识 --未知来源

    目  录 IPsec IPsec简介 IPsec的协议实现 IPsec基本概念 加密卡 IPsec虚拟隧道接口 使用IPsec保护IPv6路由协议 IKE IKE简介 IKE的安全机制 IKE的交换过 ...

  3. IPSec协议框架

    文章目录 1. IPSec简介 1.1 起源 1.2 定义 1.3 受益 2. IPSec原理描述 2.1 IPSec协议框架 2.1.1 安全联盟 2.1.2 安全协议 报文头结构 2.1.3 封装 ...

  4. 技术分析:Femtocell家庭基站通信截获、伪造任意短信

    阿里移动安全团队与中国泰尔实验室无线技术部的通信专家们一起,联合对国内运营商某型Femtocell基站进行了安全分析,发现多枚重大漏洞,可导致用户的短信.通话.数据流量被窃听.恶意攻击者可以在免费申领 ...

  5. IPsec_VPN实现技术【转载】

    GRE Tunnel GRE Tunnel(General Routing Encapsulation 通用路由封装)是一种非常简单的VPN(Virtual Private Network 虚拟专用网 ...

  6. Femtocell家庭基站通信截获、伪造任意短信漏洞

    阿里移动安全团队与中国泰尔实验室无线技术部的通信专家们一起,联合对国内运营商某型Femtocell基站进行了安全分析,发现多枚重大漏洞,可导致用户的短信.通话.数据流量被窃听.恶意攻击者可以在免费申领 ...

  7. [转]Mac下配置基于SecurID的Cisco IPSec VPN全攻略(有图)

    来自: http://www.eefocus.com/Kevin/blog/11-09/230878_53c71.html RSA的SecurID长的是这个样子滴: Mac里面,可以设置VPN, 方法 ...

  8. 安全协议系列(五)---- IKE 与 IPSec(上)

    IKE/IPSec 属于网络层安全协议,保护 IP 及上层的协议安全.自上个世纪末面世以来,关于这两个协议的研究.应用,已经非常成熟.协议本身,也在不断地进化.仅以 IKE 为例,其对应的 RFC 编 ...

  9. 利用开源软件strongSwan实现支持IKEv2的企业级IPsec VPN,并结合FreeRadius实现AAA协议(下篇)

    续篇—— 利用开源软件strongSwan实现支持IKEv2的企业级IPsec VPN,并结合FreeRadius实现AAA协议(上篇) 上篇文章写了如何构建一个支持IKEv2的VPN,本篇记录的是如 ...

随机推荐

  1. Docker与k8s的恩怨情仇(七)—— “服务发现”大法让你的内外交互原地起飞

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 第一章:Docker与k8s的恩怨情仇(一)-成为PaaS前浪的Cloud Foundry 第二章:Dock ...

  2. 抄书抄博客毒害社区的Writer几时休?

    曾几何时,博客园用户也渐渐分成了两类人:Writer和Coder. 何为Coder?就是认认真真写代码,平时分享工作中的一些问题.好的解决方案,或者写一些实用的原理技术文.答疑解惑的教程技术文. 何为 ...

  3. appium自动化测试(5)-一些pyhon操作

    1.套件的问题 将所有的测试用例加进去,会一个个执行,用于用例名字没有规范test开头的时候 def suite(): suite = unittest.TestSuite suite.addTest ...

  4. CentOS时间日期类语法

    目录 一.date时间日期类 1. date显示当前时间 2. date 显示非当前时间 3. date 设置系统时间 二.cal 查看日历 一.date时间日期类 date [OPTION]... ...

  5. NodeJS 中的事件循环,读了这篇就全懂了

    事件循环是 NodeJS 处理非阻塞 I/O 操作的和核心机制.NodeJS 的事件循环脱胎于 libuv 的事件循环,因此,要搞清楚 NodeJS 的事件循环,还需要先了解 libuv 的事件循环是 ...

  6. Semi-automation Script Based on Sleep

    The following script auto login to server 49, send 2 commands and exit from the server. Create a aut ...

  7. MySQL-09-SQL执行计划

    SQL执行计划获取及分析 介绍 (1)获取到的是优化器选择完成的,他认为代价最小的执行计划. 作用: 语句执行前,先看执行计划信息,可以有效的防止性能较差的语句带来的性能问题. 如果业务中出现了慢语句 ...

  8. 【笔记】scikit-learn中的PCA(真实数据集)

    sklearn中的PCA(真实的数据集) (在notebook中) 加载好需要的内容,手写数字数据集 import numpy as np import matplotlib.pyplot as pl ...

  9. Kali 2.0 安装教程

    本文适合KALI初学者,将详细介绍Kali Linux 2.0的安装过程. 首先我们到KALI的官网下载镜像,大家可以自己选择下载32或64位的KALI 2.0系统. KALI 官网:https:// ...

  10. 【网络编程】TCPIP-5-UDP

    目录 前言 5. UDP 网络编程 5.1 UDP 的工作原理 5.2 UDP 的高效性 5.3 实现 UDP 服务端/客户端 5.3.1 概念 5.3.2 UDP 的数据 I/O 函数 5.3.3 ...