在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