IPsec详细讲解和在企业网中的应用案例

一、IPsec的简介

IPsec(IP Security)是IETF 制定的三层隧道加密协议,它为Internet 上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证。特定的通信方之间在IP 层通过加密与数据源认证等方式,提供了以下的安全服务:

 数据机密性(Confidentiality):IPsec 发送方在通过网络传输包前对包进行加密。

 数据完整性(Data Integrity):IPsec 接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。

 数据来源认证(Data Authentication):IPsec 在接收端可以认证发送IPsec 报文的发送端是否合法。

 防重放(Anti-Replay):IPsec 接收方可检测并拒绝接收过时或重复的报文。


IPsec 具有以下优点:

 支持 IKE(Internet Key Exchange,因特网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE 建立和维护SA 的服务,简化了IPsec 的使用和管理。

 所有使用 IP 协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。

 对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP 数据包的安全性,可以有效防范网络***。

二、IPsec的两类协议

IPSec是一个框架性架构,具体由两类协议组成:

1、 AH协议(Authentication Header,使用较少):可以同时提供数据完整性确认、数据来源确认、防重放等安全特性;AH常用摘要算法(单向Hash函数)MD5和SHA1实现该特性。

2.ESP协议(Encapsulated Security Payload,使用较广):可以同时提供数据完整性确认、数据加密、防重放等安全特性;ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性。

为何AH使用较少呢?因为AH无法提供数据加密,所有数据在传输时以明文传输,而ESP提供数据加密;其次AH因为提供数据来源确认(源IP地址一旦改变,AH校验失败),所以无法穿越NAT。当然,IPSec在极端的情况下可以同时使用AH和ESP实现最完整的安全特性,但是此种方案极其少见。

三、IPsec的封装模式

IPSec提供两种封装模式传输模式Transport)的封装和隧道模式Tunnel)的封装。

1、传输模式(Transport)的封装(AH和ESP的封装)形式,如图1所示:

IPsec 详细讲解和在企业网中的应用案例_第1张图片

图1:传输模式的封装形式

2、隧道模式(Tunnel)的封装(AH和ESP的封装)形式,如图2所示:

IPsec 详细讲解和在企业网中的应用案例_第2张图片

图2:隧道模式的封装形式

从以上两张图可以看出传输模式和隧道模式的区别

传输模式在AH、ESP处理前后IP头部保持不变,主要用于End-to-End(端到端或者PC到PC)的应用场景。

隧道模式则在AH、ESP处理之后再封装了一个外网IP头,主要用于Site-to-Site(站点到站点或者网关到网关)的应用场景。

有个图是对传输模式、隧道模式适用于何种场景的详细说明,如图3所示:

IPsec 详细讲解和在企业网中的应用案例_第3张图片

图3:传输模式、隧道模式使用的场景

图的对比可以看出:隧道模式可以适用于任何场景传输模式只能适合PC到PC的场景隧道模式虽然可以适用于任何场景,但是隧道模式需要多一层IP头(通常为20字节长度)开销,所以在PC到PC的场景,建议还是使用传输模式。

为了使大家有个更直观的了解,我们看看图4,分析一下为何在Site-to-Site场景中只能使用隧道模式:

IPsec 详细讲解和在企业网中的应用案例_第4张图片

4为何在Site-to-Site场景中只能使用隧道模式

如图4所示,如果发起方内网PC发往响应方内网PC的流量满足网关的兴趣流匹配条件,发起方使用传输模式进行封装:

IPSec会话建立在发起方、响应方两个网关之间。

由于使用传输模式,所以IP头部并不会有任何变化,IP源地址是192.168.1.2,目的地址是10.1.1.2

这个数据包发到互联网后,其命运注定是杯具的,为什么这么讲,就因为其目的地址是10.1.1.2吗?这并不是根源,根源在于互联网并不会维护企业网络的路由,所以丢弃的可能性很大。

即使数据包没有在互联网中丢弃,并且幸运地抵达了响应方网关,那么我们指望响应方网关进行解密工作吗?凭什么,的确没什么好的凭据,数据包的目的地址是内网PC10.1.1.2,所以直接转发了事。

最杯具的是响应方内网PC收到数据包了,因为没有参与IPSec会话的协商会议,没有对应的SA,这个数据包无法解密,而被丢弃。

我们从上面五点可以很好的解释了在Site-to-Site情况下为什么不能使用传输模式的原因。并且提出了使用传输模式的充要条件:兴趣流必须完全在发起方、响应方IP地址范围内的流量。比如在图中,发起方IP地址为6.24.1.2,响应方IP地址为2.17.1.2,那么兴趣流可以是源6.24.1.2/32、目的是2.17.1.2/32,协议可以是任意的,倘若数据包的源、目的IP地址稍有不同,对不起,请使用隧道模式。

四、IPsec的协商

IPsec的协商实质就是怎样建立起安全联盟(SA),这里有以下两种协商方式建立 SA:

手工方式(manual)配置比较复杂,创建SA 所需的全部信息都必须手工配置,而且不支持一些高级特性(例如定时更新密钥),但优点是可以不依赖IKE 而单独实现IPsec 功能。

IKE 自动协商(isakmp)方式相对比较简单,只需要配置好IKE 协商安全策略的信息,由IKE自动协商来创建和维护SA。

我们在这以最常见的IPSec隧道模式为例,解释一下IPSec的协商过程,如图5所示:

IPsec 详细讲解和在企业网中的应用案例_第5张图片

5:IPsec的协商过程

5描述了由兴趣流触发的IPSec协商流程,原生IPSec并无身份确认等协商过程,在方案上存在诸多缺陷,如无法支持发起方地址动态变化情况下的身份确认、密钥动态更新等。伴随IPSec出现的IKE(Internet Key Exchange)协议专门用来弥补这些不足:

发起方定义的兴趣流是源192.168.1.0/24目的10.0.0.0/8,所以在接口发送发起方内网PC发给响应方内网PC的数据包,能够得以匹配。

满足兴趣流条件,在转发接口上检查SA不存在、过期或不可用,都会进行协商,否则使用当前SA对数据包进行处理。

协商的过程通常分为两个阶段,第一阶段是为第二阶段服务,第二阶段是真正的为兴趣流服务的SA,两个阶段协商的侧重有所不同,第一阶段主要确认双方身份的正确性,第二阶段则是为兴趣流创建一个指定的安全套件,其最显著的结果就是第二阶段中的兴趣流在会话中是密文,除此之外IPSec中安全性还体现在第二阶段SA永远是单向的,我可以从图6看出,如图6所示:

IPsec 详细讲解和在企业网中的应用案例_第6张图片

6第二阶段SA的方向

从图6可以发现,在协商第二阶段SA时,SA是分方向性的,发起方到响应方所用SA和响应放到发起方SA是单独协商的,这样做的好处在于即使某个方向的SA被破解并不会波及到另一个方向的SA,这样就起到了安全性的作用

五、IPsec的典型应用案例

1、实施环境: H3C防火墙、华为三层交换机,若干PC机

2、实施要求:

现有一家公司总公司在北京,并且在上海和郑州各有一家分公司,现要求总公司和分公司都能够连接到Internet网上,并且总公司和分公司通过使用tunnel技术能够安全通信,而且不影响各公司连接Internet网,具体实施如拓扑图所示。

3、网络拓扑图:

根据实施要求使用绘图工具绘制出网络拓扑图,如图7所示:

IPsec 详细讲解和在企业网中的应用案例_第7张图片

7:网络拓扑图

4、设备实施:

 交换机SW1的配置

system-view 

Enter system view , return user view with Ctrl+Z. 

[Quidway]sysn

//修改名称

[Quidway]sysname SW1

//创建VLAN 10

[SW1]vlan 10

//把端口eth0/1加入VLAN 10 

[SW1-vlan10]port eth0/1

//创建VLAN 20

[SW1-vlan10]vlan 20

//把端口eth0/2加入VLAN 20

[SW1-vlan20]port eth0/2

//创建VLAN 20

[SW1-vlan20]vlan 30

//把端口eth0/3加入VLAN 30

[SW1-vlan30]port eth0/3

//在VLAN 10接口配置IP地址

[SW1]int vlan 10

//在VLAN 10接口配置IP地址

[SW1-Vlan-interface10]ip add 61.130.130.2 255.255.255.252

[SW1]int vlan 20

//在VLAN 20接口配置IP地址

[SW1-Vlan-interface20]ip add 61.130.130.6 255.255.255.252

[SW1]int vlan 30

//在VLAN 30接口配置IP地址

[SW1-Vlan-interface30]ip add 61.130.130.10 255.255.255.252


 防火墙FW1的配置

system-view 

System View: return to User View with Ctrl+Z.

[H3C]sysname FW1

[FW1]int eth0/0

//由于防火墙原来有管理的IP地址,因此先去掉IP地址

[FW1-Ethernet0/0]undo ip address 

//去掉IP地址后重新再配置IP地址

[FW1-Ethernet0/0]ip address 192.168.1.1 24

[FW1-Ethernet0/0]int eth0/4

[FW1-Ethernet0/4]ip add 61.130.130.1 30

[FW1-Ethernet0/4]quit

//配置默认路由

[FW1]ip route-static 0.0.0.0 0 61.130.130.2

[FW1]firewall zone unt

//进入防火墙不可信区域

[FW1]firewall zone untrust

//把接口eth0/4加入不可信区域

[FW1-zone-untrust]add interface eth0/4

//配置扩展访问控制列表

[FW1]acl number 3000 match-order auto

//创建访问控制列表规则

[FW1-acl-adv-3000]rule 10 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255

[FW1-acl-adv-3000]rule 20 deny ip source any destination any

[FW1]acl number 3001 mat

//配置扩展访问控制列表

[FW1]acl number 3001 match-order auto

//创建访问控制列表规则

[FW1-acl-adv-3001]rule 10 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.3.0 0.0.0.255

[FW1-acl-adv-3001]rule 20 deny ip source any destination any

//配置安全提出协议

[FW1]ipsec proposal tran1 //名字可以自己起

//配置采取的封装模式为tunnel

[FW1-ipsec-proposal-tran1]encapsulation-mode tunnel 

//配置协商传输协议

[FW1-ipsec-proposal-tran1]transform esp

//配置传输协议采取的加密算法为md5

[FW1-ipsec-proposal-tran1]esp authentication-algorithm md5

[FW1-ipsec-proposal-tran1]esp encryption-algorithm des

//创建生成IKE,指出IKE的邻居

[FW1]ike peer fw2 //名字可以自取

//指出本地的IP地址

[FW1-ike-peer-fw2]local-address 61.130.130.1 

//指出远端的IP地址

[FW1-ike-peer-fw2]remote-address 61.130.130.5

//定义一个共享密钥

[FW1-ike-peer-fw2]pre-shared-key 123456

//创建安全策略,指出安全策略协商采取的方式

[FW1]ipsec policy policy1 10 isakmp 

//安全应用访问控制列表

[FW1-ipsec-policy-isakmp-policy1-10]security acl 3000

//指出安全提议

[FW1-ipsec-policy-isakmp-policy1-10]proposal tran1

//指出IKE的邻居

[FW1-ipsec-policy-isakmp-policy1-10]ike-p

[FW1-ipsec-policy-isakmp-policy1-10]ike-peer fw2

//在接口上应用

[FW1-Ethernet0/4]ipsec policy policy1

//配置通往FW3的提议

[FW1]ipsec proposal tran2

[FW1-ipsec-proposal-tran2]encapsulation-mode tun

//协商封装采取的模式

[FW1-ipsec-proposal-tran2]encapsulation-mode tunnel

[FW1-ipsec-proposal-tran2]tra

//协商传输所用的协议

[FW1-ipsec-proposal-tran2]transform esp

[FW1-ipsec-proposal-tran2]esp aut

//配置传输协议采取的加密算法为md5

[FW1-ipsec-proposal-tran2]esp authentication-algorithm md5

[FW1-ipsec-proposal-tran2]esp encryption-algorithm des

//创建生成IKE

[FW1]ike peer fw3

//指出本地的IP地址

[FW1-ike-peer-fw3]local-address 61.130.130.1 

[FW1-ike-peer-fw3]remote-add

//指出远端的IP地址

[FW1-ike-peer-fw3]remote-address 61.130.130.9

//定义一个共享密钥

[FW1-ike-peer-fw3]pre-shared-key 12345

[FW1-ike-peer-fw3]quit

//创建安全策略,指出安全策略协商采取的方式

[FW1]ipsec policy policy1 20 isakmp 

[FW1-ipsec-policy-isakmp-policy1-20]se

//安全应用访问控制列表

[FW1-ipsec-policy-isakmp-policy1-20]security acl 3001

[FW1-ipsec-policy-isakmp-policy1-20]pro

//指出安全提议

[FW1-ipsec-policy-isakmp-policy1-20]proposal tran2

[FW1-ipsec-policy-isakmp-policy1-20]ike-p

//指出IKE邻居

[FW1-ipsec-policy-isakmp-policy1-20]ike-peer fw3

[FW1-ipsec-policy-isakmp-policy1-20]quit


 防火墙FW2的配置

system-view 

System View: return to User View with Ctrl+Z.

[H3C]sysname FW2

[FW2]int eth0/0

[FW2-Ethernet0/0]ip add 192.168.2.1 24

//进入接口匹配值IP地址

[FW2-Ethernet0/0]int eth0/4

[FW2-Ethernet0/4]ip add

[FW2-Ethernet0/4]ip address 61.130.130.5 30

[FW2-Ethernet0/4]quit 

[FW2]ip rout

//配置默认路由

[FW2]ip route-static 0.0.0.0 0 61.130.130.6

[FW2]firewall packet-filter default permit 

[FW2]firewall zone trust 

//把接口eth0/0加入可信区域

[FW2-zone-trust]add interface eth0/0

[FW2-zone-trust]quit

[FW2]firewall zone unt

[FW2]firewall zone untrust 

//把接口eth0/4加入不可信区域

[FW2-zone-untrust]add interface eth0/4

//配置扩展访问控制列表

[FW2]acl number 3000 match-order auto

//创建访问控制列表规则

[FW2-acl-adv-3000]rule 10 permit ip source 192.168.2.0 0.0.0.255 destination 192.168.1.0 0.0.0.255

[FW2-acl-adv-3000]rule 20 deny ip source any destination any

//配置安全协商提议

[FW2]ipsec pro

[FW2]ipsec proposal tran1

[FW2-ipsec-proposal-tran1]encapsulation-mode tun

//配置采取封装类型

[FW2-ipsec-proposal-tran1]encapsulation-mode tunnel

[FW2-ipsec-proposal-tran1]transform esp

//配置传输协议采取的加密算法为md5

[FW2-ipsec-proposal-tran1]esp authentication-algorithm md5

[FW2-ipsec-proposal-tran1]esp encryption-algorithm des

//创建IKE

[FW2]ike peer fw1

[FW2-ike-peer-fw1]local-a

//指出本地和远端的IP地址

[FW2-ike-peer-fw1]local-address 61.130.130.5

[FW2-ike-peer-fw1]remote-ad

[FW2-ike-peer-fw1]remote-address 61.130.130.1

//定义一个共享密钥

[FW2-ike-peer-fw1]pre-shared-key 123456

//创建安全策略,指出安全策略协商采取的方式

[FW2]ipsec policy policy1 10 isakmp 

[FW2-ipsec-policy-isakmp-policy1-10]security acl 3000

[FW2-ipsec-policy-isakmp-policy1-10]pro

[FW2-ipsec-policy-isakmp-policy1-10]proposal tran1

//指出IKE邻居

[FW2-ipsec-policy-isakmp-policy1-10]ike-peer fw1

//在接口上应用

[FW2]int eth0/4

[FW2-Ethernet0/4]ipsec po

[FW2-Ethernet0/4]ipsec policy policy1


 防火墙FW3的配置

system-view 

System View: return to User View with Ctrl+Z.

[H3C]sysname FW3

[FW3]int eth0/0

[FW3-Ethernet0/0]

//由于防火墙原来有管理的IP地址,因此先去掉IP地址

[FW3-Ethernet0/0]undo ip add

[FW3-Ethernet0/0]ip add 192.168.3.1 24

[FW3-Ethernet0/0]loopback

//进入接口eth0/4,并配置IP地址

[FW3-Ethernet0/0]int eth0/4

[FW3-Ethernet0/4]ip add 61.130.130.9 30

[FW3-Ethernet0/4]quit

[FW3]ip rout

//配置默认路由

[FW3]ip route-static 0.0.0.0 0 61.130.130.10

//配置扩展访问控制列表

[FW3]acl number 3001 mat

[FW3]acl number 3001 match-order auto

//配置控制列表规则

[FW3-acl-adv-3001]rule 10 permit ip source 192.168.3.0 0.0.0.255 destination 192.168.1.0 0.0.0.255

[FW3-acl-adv-3001]rule 20 deny ip source any destination any

//配置安全协商提议

[FW3]ipsec proposal tran2

[FW3-ipsec-proposal-tran2]encapsulation-mode tun

//安全提议封装模式

[FW3-ipsec-proposal-tran2]encapsulation-mode tunnel 

[FW3-ipsec-proposal-tran2]tran

//安全提议传输协议

[FW3-ipsec-proposal-tran2]transform esp

[FW3-ipsec-proposal-tran2]esp aut

//配置传输协议采取的加密算法为md5

[FW3-ipsec-proposal-tran2]esp authentication-algorithm md5

[FW3-ipsec-proposal-tran2]esp e

[FW3-ipsec-proposal-tran2]esp encryption-algorithm des

//创建IKE

[FW3]ike peer fw3

//指出本地和远端的IP地址

[FW3-ike-peer-fw3]local-address 61.130.130.9

[FW3-ike-peer-fw3]remo

[FW3-ike-peer-fw3]remote-address 61.130.130.1

//定义一个共享密钥

[FW3-ike-peer-fw3]pre-shared-key 1234

[FW3-ike-peer-fw1]quit

//创建安全策略,指出安全策略协商采取的方式

[FW3]ipsec policy policy1 20 isakmp 

[FW3-ipsec-policy-isakmp-policy1-20]se

//安全应用访问控制列表

[FW3-ipsec-policy-isakmp-policy1-20]security acl 3001

[FW3-ipsec-policy-isakmp-policy1-20]pro

//指出安全提议

[FW1-ipsec-policy-isakmp-policy1-20]proposal tran2

[FW3-ipsec-policy-isakmp-policy1-20]ike-p

[FW3-ipsec-policy-isakmp-policy1-20]ike-peer fw1

[FW3-ipsec-policy-isakmp-policy1-20]quit

//在接口上应用安全策略

[FW3]int eth0/4

[FW3-Ethernet0/4]ipsec po

[FW3-Ethernet0/4]ipsec policy policy1


5、测试验证:

(1) 查看FW1的安全策略,如下图所示


IPsec 详细讲解和在企业网中的应用案例_第8张图片

2)配置tunnel后在FW1上ping19.168.1.1到192.168.2.1,如下图所示:

IPsec 详细讲解和在企业网中的应用案例_第9张图片

3) 未配置tunnel后在FW1上ping19.168.1.1到192.168.3.1,如下图所示:

IPsec 详细讲解和在企业网中的应用案例_第10张图片

4) 配置tunnel后在FW1上ping19.168.1.1到192.168.3.1,如下所示:

IPsec 详细讲解和在企业网中的应用案例_第11张图片