一、IPSEC ××× 模式
1、tunnel模式
隧道模式中,×××设备将整个三层数据报文封装在×××数据内,再为封装后的数据报文添加新的IP包头。由于新IP包头中封装的是×××设备的ip地址信息,所以当***者截获数据后,不但无法了解实际载荷数据的内容,同时也无法知道实际通信双方的地址信息。
2、transport模式
传输模式一个最显著的特点就是:在整个×××的传输过程中,IP包头并没有被封装进去,这就意味着从源端到目的端数据始终使用原有的IP地址进行通信。而传输的实际数据载荷被封装在×××报文中。对于大多数×××传输而言,×××的报文封装过程就是数据的加密过程,因此,***者截获数据后将无法破解数据内容,但却可以清晰地知道通信双方的地址信息。
二、数据加密算法
1、对称加密
对称加密,加密秘钥解密秘钥相同,并且秘钥在公网中传输,常用的对称加密算法有DES、3DES、AES等。
2、非对称加密
非对称加密,由于算法强度复杂,使得加密解密速度非常慢。为了解决这个问题,我们采用这样一种方法:数据传输还是采取对称加密算法,而对称加密的秘钥用非对称加密算法来加密。即公钥用非对称算法加密,只能用私钥来解密,但私钥不在公网中传输。常用的费对称加密算法有RSA、ES、DH等。
三、数据报文验证
数据报文验证包括两个方面:数据来源验证(身份验证)和报文完整性验证。
HMAC功能实现验证功能
HMAC(hash-based message authentication codes,散列消息代码)功能专门开发用来处理数据包相关的验证问题,它使用一个共享的对称秘钥来产生固定的输出结果——数字签名。HMAC属于单向散列算法(hash算法)的一个子集,区别于前面讲解的加密算法,散列算法是不可逆的,即加密后的数据是无法还原的。MD5和SHA是HMAC的两种常用算法。
四、IPSEC ×××
1、 IPSec连接
对等体之间建立IPSec ×××的连接需要三个步骤。
1) 流量触发IPSec
一般来说,IPSec建立过程是由对等体之间发送的流量触发的,一旦有×××流量经过×××网关,连接过程便开始建立了。

2) 建立管理连接
IPSec使用ISAKMP/IKE阶段1来构建一个安全的管理连结。这里需要注意的是,这个管理连接只是一个准备工作,它不被用来传输实际的数据。
 
3) 建立数据连接
IPSec基于安全的管理连接协商建立安全的数据连接,而ISAKMP/IKE阶段2就是用来完成这个任务的,数据连接用于传输真正的用户数据。

2、IKE 第一阶段:共使用了6个报文
第 1 2 报文,明文发送。验证正确的peer 地址,使用发送自己所有的SA信息(该SA信息为ISAKMP SA ,双向的,双方必须一致),对方会回复匹配的SA策略。
第 3 4 报文,明文发送。传递DH算法的公钥。随机产生一些值,双方交互运算,得到公共信息,从而计算出来三个相同的Skey-id。
Skey-id d ----衍生出来Ipsec 中对称加密算法的密钥
Skey-id a---衍生出来Ipsec 的随机值(用于hamc)
Skey-id e---衍生出来ISAMKP中的对称加密算法的密钥
IKE 第二阶段hmac的随机是双方手工指定的。
第 5 6 报文,使用密文发送,将所有的公共信息进行认证。
3、IKE第二阶段: 进行Ipsec SA协商(该SA对传递的数据进行封装)共三个报文,全部是加密的。
第1个再次进行认证(检测IPsec中的公共信息)
第2个报文发送自己所有SA策略
第3个报文进行确认ipsec *** 建立完成。

五、实验
IPSEC ***_第1张图片
1、pc1的配置
PC1(config)#int e0/0
PC1(config-if)#ip address 192.168.10.100 255.255.255.0
PC1(config)#ip default-gateway 192.168.10.254
PC1(config)#no ip routing

2、pc3的配置
PC1(config)#int e0/0
PC1(config-if)#ip address 192.168.20.100 255.255.255.0
PC1(config)#ip default-gateway 192.168.20.254
PC1(config)#no ip routing

3、R1的配置
R1(config)#int e0/1
R1(config-if)#ip address 192.168.10.254 255.255.255.0
R1(config-if)#no shutdown
R1(config)#int e0/0
R1(config-if)#ip add ress 12.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2
R1(config)#int lo 1
R1(config-if)#ip add ress 192.168.1.100 255.255.255.0
4、R2的配置
R2(config)#int e0/0
R2(config-if)#ip address 12.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config)#int e0/1
R2(config-if)#ip address 23.1.1.2 255.255.255.0
R2(config-if)#no shutdown
5、R3的配置
R3(config)int e0/0
R3(config-if)#ip address 23.1.1.3 255.255.255.0
R3(config-if)#no shutdown
R3(config)#int e0/1
R3(config-if)#ip add ress 192.168.20.254 255.255.255.0
R3(config-if)#no shutdown
R3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
R3(config)#int lo 1
R3(config-if)#ip add ress 192.168.2.100 255.255.255.0
以上配置完后,可以测试,pc之间不通,R1与R3可以ping通。
R1可以ping通R3
R1#ping 23.1.1.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 23.1.1.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms

PC1不能够ping通PC3
PC1#ping 192.168.20.100 source 192.168.10.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.10.100, timeout is 2 seconds:
UUUUU
Success rate is 0 percent (0/5)

接下来开始配置IPSec ×××
6、在R1上配置IPSec ×××
R1(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
R1(config)#access-list 100 permit ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
R1(config)#crypto isakmp policy 10
R1(config-isakmp)#encr 3des
R1(config-isakmp) #hash md5
R1(config-isakmp) #authentication pre-share
R1(config-isakmp) #group 2
R1(config)#crypto isakmp key 6 cisco address 23.1.1.3
R1(config)#crypto ipsec transform-set xxx esp-3des esp-md5-hmac
R1(cfg-crypto-trans)#mode tunnel
R1(config)#crypto map yy 10 ipsec-isakmp
R1(config-crypto-map)#set peer 23.1.1.3
R1(config-crypto-map)# set transform-set xxx
R1(config-crypto-map)# match address 100
R1(config)#int e0/0
R1(config-if)#crypto map yy

7、在R3上配置IPSec ×××
抓取感兴趣流量
R1(config)#access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
R1(config)#access-list 100 permit ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255
IKE第一阶段,ISAKMP SA协商
R1(config)#crypto isakmp policy 10 //定义ISAKMP(用于轮循)
R1(config-isakmp)#encr 3des //定义加密算法
R1(config-isakmp) #hash md5 //定义认证算法
R1(config-isakmp) #authentication pre-share //使用域共享秘钥方式产生key
R1(config-isakmp) #group 2 //定义非对称加密算法(为DH-2)
定义共享秘钥
R1(config)#crypto isakmp key 6 cisco address 12.1.1.1
IKE第二阶段,IPSEC SA协商
R1(config)#crypto ipsec transform-set xxx esp-3des esp-md5-hmac
//使用ESP封装,3DES加密算法,MD5认证,HMAC源认证
R1(cfg-crypto-trans)#mode tunnel //定义为隧道模式
定义cryto map(配置加密映射)
R1(config)#crypto map yy 10 ipsec-isakmp //定义名称
R1(config-crypto-map)#set peer 12.1.1.1 //定义对方某个IP地址生效
R1(config-crypto-map)# set transform-set xxx //定义转换集
R1(config-crypto-map)# match address 100 //匹配感兴趣流量
R1(config)#int e0/0 //接口调用crypto map
R1(config-if)#crypto map yy
8、测试
1)、PC1能够ping通PC3
PC1#ping 192.168.20.100 source 192.168.10.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.20.100, timeout is 2 seconds:
Packet sent with a source address of 192.168.10.100
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/3/4 ms
2)、R1的环回能够ping通R3的环回(作用与PC1 ping PC3相同)
R1#ping 192.168.2.100 source 192.168.1.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.100, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.100
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 7/8/11 ms
3)、PC 不能够ping通R2
PC1#ping 12.1.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 12.1.1.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)