ppp认证

来源:互联网 发布:mssql fetch array 编辑:程序博客网 时间:2024/04/29 07:10

写在前面:今天看了victoryan兄弟的chap认证实验,想起来以前帮忙同学解决了一个关于pap和chap认证的问题,现在就把ppp中的pap和chap认证做一个总结。

实验等级:Aassistant

实验拓扑:

R1:s1/0 1.1.1.1/24-----------------------R2:s1/0  1.1.1.2/24

实验说明: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/0
R1(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/0
R2(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/0
R2(config-if)#ppp authentication pap
R2(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/0
R1(config-if)#ppp pap sen
R1(config-if)#ppp pap sent-username R1 password gairuhe
R1(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 pap
R1(config-if)#no ppp pap sent-username R1 password gairuhe
R1(config-if)#ppp authentication chap

我们发现,链路状态并没有改变,而且也没有任何的debug信息产生。这就是说明了在链路已经建立起来后,是无需进行再次的认证的。

我们把R1的是s1/0口shut down 后在no shut down,看看情况
R1(config-if)#shut
R1(config-if)#no shut
R1#
*Aug 23 17:00:19.663: Se1/0 PPP: Authorization required

此时发现链路已经断开,并且要求需要PPP的认证

 


3.在两台路由器上进行chap认证

首先将R2的pap认证关闭
R2(config-if)#no ppp authen pap
R2(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/0
R2(config-if)#ppp authentication chap
R2(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使用的是双方在本机计算出的不可逆的MD5值,所以不需要上面这条命令。抓包软件即使抓到了这个包,也无法逆推出用户名和密码。

因此chap的安全性高于pap

 

原创粉丝点击