目录:
IPSec的特性(IPSec之所以安全是由它的特性决定的):... 3
IPSec 范畴的VPN中各种形式的大体配置步骤:... 6
3.实施IPSec Dynamic Lan-to-Lan. 16
简介:
VPN(Vritual private Network 虚拟专用网络),其功能是在公网上建立专用的网络,进行加密通讯。在企业网络中广泛使用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN特点:成本低,易于使用。
分类:
1.在路由上实现的VPN可分为:
IPSec VPN:
1、 LAN-to-LAN(基于PSK、PKI);
PSK:预共享密钥
PKI:证书
2、 GRE Over IPSec 基于IPSec的GRE;
3、 Dyvpn(mgre)动态VPN;
4、 Get VPN;
5、 Remote access VPN (easy VPN)
SSL VPN:(也叫Web VPN,也属于RemoteVPN,通过用户认证和证书认证)
2.在ASA防火墙上实现的VPN:
IPSec VPN:
1、 LAN-to-LAN(基于PSK、PKI);
PSK:预共享密钥
PKI:证书
2、 Get VPN;
3、 Remote access VPN (easy VPN)
SSL VPN:(也叫Web VPN)
Remote VPN,通过用户认证和证书认证
Anyconnect(IPSec,SSL)
IPSec VPN:
VPN的实施是隧道技术的与数据加密技术的结合,二者缺一不可。IPSec是数据加密传输技术中一个使用最广泛且最经典的技术方案。IPSec最突出,也是最主要的功能就是保证VPN数据的安全传输。
IPSec可以和一般的隧道协议一起使用,也可以单独作为隧道协议建立隧道
由于一般的隧道协议不具备数据加密的安全特性,所以要IPSec与之一起使用,保证隧道数据的安全性。当然,IPSec也可以单独作为一种隧道协议建立隧道,这样的好处就是不需要借助其他任何的隧道协议建立VPN。到底是怎样的使用方法要根据实施者自己来确定。
注:IPSec只支持对单播。
IPSec能实现的功能有:
数据源认证(Data origin authentication);
保证数据的完整性(Data integrity);
保证数据私密性(Data confidentiality)
防止中间人攻击(Man-in-the-Middle)
防止数据被重放(Anti-Replay)
数据源认证保证数据是从真正的发送者发来的,而不是来自于第三方攻击者。
保护数据完整性是保证数据不会被攻击者改动。
保证数据私密性是保证数据不会被攻击者读取。
防止中间人攻击是防止数据被中间人截获。
防止数据被重放也可以认为是防止数据被读取和改动。
IPSec的特性(IPSec之所以安全是由它的特性决定的):
加密
数据完整性
对等体身份认证
反重放保护
IPSec的实施包含两个阶段
Phase one:
协商安全参数,保护phasetwo安全协商。使用ISAKMP(UDP:500)协议,是针对密钥安全的,保证密钥的安全传输、交换以及存储,主要是对密钥进行操作而不是针对用户的具体数据。
参数:
加密:对称加密(Des(56位加密),3Des(168),Aes-128,Aes-256)
非对称加密---Rsa
DH(Diffie Hellman)密钥交换算法:Group1-768位,Group2-1024,Group3-2048
(通过离散数学算法求模产生长度不等加密密钥,不可到处与查看)
完整性算法:根据Key,利用Hash算法(MD5,SHA-1)得出一个Hash值,接受方以同样的方式得出Hash算法,一致的话就表明数据就是完整的。
对等体身份认证:PKI(通过证书方法实现的)
psk(预共享密钥,要手动配置,发送方根据PSK+随机ID值通过Hash算法得出一个值发送给接受方,接收 方只截取其中的ID,然后加上自己的PSK,通过Hash算法得出一样的值,双方一样,认证成功)
Phase two:
加密算法(Encryption):DES,3DES,AES 128,AES 192 ,AES 256
Hash算法(HMAC):SHA-1,MD5
IPSec协商过程:
IPSec的协商主要分为主模式和快速模式。主模式用来使对等体都同意IKE SA参数。快速模式用来协商IPSec安全联盟的参数。
第一阶段:主模式
主模式执行3步,6个数据包的双向交换.过程如下:
1.对等体间协商如何来保护管理连接.(使用加密变换集来保护)
2.对等体间使用DH算法来共享密钥以及保护连接.
3.对等体间进行彼此的验证.
发送消息1 Initiator==>Responter
发送方向接受方发送一条策略提议,包含加密机制,策略机制,Diffie-Hellman,认证机制,生存周期
发送消息2 Initiator<==Responter
接收方查看IKE策略消息并在自己的策略列表中查找匹配的,回应一条消息给发送者。
(总的来说,主模式第1、2消息是用来协商参数如(加密机制,策略机制,Diffie-Hellman,认证机制,生存周期))
主模式第3、4条消息其实就是DH算法中需要交换的几个参数然后路由器再通过DH算法计算出的公钥计算出以下几个参数:
SKEYID_D:计算后续的IPSec密钥资源;
SKEYID_A:提供IKE消息的数据完整性和认证;
SKEYID_E:加密IKE消息。
第5、6消息是用来验证对等体身份的,从第5个包起,后面从所有包将会加密,只不过不同的是,第5、6个包和第二阶段协商的3个包都是通过第一阶段协商的安全策略进行加密的,而用户通信的数据则是用第二阶段协商的IPSec SA策略进行加密和认证的,至于密钥两者是否一样,就要看在第二阶段是否定义了PFS策略,如果用了,那第二阶段的密钥将于第一阶段的不同,否则一样。
第二阶段:快速模式
phase 2的目标是协商IPSEC SA,而且只有一种模式,快速模式,快速模式的协商是受IKE SA保护的
消息1---发送方发送一条报文,其中包含HASH,IPSEC策略提议,NONCE和可选的DH,身份ID
HASH:是用于给接受方作完整性检查的,用于再次认证对等体(必须)HASH的成分和5-6阶段一样
IPSEC策略提议:其中包括了安全协议,SPI,散列算法,隧道模式,IPSEC SA生命周期(必须)
NONCE:用于防重放攻击,还被用作密码生成的材料,仅当启用PFS时用到
ID:描述IPSEC SA是为哪些地址,协议和端口建立的
DH:重新协商IPSEC SA实使用的密钥(正常情况下IPSEC阶段使用的密钥都是由skeyID_d衍生而来,密钥之间都有一定的关系,就算IPSEC SA超时,新的KEY还是和skeyID_d有一定的关系)
消息2---使用相同的消息进行相应
3消息
发送方发送第三条消息,其中包含一个HASH,其作用是确认接受方的消息以及证明发送方处于Active状态(表示发送方的第一条消息不是伪造的)
IPSec 范畴的VPN中各种形式的大体配置步骤:
1.配置IKE(isakmp)策略:eg.crypto isalmp policy 10
定义IKE阶段1的一些策略:加密算法(Encryption),Hash算法(HMAC,哈希
算法验证码),密钥算法(Diffie-Hellman,DH),认证方式(Authentication)
2.定义认证标示;
无论前面定义了何种认证方式,都要添加认证信息,如密码,数字证书等。
3.配置IPSectransfrom;
定义阶段2中的一些加密算法以及HMAC算法,此transfrom定义vpn流量中的
数据包收到怎样的保护。
4.定义感兴趣的流量;
定义那些流量通过VPN来传输,通过IPSec来保护;通过ACL来匹配流量,ACL
中permit的标示加密,deny的表示不加密。ACL中不能用any表示源或目标,
否则会出问题。
5.创建crypto map;
将之前定义的ACL,加密数据发往的对端,以及IPSectransform结合在crypto map
中.
6.将crypto map应用与接口;
把crypto map应用到三层的可路由接口。
IPSEC VPN几种配置实例
一.实验拓扑
环境说明:
上海、武汉两个远程公司要通过各自的私有IP地址来连接,如,R1要通过自己的10.1.1.1与R3的192.168.1.1连接。通过中间的ISP路由器(即Internet)来实现连接,但是 ISP路由器只能让R1与R3的fa0/0接口之间通信,路由表中不能出现R1,R3的环回地址(相当于两个公司的内部私有地址),即不能让他们通信。ISP上不配置任何的路由。配置完IPSec Lan-to-Lan VPN之后让上海的10.1.1.1能与武汉的192.168.1.1通信。
二.实验目的
.理解IPSec VPN的原理;
.掌握Ipsec VPN的配置;
.学会在不同的环境中灵活应用IPSec的静态与动态;
.比较GRE与IPSec的区别并掌握 GREover IPsec的配置;
.比较IPSec的单独使用与IPSec、GRE一起使用的异同,并学会灵活掌握他们的适用环境。
三.实验要求
.通过设置IPSec LAN-to-LAN来实现上海与武汉两公司通过私有地址的访问(即静态的站点到站点ipsec vpn);
.假设上海为总公司,用的公网地址是固定的,武汉为分公司,用动态公网IP,通过设置动态LAN-to-LAN实现两个公司用私有地址的连通;
.变换环境,两公司之间通过GRE通道连接,通过IPSec来加密两公司的GRE交流数据,保证安全性。
(以上实验中,R1-IPSecGW的fa0/0到R3-IPSecGW的fa0/0接口的所有地址假设是用的公网地址)
四.实验配置
1.基本配置
R1-IPSecGW配置:
为了模拟更加真实的环境,把NAT技术也加上
R1-IPSecGW#config t
Enter configuration commands, one per line. End with CNTL/Z.
R1-IPSecGW(config)#interface Loopback0
R1-IPSecGW(config-if)# ip address 10.1.1.1255.255.255.0
R1-IPSecGW(config-if)# ip nat inside
*Sep 6 17:40:50.555: %LINEPROTO-5-UPDOWN: Line protocol on InterfaceLoopback0, changed state to up
*Sep 6 17:40:50.987: %LINEPROTO-5-UPDOWN: Line protocol on Interface NVI0,changed state to up
R1-IPSecGW(config-if)#interfaceFastEthernet0/0
R1-IPSecGW(config-if)# ip address12.12.12.1 255.255.255.0
R1-IPSecGW((config-if)#no shut
R1-IPSecGW(config-if)# ip nat outside
R1-IPSecGW(config-if)#exit
R1-IPSecGW(config)#ip route 0.0.0.0 0.0.0.012.12.12.2
//用默认路由与ISP连接
R1-IPSecGW(config)#ip access-list extendedNAT
R1-IPSecGW(config-ext-nacl)#deny ip 10.1.1.00.0.0.255 192.168.1.0 0.0.0.255
R1-IPSecGW(config-ext-nacl)# permit ip10.1.1.0 0.0.0.255 any
//NAT流量与IPSec流量是不能兼容的,所以要把通过IPSec保护的源数据流量排除NAT。
R1-IPSecGW(config-ext-nacl)#exit
R1-IPSecGW(config)#ip nat inside sourcelist NAT interface FastEthernet0/0 overload
ISP配置:
因为ISP模拟的是internet,所以只需配上IP地址即可
ISP#config t
Enter configuration commands, one perline. End with CNTL/Z.
ISP(config)#hostname ISP
ISP(config)#interface FastEthernet0/0
ISP(config-if)#ip address 12.12.12.2255.255.255.0
ISP(config-if)#no shut
ISP(config-if)#interface FastEthernet0/1
ISP(config-if)#ip address 23.23.23.1255.255.255.0
ISP(config-if)#no shut
ISP(config-if)#exit
R3-IPSecGW配置:
配置原理同R1-IPSecGW,也用到NAT,默认路由连接Internet
R3-IPSecGW#config t
Enter configuration commands, one perline. End with CNTL/Z.
R3-IPSecGW(config)#interface Loopback0
R3-IPSecGW(config-if)# ip address192.168.1.1 255.255.255.0
R3-IPSecGW(config-if)# ip nat inside
*Sep 6 18:19:43.879: %LINEPROTO-5-UPDOWN: Line protocol on InterfaceLoopback0, changed state to up
*Sep 6 18:19:44.315: %LINEPROTO-5-UPDOWN: Line protocol on Interface NVI0,changed state to up
R3-IPSecGW(config-if)#interfaceFastEthernet0/0
R3-IPSecGW(config-if)# ip address23.23.23.2 255.255.255.0
R3-IPSecGW(config-if)#no shut
R3-IPSecGW(config-if)# ip nat outside
R3-IPSecGW(config-if)#exit
R3-IPSecGW(config)#ip route 0.0.0.0 0.0.0.023.23.23.1
R3-IPSecGW(config)#ip access-list extendedNAT
R3-IPSecGW(config-ext-nacl)#deny iP 192.168.1.00.0.0.255 10.1.1.0 0.0.0.255
R3-IPSecGW(config-ext-nacl)# permit ip192.168.1.0 0.0.0.255 any
R3-IPSecGW(config-ext-nacl)#exit
R3-IPSecGW(config)#ip nat inside sourcelist NAT interface FastEthernet0/0 overload
2.实施IPSec Lan-to-Lan
这个实验也就是单独使用的IPSec来实现的站点到站点的VPN(没有借助其他隧道协议),IPSec是自建自保形式(自己建隧道自己加密数据保证安全性)。
2.1.设置IKE(isakmp)策略
第一阶段是设置策略,策略默认是有的,而且不止一个,我们可以通过show crypto isakamp policy查看
R1-IPSecGW(config)#do sho crypto isa polic
Default IKE policy
Protection suite of priority 65507
encryption algorithm: AES -Advanced Encryption Standard (128 bit keys).
hash algorithm: SecureHash Standard
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #5 (1536bit)
lifetime: 86400seconds, no volume limit
Protection suite of priority 65508
encryption algorithm: AES -Advanced Encryption Standard (128 bit keys).
hash algorithm: SecureHash Standard
authentication method: Pre-SharedKey
Diffie-Hellman group: #5 (1536bit)
lifetime: 86400seconds, no volume limit
Protection suite of priority 65509
encryption algorithm: AES -Advanced Encryption Standard (128 bit keys).
hash algorithm: MessageDigest 5
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #5 (1536bit)
lifetime: 86400seconds, no volume limit
Protection suite of priority 65510
encryption algorithm: AES -Advanced Encryption Standard (128 bit keys).
hash algorithm: MessageDigest 5
authentication method: Pre-SharedKey
Diffie-Hellman group: #5 (1536bit)
lifetime: 86400seconds, no volume limit
Protection suite of priority 65511
encryption algorithm: Three keytriple DES
hash algorithm: SecureHash Standard
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #2 (1024bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65512
encryption algorithm: Three keytriple DES
hash algorithm: SecureHash Standard
authentication method: Pre-SharedKey
Diffie-Hellman group: #2 (1024bit)
lifetime: 86400seconds, no volume limit
Protection suite of priority 65513
encryption algorithm: Three keytriple DES
hash algorithm: MessageDigest 5
authentication method: Rivest-Shamir-AdlemanSignature
Diffie-Hellman group: #2 (1024bit)
lifetime: 86400seconds, no volume limit
Protection suite of priority 65514
encryption algorithm: Three keytriple DES
hash algorithm: Message Digest 5
authentication method: Pre-SharedKey
Diffie-Hellman group: #2 (1024bit)
lifetime: 86400seconds, no volume limit
所以,策略可以我们自己设置,也可以不用设置,采用默认策略。当然,作为初学者,我们还是自己动手设置好点:
R1-IPSecGW(config)#crypto isakmp policy 10
R1-IPSecGW(config-isakmp)# encr 3des
R1-IPSecGW(config-isakmp)# hash md5
R1-IPSecGW(config-isakmp)# authenticationpre-share
R1-IPSecGW(config-isakmp)# group 2
R1-IPSecGW(config-isakmp)#exit
2.2.定义认证标示
也就是定义对等体身份认证的方式,采用PSK方式还是PKI方式。本实验我们采取PSK方式。
//设置PSk认证方式并制定认证对方
R1-IPSecGW(config)#crypto isakmp key freeitaddress 23.23.23.2
//认证密钥为freeit,认证对方地址为23.23.23.1.两端必须一致
2.3.配置IPSec transfrom
此步骤为第二阶段(Pash two)对数据进行加密的设置。
R1-IPSecGW(config)#crypto ipsectransform-set l2l-ipsec esp-3des esp-sha-hmac
R1-IPSecGW(cfg-crypto-trans)#mode tunnel
R1-IPSecGW(cfg-crypto-trans)#exit
//数据加密算法使用esp-3des,保证数据完整性采用esp-sha-hmac算法。运行模式为tunnel模式(也是默认模式)
2.4.定义感兴趣流量
定义那些数据通过VPN传输,通过IPSec保护
R1-IPSecGW(config)#ip access-list extendedVPN
R1-IPSecGW(config-ext-nacl)#permit iP 10.1.1.00.0.0.255 192.168.1.0 0.0.0.255
R1-IPSecGW(config-ext-nacl)#exit
//定义对上海的10.1.1.1到武汉的192.168.1.1的流量进行保护。
2.5.创建crypto map
将之前定义的ACL,加密数据发往的对端,以及IPSec transform结合在crypto map中
R1-IPSecGW(config)#crypto map l2l 10ipsec-isakmp
% NOTE: This new crypto map will remaindisabled until a peer
and a valid access list have been configured.
R1-IPSecGW(config-crypto-map)# set peer23.23.23.2
R1-IPSecGW(config-crypto-map)# settransform-set l2l-ipsec
R1-IPSecGW(config-crypto-map)# matchaddress VPN
R1-IPSecGW(config-crypto-map)#exit
2.6.把crypto map调用到接口
R1-IPSecGW(config)#interfaceFastEthernet0/0
R1-IPSecGW(config-if)#crypto map l2l
R1-IPSecGW(config-if)#exit
R3-IPSecGW配置同R1-IPSecGW
R3-IPSecGW(config)#crypto isakmp policy 10
R3-IPSecGW(config-isakmp)# encr 3des
R3-IPSecGW(config-isakmp)# hash md5
R3-IPSecGW(config-isakmp)# authenticationpre-share
R3-IPSecGW(config-isakmp)# group 2
R3-IPSecGW(config-isakmp)#exit
R3-IPSecGW(config)#crypto isakmp key freeitaddress 12.12.12.1
R3-IPSecGW(config)#crypto ipsectransform-set l2l-ipsec esp-aes esp-sha-hmac
R3-IPSecGW(cfg-crypto-trans)#ip access-listextended VPN
R3-IPSecGW(config-ext-nacl)#$192.168.1.00.0.0.255 10.1.1.0 0.0.0.255
R3-IPSecGW(config-ext-nacl)#exit
R3-IPSecGW(config)#crypto map l2l 10ipsec-isakmp
% NOTE: This new crypto map will remaindisabled until a peer
and a valid access list have been configured.
R3-IPSecGW(config-crypto-map)# set peer12.12.12.1
R3-IPSecGW(config-crypto-map)# settransform-set l2l-ipsec
R3-IPSecGW(config-crypto-map)# matchaddress VPN
R3-IPSecGW(config-crypto-map)#exit
R3-IPSecGW(config)#interface FastEthernet0/0
R3-IPSecGW(config-if)# ip address23.23.23.2 255.255.255.0
R3-IPSecGW(config-if)# crypto map l2l
R3-IPSecGW(config-if)#exit
R3-IPSecGW(config)#
*Sep 6 19:05:41.435: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
2.7.测试VPN
通过show命令在R1-IPSecGW查看isakmp sa和ipsec sa有没有匹配的流量
R1-IPSecGW#sho crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
R1-IPSecGW#sho crypto ipsec sa
interface: FastEthernet0/0
Crypto map tag: l2l, local addr 12.12.12.1
protected vrf: (none)
local ident(addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
current_peer 23.23.23.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
#pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 12.12.12.1, remote crypto endpt.: 23.23.23.2
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
current outbound spi: 0x0(0)
inbound esp sas:
inbound ah sas:
inbound pcp sas:
outbound esp sas:
outbound ah sas:
outbound pcp sas:
尽管所有的配置已经完成,由于还没有流量通过,所以还没有激活isakamp sa通道,也就没有信息。所以IPSec sa也就处于非活动状态(Cisco产品默认不会自动连接vpn,所以我们后面要手动触发)。
查看crypto map
R1-IPSecGW#sho crypto map
Crypto Map "l2l" 10 ipsec-isakmp
Peer = 23.23.23.2
Extended IP access list VPN
access-list VPN permit ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255
Current peer: 23.23.23.2
Security association lifetime: 4608000 kilobytes/3600 seconds
PFS (Y/N): N
Transform sets={
l2l-ipsec: { esp-aes esp-sha-hmac } ,
}
Interfaces using crypto map l2l:
FastEthernet0/0
//crypto map显示的是加密数据发往的对端是23.23.23.2.即和23.23.23.2建立了ipsec隧道。调用的是ipsectransform为l2l-ipsec.保护的流量为access-list VPN定义的流量。
上海,武汉互ping,激活isakamp sa通道
R1-IPSecGW#ping 192.168.1.1 source loo0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of10.1.1.1
.!!!!
Success rate is 80 percent (4/5),round-trip min/avg/max = 164/169/18
ping的同时用Wireshark抓包查看
从上图可以看出,所有数据都是被加密的,不用担心信息的泄露,就算使用明文交流,也会同样被加密发送。
查看isakamp sa
R1-IPSecGW#sho crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
23.23.23.2 12.12.12.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
//isakamp 隧道已经建立,从12.12.12.1到23.23.23.2,并处于激活状态(ACTIVE)
查看ipsec sa
R1-IPSecGW#sho crypto ipsec sa
interface: FastEthernet0/0
Crypto map tag: l2l, local addr 12.12.12.1
protected vrf: (none)
local ident (addr/mask/prot/port):(10.1.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
current_peer 23.23.23.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4
#pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 1, #recv errors 0
local crypto endpt.: 12.12.12.1, remote crypto endpt.: 23.23.23.2
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
current outbound spi: 0x339F7BB8(866089912)
inbound esp sas:
spi: 0x15DF1A88(366942856)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 1, flow_id: SW:1, crypto map: l2l
sa timing: remaining key lifetime (k/sec): (4474695/2669)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x339F7BB8(866089912)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2, flow_id: SW:2, crypto map: l2l
sa timing: remaining key lifetime (k/sec): (4474695/2669)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE
outbound ah sas:
outbound pcp sas:
//ipsec sa处于激活状态,并且加密了4个数据包.目前的ipsec工作模式为tunnel模式。
3.实施IPSec Dynamic Lan-to-Lan
环境:
一般情况下,公司对外连接的ip都是动态变换的,只有大公司才有财力采用静态的IP地址实现连接公网。假设上海总公司采用的是静态的IP地址。而武汉分公司用的是动态公网IP。前面的实验环境是两边用的都是静态IP,那么现在应该怎样部署实验呢?
3.1.修改静态配置
//修改psk认证的对方
R1-IPSecGW(config)#no crypto isakmp keyfreeit address 23.23.23.2
R1-IPSecGW(config)#crypto isakmp key freeitaddress 0.0.0.0 0.0.0.0
说明:
因为对方是动态的公网IP,所以认证对方的地址应该设置为默认路由。
//修改crypto map
R1-IPSecGW(config)#inter fa0/0
R1-IPSecGW(config-if)#no cryp map
R1-IPSecGW(config-if)#exit
R1-IPSecGW(config)#no crypto map l2l 10
R1-IPSecGW(config)#crypto dynamic-map dymap10
R1-IPSecGW(config-crypto-map)#settransform-set l2l-ipsec
R1-IPSecGW(config-crypto-map)#match addressVPN
R1-IPSecGW(config-crypto-map)#exit
//把动态crypto map与动态的绑定
R1-IPSecGW(config)#crypto map l2l 10ipsec-isakmp dynamic dymap
说明:
动态的crypto map不能直接调用到接口,所以要与静态的绑定,再绑定静态crypto map到端口。
//接口调用
R1-IPSecGW(config)#inter fa0/0
R1-IPSecGW(config-if)#crypto map l2l
R1-IPSecGW(config-if)#
*Sep 6 21:22:57.723: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R1-IPSecGW(config-if)#exit
3.2.测试
对于动态的IPSec LAN-TO-LAN VPN,通道的建立于激活要由动态IP一段的主动发起。静态的一段主动发起时,其身份认证对端为默认路由,所以不能实现认证。
现在动态已经建立,那么我们就让总部的先发起会话,看能不能ping通
R1-IPSecGW#ping 192.168.1.1 source loopback0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of10.1.1.1
.....
Success rate is 0 percent (0/5)
说明:
由于没有明确的身份认证对方,所以不能实现IPSec vpn安全通信。
//清除原有的isakamp 和ipsec数据
R3-IPSecGW#clear crypto isakmp
R3-IPSecGW#clear crypto sa
//查看isakamp sa
R3-IPSecGW#sho crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
//查看ipsec sa
R3-IPSecGW#sho crypto ipsec sa
interface: FastEthernet0/0
Crypto map tag: l2l, local addr 23.23.23.2
protected vrf: (none)
local ident(addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
current_peer 12.12.12.1 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
#pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
//由于没有会话建立,所以没有加密的数据包。
local crypto endpt.: 23.23.23.2, remote crypto endpt.: 12.12.12.1
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
current outbound spi: 0x0(0)
inbound esp sas:
inbound ah sas:
inbound pcp sas:
outbound esp sas:
outbound ah sas:
outbound pcp sas:
由武汉分部发起到上海总部的VPN会话
R3-IPSecGW#ping 10.1.1.1 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1,timeout is 2 seconds:
Packet sent with a source address of192.168.1.1
.!!!!
Success rate is 80 percent (4/5),round-trip min/avg/max = 124/146/168 ms
查看isakamp sa 和ipsec sa
R3-IPSecGW#sho cry isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
12.12.12.1 23.23.23.2 QM_IDLE 1003 0 ACTIVE
IPv6 Crypto ISAKMP SA
R3-IPSecGW#sho cry ipsec sa
interface: FastEthernet0/0
Crypto map tag: l2l, local addr 23.23.23.2
protected vrf: (none)
local ident(addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
current_peer 12.12.12.1 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4
#pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4
//加密的数据包为上面通的4个
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 1, #recv errors 0
local crypto endpt.: 23.23.23.2, remote crypto endpt.: 12.12.12.1
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
current outbound spi: 0x46633DE0(1180909024)
inbound esp sas:
spi: 0x2042BFF0(541245424)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 5, flow_id: SW:5, crypto map: l2l
sa timing: remaining key lifetime (k/sec): (4492324/3549)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x46633DE0(1180909024)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 6, flow_id: SW:6, crypto map: l2l
sa timing: remaining key lifetime (k/sec): (4492324/3549)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE
outbound ah sas:
outbound pcp sas:
此时再让总部ping武汉分部
R1-IPSecGW#ping 192.168.1.1 source loopback0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of10.1.1.1
!!!!!
Success rate is 100 percent (5/5),round-trip min/avg/max = 96/186/240 ms
说明:
由于武汉分部发起的会话激活了isakamp sa和ipsec sa,所以现在两个公司可以和对方通信。
4.GRE Over IPSec
环境:
还是原拓扑图,实施的是IPSec LAN-to-LAN。现在,上海与武汉公司要进行视频会议(使用的是组播),利用GRE隧道技术建立通道实现两公司私有地址之间的通信。假设这是一个很重要的秘密会议,是不允许公司外部人员知道的,那么我们该怎样用IPSec来保证数据安全呢?
我们知道,IPSec VPN只能对单播进行加密保护,不支持其他的,如组播。那么要怎么通过IPSec来对上面的组播地址加密保护呢?
4.1.还原IPSec LAN-to-LAN
//在上个实验的基础上,删除动态IPSec,还原静态的
R1-IPSecGW(config)#inter fa0/0
R1-IPSecGW(config-if)#no crypto map l2l
R1-IPSecGW(config-if)#exit
R1-IPSecGW(config)#
*Sep 6 22:01:35.699: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF
R1-IPSecGW(config)#no crypto map l2l 10
R1-IPSecGW(config)#no crypto dynamic-mapdymap 10
R1-IPSecGW(config)#no crypto isakmp keyfreeit address 0.0.0.0 0.0.0.0
R1-IPSecGW(config)#crypto isakmp key freeitaddress 23.23.23.2
R1-IPSecGW(config)#crypto map l2l 10ipsec-isakmp
% NOTE: This new crypto map will remaindisabled until a peer
and a valid access list have been configured.
R1-IPSecGW(config-crypto-map)#settransform-set l2l-ipsec
R1-IPSecGW(config-crypto-map)#set peer23.23.23.2
R1-IPSecGW(config-crypto-map)#match addressVPN
R1-IPSecGW(config-crypto-map)#exit
R1-IPSecGW(config)#inte fa0/0
R1-IPSecGW(config-if)#crypto map l2l
R1-IPSecGW(config-if)#exit
R1-IPSecGW(config)#
*Sep 6 22:05:41.087: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
验证连通性
R1-IPSecGW#ping 192.168.1.1 source loopback0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of10.1.1.1
.!!!!
Success rate is 80 percent (4/5),round-trip min/avg/max = 148/164/188 ms
4.2.建立GRE隧道
R1-IPSecGW(config)#inte tunnel 1
R1-IPSecGW(config-if)#ip add 172.16.1.1255.255.255.0
R1-IPSecGW(config-if)#tunnel source12.12.12.1
R1-IPSecGW(config-if)#tunnel destination23.23.23.2
R1-IPSecGW(config-if)#exit
R1-IPSecGW(config)#
R3-IPSecGW(config)#inter tunnel 1
R3-IPSecGW(config-if)#ip add 172.16.1.2255.255.255.0
R3-IPSecGW(config-if)#tunnel source23.23.23.2
R3-IPSecGW(config-if)#tunnel destination12.12.12.1
R3-IPSecGW(config-if)#exit
R3-IPSecGW(config)#
配置ospf协议,让隧道能够实现两公司之间的通信
R1-IPSecGW(config)#router ospf 1
R1-IPSecGW(config-router)#network172.16.1.0 0.0.0.255 area 0
R1-IPSecGW(config-router)#network 10.1.1.00.0.0.255 area 0
R1-IPSecGW(config-router)#exit
R3-IPSecGW(config)#router ospf 1
R3-IPSecGW(config-router)#network172.16.1.0 0.0.0.255 area 0
R3-IPSecGW(config-router)#network192.168.1.0 0.0.0.255 area 0
R3-IPSecGW(config-router)#exit
说明:
这里用ospf协议时因为:动态路由之间邻居关系的建立就是通过发送组播来实现的,方便我们后面的实验。但现实环境中最好是用静态路由,节省设备资源。
查看路由表:
R1-IPSecGW#sho ip route
Codes: C - connected, S - static, R - RIP,M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 12.12.12.2 tonetwork 0.0.0.0
172.16.0.0/24 is subnetted, 1 subnets
C 172.16.1.0 is directly connected, Tunnel1
10.0.0.0/24 is subnetted, 1 subnets
C 10.1.1.0 is directly connected, Loopback0
12.0.0.0/24 is subnetted, 1 subnets
C 12.12.12.0 is directly connected, FastEthernet0/0
192.168.1.0/32 is subnetted, 1 subnets
O 192.168.1.1 [110/1001] via 172.16.1.2, 00:00:23, Tunnel1
S* 0.0.0.0/0 [1/0] via 12.12.12.2
R3-IPSecGW#sho ip route
Codes: C - connected, S - static, R - RIP,M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 23.23.23.1 tonetwork 0.0.0.0
23.0.0.0/24 is subnetted, 1 subnets
C 23.23.23.0 is directly connected, FastEthernet0/0
172.16.0.0/24 is subnetted, 1 subnets
C 172.16.1.0 is directly connected, Tunnel1
10.0.0.0/32 is subnetted, 1 subnets
O 10.1.1.1 [110/1001] via 172.16.1.1, 00:00:43, Tunnel1
C 192.168.1.0/24 is directly connected, Loopback0
S* 0.0.0.0/0 [1/0] via 23.23.23.1
如图,两台路由器都有了对方的私有IP。可以通信了
测试:
测试之前,先把原先建立的ipsec sa即isakamp sa清空,验证GRE实现的通信有没有被IPSec加密。
R1-IPSecGW#clear crypto isakmp
R1-IPSecGW#clear crypto sa
R3-IPSecGW#clear crypto isakmp
R3-IPSecGW#clear crypto sa
上海与武汉两公司通信,我们直接追踪IP,看是从哪里实现通信的。
R1-IPSecGW#traceroute 192.168.1.1 sourceloopback 0
Type escape sequence to abort.
Tracing the route to 192.168.1.1
1172.16.1.2 176 msec * 92 msec
//如图,直接是通过GRE隧道传送数据的。
查看isakamp sa和ipsec sa,看上面的数据是否被ipsec加密保护
R1-IPSecGW#sho crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
R1-IPSecGW#sho crypto ips
R1-IPSecGW#sho crypto ipsec sa
interface: FastEthernet0/0
Crypto map tag: l2l, local addr 12.12.12.1
protected vrf: (none)
local ident(addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
current_peer 23.23.23.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
#pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 12.12.12.1, remote crypto endpt.: 23.23.23.2
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
current outbound spi: 0x0(0)
inbound esp sas:
inbound ah sas:
inbound pcp sas:
outbound esp sas:
outbound ah sas:
outbound pcp sas:
//上图显示,sa并没有被激活,也就是说,两公司之间的通信没有被ipsec保护,是不安全的。
关联GRE与IPSec,也就是让IPSec实现对GRE隧道数据的保护。对此,实现方式很简单,只需要修改定义的VPN保护流量就行了(也就是前面说的感兴趣流量)
R1-IPSecGW(config)#ip access-list extendedVPN
R1-IPSecGW(config-ext-nacl)#no 10
R1-IPSecGW(config-ext-nacl)#permit gre host12.12.12.1 host 23.23.23.2
R1-IPSecGW(config-ext-nacl)#exit
R3-IPSecGW(config)#ip access-list extendedVPN
R3-IPSecGW(config-ext-nacl)#no 10
R3-IPSecGW(config-ext-nacl)#permit gre host23.23.23.2 host 12.12.12.1
R3-IPSecGW(config-ext-nacl)#exit
设置之后立马查看isakamp sa和ipsec sa
R1-IPSecGW#sho crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id slot status
12.12.12.1 23.23.23.2 QM_IDLE 1005 0 ACTIVE
IPv6 Crypto ISAKMP SA
R1-IPSecGW#sho crypto ipsec sa
interface: FastEthernet0/0
Crypto map tag: l2l, local addr 12.12.12.1
protected vrf: (none)
local ident(addr/mask/prot/port): (12.12.12.1/255.255.255.255/47/0)
remote ident (addr/mask/prot/port): (23.23.23.2/255.255.255.255/47/0)
current_peer 23.23.23.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 10, #pkts encrypt: 10, #pkts digest: 10
#pkts decaps: 10, #pkts decrypt: 10, #pkts verify: 10
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 12.12.12.1, remote crypto endpt.: 23.23.23.2
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
current outbound spi: 0xF01963A6(4028195750)
inbound esp sas:
spi: 0xD766FB6F(3613850479)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 9, flow_id: SW:9, crypto map: l2l
sa timing: remaining key lifetime (k/sec): (4426425/3582)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0xF01963A6(4028195750)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 10, flow_id: SW:10, crypto map: l2l
sa timing: remaining key lifetime (k/sec): (4426425/3582)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE
outbound ah sas:
outbound pcp sas:
查看ACL匹配的流量
R1-IPSecGW#sho ip access-lists
Extended IP access list NAT
10 deny ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255 (90 matches)
20 permit ip 10.1.1.0 0.0.0.255 any
Extended IP access list VPN
10 permit gre host 12.12.12.1 host 23.23.23.2 (53 matches)
说明:
如图,更改之后,立马有反应了,sa被自动激活了。这是因为与GRE关联之后,GRE中传送的所有数据被ipsec保护,包括ospf发送的Hello包,而自动激活就是因为ospf的Hello发送的缘故。这就是上面所说的方便实验的原因。
上海、武汉公司之间通信验证
R1-IPSecGW#ping 192.168.1.1 source loopback0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of10.1.1.1
!!!!!
Success rate is 100 percent (5/5),round-trip min/avg/max = 120/147/176 ms
这样,GRE隧道内的数据就被IPsec保护了。这样也就实现了两公司之间通信数据的安全性。
五.实验总结
- IPSec之所以安全,是由其特性决定的:加密、数据完整性、对等体身份认证、反重放保护;
- IPSec可以和一般的隧道协议一起使用,也可以单独作为隧道协议建立隧道
- IPSec由两个阶段组成,第一阶段协商加密安全措施保证第二阶段安全,不对具体数据操作;第二阶段对用户的具体数据加密,保证安全性;
- IPSec协商过程也由两个阶段组成:主模式、快速模式;
- IPSec的配置大体包含以下几个步骤:
配置IKE策略;
定义认证标示;
配置IPSectransform;
定义感兴趣流量;
创建crypto map;
讲crypto map应用于接口。
- IPsec只能对单播加密保护,通过与隧道技术的结合来保证如组播的安全性