安全问题是一个重要问题,其中就要求对各方面进行认证,MPLS ×××实际应用中认证是必须配置的.
RIPv2认证配置(明文-MD5)
RIPv2认证:
rip最早是由施乐(Xerox)开发的,其为距离矢量协议,不需要建立邻居关系, ripv1不支持认证,只有v2rip支持认证,ripv2的认证是单向的(即自己在认证另一方时,不代表自己能被另一方认证),由此在只做了单向认证的时候,认证方可以接收被认证方的路由,反之则不行.
配置认证的同时结合service password-encryption命令,此命令会首先生效.
1.1    R1R2的串行链路上进行明文认证
ripv2eigrp做认证时,要先定义认证用的钥匙链,ospfbgp不支持钥匙链认证方式,isis支持钥匙链和老式口令认证.
ripv2eigrpisis中当定义了钥匙链时,key chain的名字只是本设备有效,即不同名字不影响认证
密钥链中可以指定一系列的密钥,路由器可以轮转实用,这些密钥都可以配置生命期:accept-lifetime send-lifetime (指明使用某个key的有效时间),当一个密钥过期后可以激活下一个密钥.
当配置了带生命期的钥匙链时,两端必须同步时间,一般是使用网络时间协议NTP同步时间.
配置如下:
R1_CE1
key chain ce-neighbor
 key 10
   key-string rip_ripv2    //注意密码中空格也是有效字符
accept-lifetime 07:00:00 Mar 20 2008 duration 36000  //接收此密码有效时间设置为10小时
send-lifetime  07:00:00 Mar 20 2008 duration 36000   //发送此密码有效时间设置为10小时
key 15
   key-string auth_ripv2
accept-lifetime 07:00:00 Mar 21 2008 24:00:00 Mar 21 2008
send-lifetime  07:00:00 Mar 21 2008 24:00:00 Mar 21 2008
key 20
   key-string pe-ce-ripv2
accept-lifetime 07:00:00 Mar 22 2008 infinite   //永久有效
send-lifetime 07:00:00 Mar 22 2008 infinite     //永久有效
router rip validate-update-source
R1(config)#int s1/0        //明文认证是在接口下进行,先选择认证方式后指定要使用的钥匙链
R1(config-if)#ip rip authentication mode authentication text
//ripv2中启用认证后缺省是明文认证,可不配置
R1(config-if)#ip rip authentication key-chain rip-key-chain ce-neighbor
//明文认证中被认证方发送key chian中的key,是先发送具有最低key ID值的key,但并不携带ID,认证方接收到key,和自己key chain中的全部key顺序比较,只要有一个key匹配就通过认证.
R2_PE1
key chain pe-neighbor
key 10
   key-string rip_ripv2
accept-lifetime 07:00:00 Mar 20 2008 duration 43200
send-lifetime  07:00:00 Mar 20 2008 duration 43200
key 15
   key-string auth_ripv2
accept-lifetime 07:00:00 Mar 21 2008 24:00:00 Mar 21 2008
send-lifetime  07:00:00 Mar 21 2008 24:00:00 Mar 21 2008
key 20
   key-string pe-ce-ripv2
accept-lifetime 07:00:00 Mar 22 2008 infinite
send-lifetime 07:00:00 Mar 22 2008 infinite
int s1/0
ip rip authentication mode authentication text
ip rip authentication key-chain rip-key-chain pe-neighbor
1.2    R1R2的串行链路上进行MD5认证
ripv2MD5认证也是单向的, MD5认证类型下被认证方发送最低ID值的key时携带了key ID,认证方接收到key,先是在自己key chain中查找是否具有相同key IDkey,如果有并且key也相同就通过认证,如果key不同就拒绝通过认证。如果没有相同key IDkey,就顺序查找该key ID往后的最近key IDkey, 如果有就继续比对,直到认证通过,如果后续没有key ID,则认证失败。
与明文认证类似,指定认证方式为MD5认证即可(实用的就是MD5认证), 配置如下:
R1_CE1
int s1/0
ip rip authentication mode md5     //为此接口启用MD5认证
ip rip authentication key-chain rip-key-chain ce-neighbor   //指定要使用的钥匙链
R2_PE1
int s1/0
ip rip authentication mode md5    //为此接口启用MD5认证
ip rip authentication key-chain rip-key-chain pe-neighbor  //指定要使用的钥匙链
 
EIGRP认证配置(MD5)
EIGRP认证:
eigrpcisco私有单播路由协议,其只支持md5认证,eigrp需要建立邻居关系,eigrp认证时,被认证方会发送最低的key ID(携带key ID),认证中只有key IDkey值完全相同才能通过认.
当使用钥匙链时其只是使用排在最前面的那个key,keyid number没有关系.
eigrp的认证信息包涵在hello包里,但在一方配置完认证,另一方还没有配置认证时,在重启或用clear ip eigrp nei,邻居关系不会中断,此时debug ip eigrp packet看到认证信息已经收到了,但却被忽略掉了.
R2_PE1
key chain pe-neighbor                  //定义认证用的钥匙链
 key 10
   key-string auth_eigrp
 key 20
   key-string auth_eigrp
int s1/0
ip authentication mode eigrp 15 md5    //启用认证
ip authentication key-chain eigrp 15 eigrp-key-chain pe-neighbor
 
OSPF-链路-区域-虚链路各认证配置(明文-MD5)
OSPF认证:
ospf的认证有3种类型:其中type0表示无认证,type1表示明文认证,type2表示MD5认证。明文认证发送密码进行认证,MD5认证发送的是消息摘要。
有关MD5的详细信息,可以参阅RFC1321.
ospf的认证可以在链路上进行,也可以在各区域内进行认证,虚链路也可以进行认证。
1、链路认证配置:
1.1 R1R2的串行链路上进行明文认证:
   首先在R1上做如下配置(ripv2eigrp不同,ospf不支持钥匙链方式)
int s1/0
ip ospf authentication                    //启用认证
ip ospf authentication-key superbackbone  //明文认证类型中密码只能有一个
show ip ospf interfaces s1/0认证对端口加入认证的状态
当在R1配置完认证R2还没有配置认证时邻居关系马上会中断,通过debug ip ospf events可以看到提示认证key不匹配,通过debug ip ospf adj可以看到提示接收到的认证类型为type0(表示对方没有启用认证),因为ospf的认证加密信息携带在hello包里,邻居关系的要素:hello时间间隔,死亡时间间隔,区域id,根区域标识,认证信息,网络掩码)
type1是明文认证, type2MD5认证
R2上配置匹配认证,使邻居关系恢复.
int s1/0
ip ospf authentication
ip ospf authentication-key superbackbone
1.2 R2R3的串行链路上进行MD5认证的:
   R2
int s1/1
ip ospf authentication message-digest   //定义认证类型为MD5
ip ospf message-digest-key 1 md5 superbackbone //定义key和密码,只写此句就能正常
 R3
int s1/1
  ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 superbackbone 
// key ID就是两边用来识别是同一对密码的密钥,两边要一致,此例中用的均为1,当有多句认证命令存在时,key ID不能相同,但密码可以相同
1.3 修改R2R3上串行链路的MD5认证的密码:
  R2原有的配置上加上下面这条命令:
   R2(config-if)#ip ospf message-digest-key 2 md5 super_backbone
   R2#sho ip ospf neighbor   //可以看到两个key都在使用。
   此功能在修改链路的MD5认证密码过程中不使邻居关系发生中断(先将新的密码已另一个编号的key配置到启用认证的路由器两端后,在将原来旧的密码删除,这样可保证在修改链路认证配置的时候邻居关系依然存在)
2、在area0或其它区域上进行区域认证:
注意:ospf区域认证中使用的密钥和MD5算法是由接口命令ip ospf message-digest-key指定的,即区域认证正常时都需要接口下的认证语句作附加命令,但实验测试时不在接口上配置密码认证也能通过,不过此时MD5认证用的实际上是ID=0的空密码
2.1 R2R3的区域0上进行明文认证:
R2(config)#int s1/1                    
R2(config-if)#ip ospf authentication        //先启用接口上的认证
R2(config-if)#ip ospf authentication-key superbackbone
     R2(config)#router ospf 10            
R2(config-router)#area 0 authentication     //启用区域明文认证
show ip ospf 认证对该区域加入认证的状态
当做区域认证时,若仅是在一端写上了要求区域认证的命令,但未配置认证用的密码,此时仍需要双方都启用认证功能才可以保持邻居关系。
如果一端做了区域认证而另一端没做,则邻居关系会断开,恢复邻居关系方法:
    1.在做了区域认证的R1的快速以太网口下关闭认证,配置如下:
 R3(config)#int s1/1
     R3(config-if)#ip ospf authentication null
2.在另一端R2上也开启区域认证,邻居即可恢复邻接关系。
 R3(config-router)#area 0 authentication
  2.2 R2R3的区域0上进行MD5认证:
   R2(config)#int s1/1
 R2(config-if)#ip ospf authentication message-digest      //先启用接口上的MD5认证
R2(config-if)#ip ospf message-digest-key 1 md5 superbackbone
R2(config)#router ospf 10 
R2(config-router)#area 0 authentication message-digest   //启用区域MD5认证
注意: 区域认证一启用就要在该区域内的所有设备上都启用,要一致.
当配置了区域认证类型后,接口下会自动继承所在区域的认证类型方式,此时可手动调整来覆盖接口下继承的认证类型方式,即接口下的认证类型可以和区域上配置的认证的类型不同(一个明文,一个用MD5),这样也可以正常工作,但建议都配置为MD5.
2.3虚链路的区域配置
因为virtual-link属于area0,因此配置了area0的区域认证时,虚链路两端的ABR上都要配置。
R3(config)#router ospf 10
R3(config-router)#area 0 authentication
3、虚链路的认证配置(虚链路也可以单独配置认证,同样分为Null、明文、MD5认证,配置如下)
注意:虚链路在建立后的LSA状态是DNA LSA(DoNotAge不老化LSA)所以如果没有重启ospf进程,即使一端配置了认证,虚链路也是不会断开.
3.1虚链路的Null认证配置:
R2(config-router)#area 1 virtual-link 3.3.3.3 authentication null
R3(config-router)#area 1 virtual-link 2.2.2.2 authentication null
3.2虚链路的明文认证配置:
R2(config-router)#area 1 virtual-link 3.3.3.3 authentication-key superbackbone
R3(config-router)#area 1 virtual-link 2.2.2.2 authentication-key superbackbone
3.3虚链路的MD5认证配置:
R2(config-router)#area 1 virtual-link 3.3.3.3 authentication message-digest
R2(config-router)#area 1 virtual-link 3.3.3.3 message-digest-key 1 md5 superbackbone
R3(config-router)#area 1 virtual-link 2.2.2.2 authentication message-digest
R3(config-router)#area 1 virtual-link 2.2.2.2 message-digest-key 1 md5 superbackbone
4ospf 区域认证的一个特例虚链路的嵌套:
area0配置了区域认证时,所有与area0通过虚链路逻辑连接的ABR,都要配置认证,否则虚链路不能建立起来.
拓扑:R1--(area1)---R2--(area0)--R3--(area4)--R4--(area5)--R5--(area6)--R6
R4config)#router ospf 10
R4(config-router)#net 34.1.1.4.0 0.0.0.255 a 4
R4(config-router)#net 45.1.1.4.0 0.0.0.255 a 5
R4(config-router)#area 4 vi 3.3.3.3
R4(config-router)#area 0 auth message-digest
R5config)#router ospf 10
R5(config-router)#net 45.1.1.5.0 0.0.0.255 a 5
R5(config-router)#net 56.1.1.5.0 0.0.0.255 a 6
R5(config-router)#area 5 vi 3.3.3.3
R5(config-router)#area 0 auth message-digest
R5area6的虚链路认证是和area0R3(ABR)路由器做认证,和经过的area4虚链路的邻居路由器R4没有关系.
ISIS认证配置(明文-MD5)
ISIS认证:
isis支持neighbordomainarea认证,分为老式明文口令认证和使用key-chain的明文或MD5认证,其中老式认证只支持是明文认证;
邻居级别isis pass中指定的密码是在hello包中携带的,于邻居关系的认证;
区域级别area-pass中指定的密码是在所有L1 lsp报文,csnppsnp报文中携带的,用于L1链路状态信息交换的认证;
L2骨干domain-pass中指定的密码是在所有L2 lsp报文,csnppsnp报文中携带的,用来L2链路状态信息的交换认证.
isis的结构层次分为L1(区域)L2(骨干域),认证是分别针对层次设计的,
1、  老式口令(明文认证)
1.1邻居认证,缺省不分层次,只认证邻居,但可指定层次
R1_PE1
interface Serial1/1.12 point-to-point                    
ip address 172.16.11.1 255.255.255.252
ip router isis backbone
isis password isis-nei level-2      //邻居认证,邻居之间的认证可以指定isis级别
1.2区域L1 area认证:
R5_CE1:
router isis pe-ce
net 51.0005.0000.0000.1000.00
area-password isis-area-auth       //区域认证,只是认证L1链路状态信息的交换,不是认证邻居
     1.3骨干域L2 domain认证:
R2_P:
router isis backbone
net 51.0001.0000.0000.2000.00
domain-password backbone-auth       //domain认证,只是认证L2链路状态信息的交换,不是认证邻居
2、  使用key-chain认证:
先定义钥匙链:
key chain backbone
 key 10
   key-string super_backbone
 key 20
   key-string sup_backbone
2.1使用key-chain的明文和MD5邻居认证
R2_P
interface Serial1/2.21 point-to-point
 ip address 172.16.10.18 255.255.255.252
 ip router isis backbone
 mpls label protocol ldp
 mpls ip
 isis circuit-type level-2-only
 isis authentication mode text                //此两句可替代老式明文认证的area-pass功能
 isis authentication key-chain backbone
 frame-relay interface-dlci 21  
!
interface Serial1/2.23 point-to-point
 ip address 172.16.10.22 255.255.255.252
 ip router isis backbone
 mpls label protocol ldp
 mpls ip
 isis circuit-type level-2-only
 isis authentication mode md5
 isis authentication key-chain backbone
 frame-relay interface-dlci 23  
2.2使用key-chain的明文和MD5骨干域认证
R2_P
router isis backbone
 net 51.0001.0000.0000.2000.00
 is-type level-2-only
 authentication mode text                     //明文,此两句可替代老式域认证的domain-pass功能
 authentication key-chain backbone
R2_P
router isis backbone
 net 51.0001.0000.0000.2000.00
 is-type level-2-only
 authentication mode md5                      //MD5
 authentication key-chain backbone
 
BGP认证配置(MD5)
BGP认证:
  BGP的认证仅仅限制于邻居之间,设计为只使用MD5认证,启用认证后只有双方认证成功才能形成邻居关系,BGP需要建立(TCP dport 179)邻居关系后才能进行路由
R2_PE1(config)# router bgp 100
R2_PE1(config-router)# no auto-summ
R2_PE1(config-router)# neighbor 3.3.3.3 remote-as 100
R2_PE1(config-router)# neighbor 3.3.3.3 password mplsvpn //启用认证,就这一句,写上密码即可
R2_PE1(config-router)# neighbor 6.6.6.6 update-source loop0
R2_PE1(config-router)# neighbor 6.6.6.6 remote-as 100
R2_PE1(config-router)# neighbor 6.6.6.6 password mplsvpn
R2_PE1(config-router)# neighbor 6.6.6.6 update-source loop0
 
                                                            [by smcat]