PPP中的pap和chap认证

时间:2021-03-17 14:24:07

PPP中的pap和chap认证写在前面:今天看了victoryan兄弟的chap认证实验,想起来以前帮忙同学解决了一个关于pap和chap认证的问题,现在就把ppp中的pap和chap认证做一个总结。 实验等级:Aassistant 实验拓扑:PPP中的pap和chap认证 实验说明:PPP中的认证方式有pap和chap两种,这两种认证既可以单独使用也可以结合使用。并且既可以进行单向认证也可以进行双向认证。                                  pap是通过验证远端的用户名和密码是否匹配来进行验证chap则是发送一个挑战包,然后远端通过自己的数据库的用户名和密码利用md5进行计算后返还一个数值,然后在发送方验证这个数值是否和自己计算出来的数值是否一致进行验证 基本配置: R1:!hostname R1----------------------------------------------------------设置主机名为“R1”!interface Serial1/0 ip address 1.1.1.1 255.255.255.0 encapsulation ppp-------------------------------------------------设置封装为ppp R2:hostname R2!interface Serial1/0 ip address 1.1.1.2 255.255.255.0 encapsulation ppp 通过上面的配置,在没有启用任何认证的情况下,链路是通的。 配置步骤: 1.       在两台路由器上进行pap认证:如果我们进行单项认证的话配置应该如下R1为认证的服务器端,需要建立本地口令数据库,并且开始pap认证。R1(config)#username R2 password gairuhe------------------------建立本地口令数据库R1(config)#int s1/0R1(config-if)#ppp authentication pap--------------------------------要求进行PAP认证   在这样的配置下,我们可以看到链路已经down了:   R1(config-if)#*Aug 23 16:45:12.639: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to down R2为认证的客户端,需要发送用户名和密码来匹配服务器端的口令数据库此时我们在R2上加上如下的配置:    R2(config)#int s1/0R2(config-if)#ppp pap sent-username R2 password gairuhe------发送用户名和密码R2(config-if)#*Aug 23 16:47:48.635: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up 此时链路已经起来,我们仅在R1上做了认证,而在R2上没有进行认证。这就是pap的单向认证。 Pap的双向认证: Pap的双向认证其实就是将两端同时都配置为认证服务器端和认证客户端。在上面实验的基础上,我们只要将R2配置成服务器端,将R1配置成客户端即可。 R2(config)#username R1 password  gairuhe     R2(config)#int s1/0R2(config-if)#ppp authentication papR2(config-if)#*Aug 23 16:52:29.843: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to down R1(config-if)#int s1/0R1(config-if)#ppp pap senR1(config-if)#ppp pap sent-username R1 password gairuheR1(config-if)#*Aug 23 16:53:08.343: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up 2.在上面实验的基础上,将R1改为chap认证,而R2不变。  打开debug ppp authentication信息。在R1上进行如下的改变 R1(config-if)#no ppp authentication papR1(config-if)#no ppp pap sent-username R1 password gairuheR1(config-if)#ppp authentication chap 我们发现,链路状态并没有改变,而且也没有任何的debug信息产生。这就是说明了在链路已经建立起来后,是无需进行再次的认证的。 我们把R1的是s1/0口shut down 后在no shut down,看看情况R1(config-if)#shutR1(config-if)#no shutR1# *Aug 23 17:00:19.663: Se1/0 PPP: Authorization required 此时发现链路已经断开,并且要求需要PPP的认证 3.在两台路由器上进行chap认证首先将R2的pap认证关闭R2(config-if)#no ppp authen papR2(config-if)#no ppp pap sent-username R2 password gairuhe   我们通过debug信息看到   R1#   *Aug 23 17:07:24.031: Se1/0 PPP: Authorization required*Aug 23 17:07:24.063: Se1/0 CHAP: O CHALLENGE id 42 len 23 from "R1"*Aug 23 17:07:24.095: Se1/0 CHAP: I RESPONSE id 42 len 23 from "R2"*Aug 23 17:07:24.099: Se1/0 PPP: Sent CHAP LOGIN Request*Aug 23 17:07:24.103: Se1/0 PPP: Received LOGIN Response FAIL*Aug 23 17:07:24.107: Se1/0 CHAP: O FAILURE id 42 len 25 msg is "Authentication failed" 我们看到chap认证是通过发送一个challenge信息来进行认证。在R2上启用chap认证 R2(config)#int s1/0R2(config-if)#ppp authentication chapR2(config)#*Aug 23 17:11:41.839: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up这个时候链路就已经通了。 4.两种认证同时启用  使用的命令为:  R2(config-if)#ppp authentication chap pap 或者R2(config-if)#ppp authentication pap chap如果同时启用了两种验证协议,则在配置中指定的第一种验证方式在链路协商过程中将被请求。如果另一端设备建议使用第二种验证方法,或者第一种验证方法没有通过,那么两台设备之间就开始尝试第二种验证方法。这两个认证同时启用是只需要一种认证通过即可建立起链路通信。  总结:pap是通过发送用户名和密码进行匹配,我们就必须使用sent-username  ** password **这条命令,并且这个用户名和密码可以通过抓包软件抓到,是明文传输的
 
chap的认证过程(单向认证,R2为服务器端,R1为客户端)R2首先发一个挑战包给R1,包的内容包括:01(标识符,表示挑战分组)+ID(序列号)+随机数+自己的用户名(R2)
R1接收到这个包后,将挑战包的用户名(R2),随机数,ID和本地数据库的密码gairuhe进行计算,得出MD5的值,然后发送给R2
这个回应的分组包括:02(回应标识符)+ID(和R2的一样)+hash(MD5的计算值)+自己的用户名(R1)
R2收到后,通过ID找到它发送的挑战包,然后把ID,随机数,以及密码(通过本地数据库查找R1对应的密码)进行计算,得出MD5的值
然后验证
 因此chap的安全性高于pap本文出自 “盖如鹤的步徒” 博客,请务必保留此出处http://gairuhe.blog.51cto.com/77728/39524  

 

下文出自http://blog.sina.com.cn/s/blog_54ad56770100j7hi.html

PPP Chap authentication

PPP中的pap和chap认证

实验目的:R16与R15不能建立eigrp nei,检查PPP CHAP

正确配置如下。注意其中蓝色、红色、绿色部分,分别是互相对应的关系。这些参数ppp chap peer必须match,才能认证通过。

 

R15:

username CCIE password 0 cisco123
!
interface Serial1/0
 ip address 172.14.156.15 255.255.255.0
 ip authentication mode eigrp 200 md5
 ip authentication key-chain eigrp 200 cisco
 encapsulation ppp
 serial restart-delay 0
 ppp authentication chap cisco
 ppp chap hostname cisco
 ppp chap password 0 cisco123

------------------------------------

R16:

username cisco password 0 cisco123

!
interface Serial1/0
 ip address 172.14.156.16 255.255.255.0
 ip authentication mode eigrp 200 md5
 ip authentication key-chain eigrp 200 cisco
 encapsulation ppp
 serial restart-delay 0
 ppp authentication chap
 ppp chap hostname CCIE
 ppp chap password 0 cisco123

 

接下来,修改以上所说的关键参数,看其对ppp chap authentication有何影响!!!

第一步:修改接口下的password
----------------------------------------------------
如果修改接口下的password,修改成CCIEtest

R16(config)#int s1/0
R16(config-if)#ppp chap password 0 CCIEtest
R16(config-if)#do sh run int s1/0
interface Serial1/0
 ip address 172.14.156.16 255.255.255.0
 ip authentication mode eigrp 200 md5
 ip authentication key-chain eigrp 200 cisco
 encapsulation ppp
 serial restart-delay 0
 ppp authentication chap
 ppp chap hostname CCIE
 ppp chap password 0 CCIEtest      ///从cisco123改变为CCIEtest
进行验证

R16(config-if)#shut
R16(config-if)#no shut
Mar  1 01:06:04.915: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.15 (Serial1/0) is down: interface down
R16(config-if)#
Mar  1 01:06:08.847: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.15 (Serial1/0) is up: new adjacency

   发现仍然可以建立邻接关系,可见修改接口下的password不影响PPP chap authenticaiton,这是为什么呢?先带着这个问题,继续往下看。

 

第二步:修改全局下的password


这时候,如果将R16的password修改成cisco1

R16(config)#username cisco password 0 cisco1      ///将cisco123修改成cisco1 

发现R15和R16认证失败

R16(config-if)#
Mar  1 01:15:57.131: Se1/0 PPP: Authorization required
Mar  1 01:15:57.371: Se1/0 CHAP: O CHALLENGE id 195 len 25 from "CCIE"
Mar  1 01:15:57.435: Se1/0 CHAP: I CHALLENGE id 194 len 26 from "cisco"
Mar  1 01:15:57.439: Se1/0 CHAP: Using hostname from interface CHAP
Mar  1 01:15:57.439: Se1/0 CHAP: Using password from AAA
Mar  1 01:15:57.443: Se1/0 CHAP: O RESPONSE id 194 len 25 from "CCIE"
Mar  1 01:15:57.471: Se1/0 CHAP: I RESPONSE id 195 len 26 from "cisco"
Mar  1 01:15:57.475: Se1/0 PPP: Sent CHAP LOGIN Request
Mar  1 01:15:57.483: Se1/0 PPP: Received LOGIN Response FAIL
Mar  1 01:15:57.487: Se1/0 CHAP: O FAILURE id 195 len 25 msg is "Authentication failed"

 

   从上面debug ppp auth可以看到,PPP CHAP认证用户名用的的是接口下,而密码却是全局下的password。这也就回答了刚才的问题,为什么在interface下修改password不影响chap认证,因为压根就和他没关系。

把R15全局下的password也改成cisco1,认证通过,连接建立

R15(config)#username CCIE password 0 cisco1
R15(config)#
*Mar  1 01:21:28.647: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
*Mar  1 01:21:28.671: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.16 (Serial1/0) is up: new adjacency

    得出结论:R15和R16全局下的password必须一样,要么都是cisco123,要么都是cisco1,总之要一样。也就是最开始说的蓝色、绿色、红色,这3处参数必须一一对应。

    原理:R15和R16都将自己接口下配置的username和全局下配置的password 发起对ppp chap peer的challenge,然后互相交换,互相认证。

 

追加验证:是不是真的和interface下的password没关系

R16(config-if)#ppp chap password 0 suixinsuoyu    ///把密码配成“随心所欲”
R16(config-if)#shut
Mar  1 01:56:45.231: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.15 (Serial1/0) is down: interface down
R16(config-if)#no shut
Mar  1 01:56:54.279: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
Mar  1 01:56:55.391: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.15 (Serial1/0) is down: Interface Goodbye received
Mar  1 01:56:55.691: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
Mar  1 01:56:58.599: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.15 (Serial1/0) is up: new adjacency   ///果然不影响,没冤枉它,的确和它没关系

 

R15(config-if)#ppp chap password 0 luanqibazao   ///把密码配成“乱七八糟”
R15(config-if)#shut
R15(config-if)#
*Mar  1 01:56:26.179: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.16 (Serial1/0) is down: interface down
R15(config-if)#no shut
*Mar  1 01:56:28.035: %LINK-5-CHANGED: Interface Serial1/0, changed state to administratively down
*Mar  1 01:56:29.035: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to down
R15(config-if)#no shut
R15(config-if)#
*Mar  1 01:56:32.083: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
R15(config-if)#
*Mar  1 01:56:33.479: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 172.14.156.16 (Serial1/0) is up: new adjacency ///果然还是能建立邻居,没冤枉它,的确和它没关系