IPsec VPN-ASA&山石
一、多厂商对接IPsec VPN背景
IPsec VPN技术是IETF所提出的公有安全框架,因此网络和安全厂商都可以根据公开的标准实现IPsec VPN技术。客户通常出于安全架构设计或者成本方面考虑,可能会采用不同厂商的防火墙部署IPsec VPN,这就需要工程师了解并熟练操作不同厂商之间的防火墙,在此基础上进行IPsec VPN的部署。
二、案例拓扑图
1、简化拓扑图
拓扑图解释:某公司两地办公网络边界各部署了一台防火墙(Site-A是思科ASA,Site-B是山石SG6K),Site-A网络中存在两个VLAN(VLAN10和VLAN20),办公子网地址设计为192.168.1.0/24和192.168.2.0/24,Site-B网络中存在两个VLAN(VLAN30和VLAN40),子网地址设计为192.169.3.0/24和192.169.4.0/24。两地的核心交换机充当办公子网的网关,网关地址为254。现在需要在两地建立IPsec VPN,对Site-A网络中的VLAN 10网段流量和Site-B网络中的VLAN 30网段流量执行安全保护。
2、实验拓扑图
实验拓扑图描述了网元之间的物理连接方式。
三、案例设计
现在对案例进行设计,围绕设备信息、互联表、IP规划、IPsec参数规划、配置脚本等方面进行。
1、设备信息
2、互联表
3、IP规划
4、IPsec参数规划
5、配置脚本
根据设备信息、互联表、IP规划、IPsec参数规划编写设备配置脚本。
CiscoASA
config t
hostname CiscoASA
interface GigabitEthernet0/0
description To-ISP-G0/0
nameif Outside
security-level 0
ip address 7.8.9.2 255.255.255.252
interface GigabitEthernet0/1
description To-Site-A-Core-G0/0
nameif Inside
security-level 100
ip address 10.0.1.1 255.255.255.252
route Outside 0.0.0.0 0.0.0.0 7.8.9.1 1
route Inside 192.168.1.0 255.255.255.0 10.0.1.2 1
route Inside 192.168.2.0 255.255.255.0 10.0.1.2 1
#定义ISAKMP策略
crypto ikev1 policy 10
authentication pre-share
encryption aes-256
hash sha
group 14
lifetime 86400
#建立隧道组
tunnel-group 7.8.10.2 type ipsec-l2l
tunnel-group 7.8.10.2 ipsec-attributes
ikev1 pre-shared-key *****
#定义IPsec策略
crypto ipsec ikev1 transform-set VPN_TRANS esp-aes-256 esp-sha-hmac
#定义感兴趣流
access-list VPN extended permit ip 192.168.1.0 255.255.255.0 192.169.3.0 255.255.255.0
#创建加密映射集
crypto map VPN_MAP 10 match address VPN
crypto map VPN_MAP 10 set peer 7.8.10.2
crypto map VPN_MAP 10 set ikev1 transform-set VPN_TRANS
crypto map VPN_MAP interface Outside
#Outside接口启用IPsec
crypto ikev1 enable Outside
HillstoneSG6K
命令行配置
config
hostname HillstoneSG6K
interface ethernet0/1
zone "untrust"
ip address 7.8.10.2 255.255.255.252
manage ping
exit
interface ethernet0/2
zone "trust"
ip address 20.0.1.1 255.255.255.252
manage ssh
manage ping
manage https
exit
#配置路由
ip vrouter "trust-vr"
snatrule id 1 from address-book "Any" to address-book "Any" service "Any" eif ethernet0/1 trans-to eif-ip mode dynamicport sticky
ip route 0.0.0.0/0 7.8.10.1
ip route 192.169.3.0/24 20.0.1.2
ip route 192.169.4.0/24 20.0.1.2
exit
#配置第一阶段提案
isakmp proposal "pre-share-sha-aes256-g14"
encryption aes-256
group 14
exit
#配置对等体
isakmp peer "CiscoASA"
isakmp-proposal "pre-share-sha-aes256-g14"
pre-share "$01011Nou$7MdQ7dOB+vGt5GrHwcSPtzJ7I8Y="
peer 7.8.9.2
dpd interval 10 retry 3 on-demand
interface ethernet0/1
exit
#配置第二阶段提案
ipsec proposal "esp-sha-aes256"
hash sha
encryption aes-256
exit
#配置感兴趣流路由
ip vrouter "trust-vr"
ip route 192.168.1.0/24 "tunnel1"
exit
#配置隧道绑定
tunnel ipsec "IPsec VPN" auto sa-index 1
ipsec-proposal "esp-sha-aes256"
auto-connect
accept-all-proxy-id
isakmp-peer "CiscoASA"
id local 192.169.3.0/24 remote 192.168.1.0/24 service "Any"
exit
#配置隧道接口
interface tunnel1
zone "VPNHub"
tunnel ipsec "IPsec VPN"
exit
图形化配置
1)配置接口
2)配置路由
3)配置阶段1提案
4)配置阶段2提案
5)配置VPN对等体
6)配置IPsec VPN
此步骤类似思科配置映射集。
7)配置隧道接口
8)配置感兴趣流路由
9)配置安全策略
安全策略方面思科和山石有着明显区别。思科针对VPN流量默认放行,而山石需要配置区域之间的放行策略,否则VPN流量会被拒绝。
Site-X-Core
Site-A-Core#
hostname Site-A-Core
interface GigabitEthernet0/0
description To-CiscoASA-G0/1
no switchport
ip address 10.0.1.2 255.255.255.252
negotiation auto
!
interface GigabitEthernet0/1
description To-Site-A-VPN-E0
switchport access vlan 10
switchport mode access
negotiation auto
!
interface GigabitEthernet0/2
description To-Site-A-E0
switchport access vlan 20
switchport mode access
negotiation auto
!
interface Vlan10
ip address 192.168.1.254 255.255.255.0
!
interface Vlan20
ip address 192.168.2.254 255.255.255.0
ip route 0.0.0.0 0.0.0.0 10.0.1.1
Site-B-Core#
hostname Site-B-Core
interface GigabitEthernet0/0
description To-HillstoneSG6K-Ethernet0/2
no switchport
ip address 20.0.1.2 255.255.255.252
negotiation auto
!
interface GigabitEthernet0/1
description To-Site-B-VPN-E0
switchport access vlan 30
switchport mode access
negotiation auto
!
interface GigabitEthernet0/2
description To-Site-B-E0
switchport access vlan 40
switchport mode access
negotiation auto
interface Vlan30
ip address 192.169.3.254 255.255.255.0
!
interface Vlan40
ip address 192.169.4.254 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.0.1.1
Terminal PC
Site-A-VPN#
sudo hostname Site-A-VPN
sudo ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
sudo route add -net 0.0.0.0/0 dev eth0
Site-A#
sudo hostname Site-A
sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0 up
sudo route add -net 0.0.0.0/0 dev eth0
Site-B-VPN#
sudo hostname Site-B-VPN
sudo ifconfig eth0 192.169.3.1 netmask 255.255.255.0 up
sudo route add -net 0.0.0.0/0 dev eth0
Site-B#
sudo hostname Site-B
sudo ifconfig eth0 192.169.4.1 netmask 255.255.255.0 up
sudo route add -net 0.0.0.0/0 dev eth0
四、案例配置说明及测试
1、阶段提案
思科和山石的阶段一提案所采用的验证算法、加密算法、DH组、身份认证方式、生存时间需要一致,此外阶段一的运行模式需要一致(默认思科阶段一采用主模式,山石在协商模式选择中需要指定为主模式),否则无法建立ISAKMP SA(即第一阶段无法建立)。提案名不需要一致,因为提案名是不会封装进信令数据包中的。
思科和山石的阶段二提案所采用的验证算法、加密算法、封装协议、生存时间需要一致,否则无法建立IPsec SA(即第二阶段无法建立)。对等体两边都需要选择采用ESP作为封装协议。思科定义阶段二的提案策略叫做转换集(Transform set),转换集定义了传输数据包的验证算法和加密算法,提供了数据完整性、机密性、数据认证功能,Transform set会在快速模式下进行协商。山石定义阶段二的提案策略叫做隧道IPsec(Tunnel IPsec),隧道IPsec定义了对等体信息、封装模式、关联的P2提议、调用的感兴趣流(山石防火墙中叫做代理ID)等。
同时在IPsec VPN配置-高级配置中建议开启【自动连接】选项,【自动连接】表示山石防火墙会在60s内检查SA的状态,如果SA未建立则自动发起协商。
2、感兴趣流
思科防火墙中的感兴趣流通过Access-list直接定义,并在加密映射集中调用。山石防火墙中的感兴趣流在IPsec VPN配置-代理列表中填写(将代理ID选项设置为手工),本地IP/掩码填写源网络,远程IP/掩码填写目的网络,服务选择Any。
3、安全策略
有关于安全策略,思科防火墙有一条默认特性,通过show run all sysopt命令查看。sysopt connection permit-vpn表示默认对VPN流量放行,因此思科防火墙中无需编写ACL,即使编写了也不生效。山石防火墙则完全相反,对任何流量都需要设置安全策略,否则无法放行,因此山石防火墙策略中需要放行安全域为VPNHub到安全域为trust方向的流量,同时增加一条反向的策略(从安全域为trust到安全域为VPNHub方向的流量)。
思科防火墙默认VPN放行策略:
山石防火墙配置安全策略:
4、SA建立监控
山石防火墙阶段1 SA建立情况:
思科防火墙阶段1 SA建立情况:
山石防火墙阶段2 SA建立情况:
思科防火墙阶段2 SA建立情况:
CiscoASA# show crypto ipsec sa detail
interface: Outside
Crypto map tag: VPN_MAP, seq num: 10, local addr: 7.8.9.2
access-list VPN extended permit ip 192.168.1.0 255.255.255.0 192.169.3.0 255.255.255.0
local ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.169.3.0/255.255.255.0/0/0)
current_peer: 7.8.10.2
#pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
#pkts decaps: 1737, #pkts decrypt: 1737, #pkts verify: 1737
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts comp failed: 0, #pkts decomp failed: 0
#pre-frag successes: 0, #pre-frag failures: 0, #fragments created: 0
#PMTUs sent: 0, #PMTUs rcvd: 0, #decapsulated frgs needing reassembly: 0
#TFC rcvd: 0, #TFC sent: 0
#Valid ICMP Errors rcvd: 0, #Invalid ICMP Errors rcvd: 0
#pkts no sa (send): 0, #pkts invalid sa (rcv): 0
#pkts encaps failed (send): 0, #pkts decaps failed (rcv): 3474
#pkts invalid prot (rcv): 0, #pkts verify failed: 1737
#pkts invalid identity (rcv): 1737, #pkts invalid len (rcv): 1023864576
#pkts invalid pad (rcv): 0,
#pkts invalid ip version (send): 0, #pkts invalid ip version (rcv): 0
#pkts invalid len (send): 0, #pkts invalid len (rcv): 0
#pkts invalid ctx (send): 0, #pkts invalid ctx (rcv): 0
#pkts invalid ifc (send): 0, #pkts invalid ifc (rcv): 0
#pkts failed (send): 0, #pkts failed (rcv): 0
#pkts replay rollover (send): 0, #pkts replay rollover (rcv): 0
#pkts replay failed (rcv): 0
#pkts min mtu frag failed (send): 0, #pkts bad frag offset (rcv): 0
#pkts internal err (send): 0, #pkts internal err (rcv): 1737
local crypto endpt.: 7.8.9.2/0, remote crypto endpt.: 7.8.10.2/0
path mtu 1500, ipsec overhead 74(44), media mtu 1500
PMTU time remaining (sec): 0, DF policy: copy-df
ICMP error validation: disabled, TFC packets: disabled
current outbound spi: 7C187631
current inbound spi : 03301843
inbound esp sas:
spi: 0x03301843 (53483587)
SA State: active
transform: esp-aes-256 esp-sha-hmac no compression
in use settings ={L2L, Tunnel, IKEv1, }
slot: 0, conn_id: 1, crypto-map: VPN_MAP
sa timing: remaining key lifetime (kB/sec): (3914883/26021)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0xFFFFFFFF 0xFFFFFFFF
outbound esp sas:
spi: 0x7C187631 (2081977905)
SA State: active
transform: esp-aes-256 esp-sha-hmac no compression
in use settings ={L2L, Tunnel, IKEv1, }
slot: 0, conn_id: 1, crypto-map: VPN_MAP
sa timing: remaining key lifetime (kB/sec): (3915000/26020)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0x00000000 0x00000001
5、VPN测试
测试方案:
Site-B-VPN ping Site-A-VPN
Site-A ping Site-B-VPN
预期结果:
Site-B-VPN ping Site-A-VPN,正常通信,流量经过IPsec VPN。
Site-A ping Site-B-VPN,无法通信。
测试结果如下。
测试1结果:
查看山石防火墙策略命中情况:
测试2结果:
公网所捕获的数据报文:
评论