通过博文CIsco路由器实现IPSec 虚拟专用网原理及配置详解已经初步了解IPSec 虚拟专用网的原理以及如何在Cisco的路由器上实现IPSec 虚拟专用网技术。千万不要以为在CIsco路由器可以实现IPSec 虚拟专用网,在CIsco ASA防火墙也可以实现,虽然原理是一致的,但是其配置过程,稍微有一些不同。下面主要讲解一下如何在Cisco ASA 防火墙上实现IPSec 虚拟专用网。
博文大纲:
一、案例拓补;
二、案例需求;
三、案例实施;
四、Cisco防火墙与Cisco路由器的区别;
五、IPSec 虚拟专用网故障排查;
一、案例拓补
二、案例需求
1.PC1使用IPSec 虚拟专用网访问PC3;
2.PC1可以telnetPC2;
三、案例实施
1)ASA防火墙的基本设置
ASA(config)# int e0/0
ASA(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
//Cisco ASA防火墙inside区域默认优先级为100
ASA(config-if)# ip add 192.168.1.1 255.255.255.0
ASA(config-if)# no sh
ASA(config-if)# int e0/1
ASA(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.
//Cisco ASA防火墙outside区域默认优先级为0
ASA(config-if)# ip add 100.1.1.1 255.255.255.0
ASA(config-if)# no sh
ASA(config-if)# route outside 0 0 100.1.1.2
//配置默认路由
ASA(config)# nat-control
//表示通过ASA防火墙的数据包都必须使用NAT地址转换技术
ASA(config)# nat (inside) 1 0 0
ASA(config)# global (outside) 1 int
INFO: outside interface address added to PAT pool
//将内部所有地址转换为外部接口地址,启用PAT的意思
2)配置NAT豁免(带ACL的nat 0)
虚拟专用网和NAT之间存在一定的冲突,若希望既可以访问互联网又可以访问虚拟专用网,就需要配置NAT豁免,让访问虚拟专用网的流量不做NAT转换。
ASA(config)# access-list nonat extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0
ASA(config)# nat (inside) 0 access-list nonat
//注意nat-id为0 表示使用NAT豁免,优先级最高
3)建立ISAKMP
在路由器上,默认已经启用ISAKMP/IKE协议,但是在ASA防火墙默认并没有启用!需要使用以下命令启用ISAKMP/IKE协议。
ASA(config)# crypto isakmp enable outside
//启用ISAKMP/IKE协议
4)配置管理连接策略
ASA(config)# crypto isakmp policy 1
//配置ISAKMP/IKE策略,序列号为1,数值越小越优先
ASA(config-isakmp-policy)# encryption aes
//指定用于身份验证采用aes加密算法(防火墙默认不可以使用des)
ASA(config-isakmp-policy)# hash sha
//验证数据完整性使用sha算法
ASA(config-isakmp-policy)# authentication pre-share
//设备验证方式采用预共享密钥
ASA(config-isakmp-policy)# group 1
//指定DH密钥组
5)配置预共享密钥
ASA(config)# crypto isakmp key 123456 address 200.1.1.2
//指定对等体为200.1.1.2,密钥是123456
IOS7.0版本以上的防火墙一般使用隧道组来配置密钥
6)配置Crypto ACL
其实呢,配置NAT豁免的ACL就可以使用!仅限于本博文的拓补情况。
7)配置传输集
ASA(config)# crypto ipsec transform-set ASA-set esp-aes esp-sha-hmac
//防火墙加密验证必须使用esp,不可使用AH验证
8)配置Crypto MAP
这里的配置命令与路由器稍微有些不同!命令如下:
ASA(config)# crypto map ASA-map 1 match address nonat
//创建Crypto-Map,名称为ASA-map,序列号为1,调用名称为nonat的ACL
ASA(config)# crypto map ASA-map 1 set peer 200.1.1.2
//ASA-map对应的对等体为200.1.1.2
ASA(config)# crypto map ASA-map 1 set transform-set ASA-set
//ASA-map调用刚才定义的传输集(ASA-set)
9)将Crypto map应用到outside接口上
ASA(config)# crypto map ASA-map int outside
到这里防火墙的配置基本已经完成!
10)R1路由的设置
R1(config)#int f1/0
R1(config-if)#ip add 100.1.1.2 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f0/0
R1(config-if)#ip add 11.1.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f2/0
R1(config-if)#ip add 200.1.1.1 255.255.255.0
R1(config-if)#no sh
//仅配置IP地址即可!
11) R2路由的配置
R2(config)#int f2/0
R2(config-if)#ip add 200.1.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int f0/0
R2(config-if)#ip add 192.168.2.1 255.255.255.0
R2(config-if)#no sh
R2(config)#ip route 0.0.0.0 0.0.0.0 200.1.1.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-isakmp)#exit
R2(config)#crypto isakmp key 123456 address 100.1.1.1
//必须保证算法、验证方式、共享密钥、DH密钥组号与防火墙设置一致
R2(config)#access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
//设置ACL
R2(config)#crypto ipsec transform-set R2-set esp-aes esp-sha-hmac
//与防火墙使用同样的验证方式
R2(config)#crypto map R2-map 1 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R2(config-crypto-map)#set peer 100.1.1.1
R2(config-crypto-map)#set transform-set R2-set
R2(config-crypto-map)#match address 100
R2(config-crypto-map)#int f2/0
R2(config-if)#crypto map R2-map
//创建map、设置共同体、定义传输方式、调用ACL,最后应用外部接口上
//这就不进行详细介绍了!
12)PC的配置
PC1的配置:
PC1(config)#int f0/0
PC1(config-if)#ip add 192.168.1.100 255.255.255.0
PC1(config-if)#no sh
PC1(config-if)#exit
PC1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
//配置IP地址及默认路由
PC2的配置:
PC2(config)#int f0/0
PC2(config-if)#ip add 11.1.1.100 255.255.255.0
PC2(config-if)#no sh
PC2(config)#ip route 0.0.0.0 0.0.0.0 11.1.1.1
PC2(config)#line vty 0 4
PC2(config-line)#pass 123456
PC2(config-line)#login
//配置默认路由,并启用Telnet
PC3的配置:
PC3(config)#int f0/0
PC3(config-if)#ip add 192.168.2.100 255.255.255.0
PC3(config-if)#no sh
PC3(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.1
//配置IP地址及默认路由
13)验证
PC1上进行验证:
PC1#telnet 11.1.1.100
Trying 11.1.1.100 ... Open
User Access Verification
Password:
PC2>
//telnet登录成功!
PC1#ping 192.168.2.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/75/112 ms
//PC1使用虚拟专用网与PC3进行通信
四、Cisco防火墙与Cisco路由器的区别
由于,防火墙由于自身的IOS的原因,在配置命令方面与路由器有一定的区别,但是并不是很明显!
1)默认配置的区别
在建立管理连接的过程中,Cisco ASA防火墙和路由器默认情况下使用的参数不同。
Cisco ASA防火墙使用的默认参数如下:
ASA(config)# show run crypto //查看管理连接默认参数
……………… //省略部分内容
crypto isakmp policy 65535
authentication pre-share
encryption 3des //加密算法为3des
hash sha
group 2 //默认使用DH组2
lifetime 86400
Cisco路由器使用的默认参数如下:
R2#show crypto isakmp policy //查看管理连接默认参数
……………… //省略部分内容
Default protection suite
encryption algorithm: DES - Data Encryption Standard (56 bit keys). //加密算法为des
hash algorithm: Secure Hash Standard
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #1 (768 bit) //默认使用DH组1
lifetime: 86400 seconds, no volume limit
在数据连接建立过程中,ASA防火墙只支持ESP协议。因此,如果路由器使用AH实现数据验证功能,将无法与ASA成功建立数据连接。
2)IKE协商默认是否开启
默认情况下,IKE协商在路由器中是开启的;而在ASA防火墙中是关闭。因此,在ASA防火墙中必须使用命令“crypto isakmp enable outside”开启IKE协商。
3)隧道模式特性的引入
严格意义上说,这并不能算是防火墙和路由器的配置差异,而是防火墙从6.x版本升级到7.0版本引入的特性,它主要用于简化IPSec会话的配置和管理。而且路由器配置共享密钥key的命令,ASA防火墙默认也支持。
4)接口安全级别对于IPSec流量的影响
防火墙存在一种限制,如果流量从一个接口进入,就不能从相同安全级别的端口流出。流量不能在同一安全级别的端口之间传输,这主要是从安全方面考虑而设定的一种特性。但是会对IPSec流量造成一定的影响。如果在现实环境中,碰到的这种情况,可以使用以下命令:
ASA(config)# same-security-traffic permit intra-interface
//允许流量进入和离开同一个接口(默认是禁止)
ASA(config)# same-security-traffic permit inter-interface
//允许流量通过具有相同安全级别的两个不同的接口
注意:ASA防火墙默认放行一切虚拟专用网的流量!
五、IPSec 虚拟专用网故障排查
常用的命令有:
1)show crypto isakmp sa命令
通过命令可以了解管理连接所处的状态(这里主要介绍主模式)!常见的状态,如图:
2)debug crypto isakmp 命令
如果希望了解整个过程,就可以使用这个命令,这个命令是实际工作中最常用于诊断和排查管理连接出现问题的命令。
———————— 本文至此结束,感谢阅读 ————————