在ASA防火墙上实现IPSec ×××
实验案例
nIPSec ×××故障排查
1.show cryptoisakmp sa
上一章已经简单讲解了命令“show cryptoisakmp sa”,通过它可以了解管理连接所处的状态(这里只介绍主模式)。
MM_NO_STATE:ISAKMP SA建立的初始状态,管理连接建立失败也会处于该状态。
MM_SA_SETUP:对等体之间ISAKMP策略协商成功后处于该状态。
MM_KEY_EXCH:对等体通过DH算法成功建立共享密钥,此时还没有进行设备验证。
MM_KEY_AUTH:对等体成功进行设备验证,之后会过渡到QM_IDLE状态。
QM_IDLE:管理连接成功建立,即将过渡到阶段2的数据连接建立过程。
2.debugcrypto isakmp
如果希望更加详细的了解整个过程,可以使用“debug crypto isakmp”命令,该命令是实际工作中最常用于诊断和排查管理连接出现问题的命令。
n防火墙和路由器的区别
1.默认配置的区别
在建立管理连接的过程中,Cisco ASA防火墙和路由器默认情况下使用的参数不同。
防火墙并不支持命令show cryptoisakmp policy,要想查看管理连接的默认参数,需在初始配置下启用ISAKMP策略,然后通过命令show run进行观察。与路由器相比,默认的加密算法变为3DES,默认的DH组使用2,默认的设备验证方法变为预共享密钥,而默认的HASH算法以及生存周期没有变化。
ASA防火墙采用了更为安全的默认配置,这是Cisco公司设备技术革新的一种表现。需要大家注意的是,如果IPSec对等体双方是ASA防火墙和Cisco路由器,那么使用默认的ISAKMP策略是无法建立连接的。
另外,在数据连接建立过程中,ASA防火墙只支持ESP协议,因此,如果路由器使用AH协议实现数据验证功能,将无法与ASA成功的建立数据连接。
2.IKE协商默认是否开启
默认情况下,IKE协商在路由器中是开启的,而在ASA防火墙中是关闭的。因此,在ASA防火墙中必须使用命令crypto isakmp enable outside开启IKE协商。
3.隧道组特性的引入
严格意义上说,这并不是算是防火墙和路由器的配置差异,而是防火墙从6.x版本升级到7.0版本引入的新特性,它主要用于简化IPSec会话的配置和管理。而且路由器配置共享密钥key的命令(crypto isakmp key key-string address peer-address),ASA防火墙依然支持。
4.接口安全级别对于IPSec流量的影响
防火墙存在一种限制,如果流量从一个接口进入,就不能从相同安全级别的端口流出。即流量不能在同一安全级别的端口之间传输,这主要是从安全方面考虑而设定的一种特性,但可能对IPSec流量造成一定的影响。
假如ASA防火墙处于网络的中心节点(例如公司总部),为了实现对分公司网络流量的同一管理,要求分公司的访问流量必须通过总公司。这就会出现上述情况,造成分公司之间无法通信。这时就需要使用如下命令来实现。
ASA(config)# same-security-traffic permit intra-interface
intra-interface参数允许流量进入和离开同一个接口,多用于L2L会话中的中心设备。
intra-interface参数允许相同级别的接口之间的流量可以访问。
案例实验
实验环境
实验拓扑需要一台防火墙、两台路由器(其中一台模拟ISP),两台PC客户端,按如下图所示连接在一起。
需求描述
路由器模拟ISP服务提供商
在ASA防火墙与路由器之间配置IPSec ×××
具体步骤
ASA1的配置:
1.基本配置
ASA1(config)#int e0/0
ASA1(config-if)#nameif inside
ASA1(config-if)#ip address 192.168.1.1 255.255.255.0
ASA1(config-if)#no shutdown
ASA1(config-if)#int e0/1
ASA1(config-if)#nameif outside
ASA1(config-if)#ip address 192.168.2.1 255.255.255.0
ASA1(config-if)#no shutdown
ASA1(config)#route outside 0 0 192.168.2.2
ASA1(config)#nat-control
ASA1(config)#nat (inside) 1 0 0
ASA1(config)#global (outside) 1 int
2.配置NAT豁免(带ACL的nat0)
本案例中×××流量不做NAT转换,配置NAT豁免如下:
ASA1(config)#access-list nonat extended permit ip 192.168.1.0 255.255.255.0192.168.4.0 255.255.255.0
ASA1(config)#nat (inside) 0 access-list nonat
3.建立ISAKMP
使用ISAKMP/IKE在ASA防火墙上构建和维护IPsec会话,需要通过如下命令启用ISAKMP/IKE。
ASA1(config)#crypto isakmp enable outside
4.配置管理连接策略
ASA1(config)#crypto isakmp policy 1
ASA1(config-isakmp-policy)#encryption aes
ASA1(config-isakmp-policy)#hash sha
ASA1(config-isakmp-policy)#authentication pre-share
ASA1(config-isakmp-policy)#group 1
5.配置预共享密钥
ASA1(config)#crypto isakmp key benet address 192.168.3.2
7.0版本以上的防火墙一般使用隧道组来配置密钥。
ASA1(config)#tunnel-group 192.168.3.2 type ipsec-l2l
ASA1(config)#tunnel-group 192.168.3.2 ipsec-attributes
ASA1(config-ipsec)#pre-shared-key benet
ASA1(config-ipsec)#exit
6.配置crypto ACL
ASA1(config)#access-list *** extended permit ip 192.168.1.0 255.255.255.0 192.168.4.0 255.255.255.0
7.交换数据连接的传输集
ASA1(config)#crypto ipsec transform-set benet-set esp-aes esp-sha-hmac
8.配置crypto map
ASA1(config)#crypto map benet-map 1 match address ***
ASA1(config)#crypto map benet-map 1 set peer 192.168.3.2
ASA1(config)#crypto map benet-map 1 set transform-set benet-set
9.将Crypto Map应用到outside接口上
ASA1(config)#crypto map benet-map interface outside
ISP的配置
ISP(config)#int f0/0
ISP(config-if)#ip address 192.168.2.2 255.255.255.0
ISP(config-if)#no shutdown
ISP(config-if)#int f1/0
ISP(config-if)#ip address 192.168.3.1 255.255.255.0
ISP(config-if)#no shutdown
R2的配置
R2(config)#int f0/0
R2(config-if)#ip address 192.168.3.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#int f1/0
R2(config-if)#ip address 192.168.4.1 255.255.255.0
R2(config-if)#no shutdown
R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.3.1
R2(config)#crypto isakmp policy 1
R2(config-isakmp)#encryption aes
R2(config-isakmp)#hash sha
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 1
R2(config)#crypto isakmp key 0 benet address 192.168.2.1
R2(config)#access-list 100 permit 192.168.4.0 0.0.0.255 192.168.1.0 0.0.0.255
R2(config)#crypto ipsec transform-set benet-set esp-aes esp-sha-hamc
R2(cfg-crypto-trans)#mode tunnel
R2(cfg-crypto-trans)#exit
R2(config)#crypto map benet-map 1 ipsec-isakmp
R2(config-crypto-map)#set peer 192.168.2.1
R2(config-crypto-map)#set transform-set benet-set
R2(config-crypto-map)#match address 100
R2(config)#interface f0/0
R2(config-if)#crypto map benet-map
R3的配置
R3(config)#int f0/0
R3(config-if)#ip address 192.168.1.2 255.255.255.0
R3(config-if)#no shutdown
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
R4的配置
R4(config)#int f0/0
R4(config-if)#ip address 192.168.4.2 255.255.255.0
R4(config-if)#no shutdown
R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.4.1
验证结果:
R3去pingR4
R4去pingR3