IPsec-×××

sign :JamesSong

一、topology:

IPsec-×××基本技术挖掘_IPsec-VPN

二、IPsec-×××的在网络中传输数据的四大要素:

   (1)、私密性:对称加密、非对称加密

   (2)、数据包的完整性:MD5校验

   (3)、确定源是谁:数字签名

   (4)、不可否认性:问源是否发过数据包

 三、需求:

   PC1要和PC3实现即安全,又私密,又完整的数据传输服务,那么就要想办法在不拉专线的情况下,达到这个试验的目的,那么我们采用的方法是line to line IPsec-×××。

 四、注意:

   在做IPsec-×××的配置之前,我们一样要保证底层路由的通畅性,那么我们要时刻联想到我们的底层配置的灵魂所在,就是下面的两个ping通,一个知道原则:(1)、加密点路由:必须知道双方通信点的路由和对方加密点的路由,并且能够ping通自己的通信点和对方的加密点(2)、通信点路由:知道对方通信点的路由

 五、自我思路整理:

   首先,R1收到PC传给它的数据包,这个数据包是去请求PC2的地址,那么当R1收到这个数据包的时候,会查看这个数据包的源目的IP地址,源:192.168.1.2,目的:172.16.1.2,于是查看自己的路由表,知道去往目的PC2的条目是默认通过走R1的f0/0接口发往ISP的,那么它一看是数据包是从f0/0接口发出去的,它自动匹配f0/0借口下所挂载的相应在dahezi下面的策略,当然,在匹配这些策略之前,它还会查看这个数据包的源和目的是不是匹配R1所写的ACL所感兴趣的流量,如过发现是感兴趣流量,就直接匹配dahezi下面的策略。之后就进入到了第一阶段策略的协商过程。

第一阶段协商:是通过UDP 500端口进行协商的,发送6个包:

   1包:R1把自己的第一阶段配置发给R3(明文),即把一阶段配置发给R3

               r1(config)#cry isakmp policy 10                 /*定义一个策略*/

               r1(config-isakmp)#group 2                        /*把R1和R3放入到同一个组内*/

               r1(config-isakmp)#hash md5                       /*保证R1和R3之间的认证时候,采用的

                                                                  HASH算法是MD5*/

               r1(config-isakmp)#encryption des                 /*用DES算法对认证进行加密*/

               r1(config-isakmp)#authentication pre-share       /*采用与共享密钥的方式进行认证*/

   2包:R3把自己的第一阶段协商的配置发给R1 (明文),把一阶段配置发给R1

   3、4包:互相传递各自的公钥Q,而且这个公钥Q还会衍生出三个子密钥(明文):A、B、C

               A:用于5、6包的传输,起暗号作用

               B:用于5、6包的传输,起加密作用

               C:用于真实数据包的传输,其实C还会衍生出两个子密钥:H(暗号)、F(加密)

   5、6包:R1把自己配置的预共享KKK加上自己生成的公钥Q衍生出来的子密钥A,即(KKK+A),一  

            起做MD5HASH,HASH来的散列值再用衍生出来的子密钥B对其进行加密,之后把这个包传给R3,相

            的,R3也会做相同的动作把自己的散列值传给R1。

排错检查:Show crypto isakmp sa---进行查看,如果显示的QM字段,那么认为这6个包协商成功

第一阶段完成之后,一共完成了两件事

       1、完成了认证

       2、生成了共享的密钥和给真实数据包加密的两个子密钥


  第二阶段协商

   确定了对真实数据传输时采用什么方式封装,什么方式加密,什么方式HASH,其实就是传递了下面的这条命令,决定了上述所有的策略:

        r1(config)#cry ipsec transform-set aaa esp-desesp-md5-hmac

   可以通过下面这条命令查看是否封装方式、加密方式、HASH方式都是一致的:

        Show crypto ipsec sa       /*查看第二阶段协商的结果*/

   show完之后,会发现,属性中,有一个inbound和outbound属性,那么我们该怎么理解这个属性的作用呢,当R3和R1如果想要真正的建立起ipsec×××的关系的话,那么就意味着R3的inound属性必须要和R1的outbound属性是完全一样的,同样R1的inound属性必须要和R3的outbound属性是完全一样的,这样的话,他们就建立起了ipsec×××的关系,如果这个来那个个属性的值不一样,那么就说明第二阶段的协商有问题。

   下面是传输真正数据的时候了,也是最重要的时候,我先把这个封装过程后的IP包画出来,之后再详细解释:

IPsec-×××基本技术挖掘_数据包_02

   记住:在给中间的源目IP进行加密的时候,采用的是DES算法,但是是通过H对其进行加密的。

   当R3收到这个包之后,会把第一个头部的包拆掉,那么在看到的是ESP的头部,于是在查看其中的SPI值是不是与自己的inboundSPI是不是一样的,如果相同,就直接用相同的方法解密,并校验其完整性,知道把这个数据包都拆完,最后发现目的是去往172.16.1.2,而且是自己直连网段,那么纸介就发个了R3

   六、命令整理:

   r1(config)#cryptokeyring cisco

   r1(conf-keyring)#pre-shared-keyaddress 20.1.1.1 key kkk    /*定义预共享密钥认证,希望20.1.1.1送过

                                                               来一个密码,是KKK*/

   r1(config)#crypto isakmp profile xiaohezi

   r1(conf-isa-prof)#keyringcisco

   r1(conf-isa-prof)#matchidentity address 20.1.1.1     /*定义一个小盒子,里面把上面预定义密钥认证策

                                                     略放进来,同时说明对谁认证,收到20.1.1.1的ipsec-

                                                     vpn请求,要对它进行认证,认证方法是:cisco

                                                     ,而cisco就是前面定义的认证策略*/

   r1(config)#cry isakmp policy 10

   r1(config-isakmp)#group2

   r1(config-isakmp)#hashmd5

   r1(config-isakmp)#encryptiondes

   r1(config-isakmp)#authenticationpre-share        

/*定义第一阶段认证策略呢,加入相同的一个组,共享组中相同的P和G参数,运行DH算法,互相交换各自公钥,生成相同密钥Q,这个相同密钥引申三个子密钥,例如:A,B,C,A用于认证策略的MD5暗号,B用于认证信息的加密,C用于第二阶段用户真正数据加密*/----R1首先会将KKK加上自己的字密钥A(暗号)一起做一个HASH值,然后用字密钥B对这个散列值进行加密,R3收到后,R3会用自己生成的子密钥B对其进行解密,加密后放在一边,R3会把公钥KKK在加上自己的子密钥A,进行一次MD5HASH,把这两个散列值进行比较,如果一样,那么成功——》认证成功,生成密钥C还会在衍生出两个子密钥,H(暗号)、F(加密),MD5-Hmac,意味是把真实文件和H放在一起进行HASH,在用F进行加密(用的是des加密法)


   r1(config)#cryipsec transform-set aaa esp-des esp-md5-hmac   /*第二阶段策略对于用户真正数据流量传

                                                                  输采用ESP头部封装方式,采用DES加密

                                                                  ,采用MD5+暗号哈希*/


   access-list 100 permit ip host 1.1.1.1host 3.3.3.3              /*定义感兴趣流量,从哪去哪加密*/


   crypto map dahezi 10 ipsec-isakmp

   set peer 20.1.1.1

   set transform-set aaa

   set isakmp-profile xiaohezi

   match address 100                                               /*定义一个大盒子,里面把以前定义

                                                                     的策略放进来*/

                                                                     ×××感兴趣流量,从哪去哪加密


   r1(config)#int f0/0

   r1(config-if)#crypto map dahezi

   exit                                               /*挂接*/


R3同理