CHAP双向认证为啥密必须一致?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CHAP双向认证为啥密必须一致?相关的知识,希望对你有一定的参考价值。

实验时,在CHAP双向认证配置过程中,只有当双方密码一致且用户名不一致的情况下才能认证成功!有人知道这是为什么吗?最好从他们的认证过程和原理解释!答的好会追分!

参考技术A

两端密码需要一致

基本原理:



两端密码不一致的情况:

R1(config)#interface s0/1

R1(config-if)#encapsulation ppp

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config-if)#ppp authentication chap

R1(config-if)#ppp chap hostname R1

R1(config-if)#ppp chap password 1

R1(config-if)#no shutdown

R1(config-if)#exit

R1(config)#username R2 password 2


R2(config)#interface s0/1

R2(config-if)#encapsulation ppp

R2(config-if)#ip address 192.168.1.2 255.255.255.0

R2(config-if)#ppp authentication chap

R2(config-if)#ppp chap hostname R2

R2(config-if)#ppp chap password 2

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#username R1 password 1


R1发送自己的主机名(R1)和挑战值,R2收到,查看用户数据库(username R1 password 1),密码是1,把挑战值和1加密运算得出一个值,把这个值回给R1同时附带上自己的主机名R2,R1收到后查看R2对应的密码是2,把最先发起的挑战值和这次R2对应的密码2加密运算又得出一个值,注意:两个值是不一样的,认证失败。

反过来过程一样。


关于两端密码为什么要设成相同,这是因为在行密码查找的时候,主认证方只看用户数据库。被认证方首先查看用户数据库,查找失败后查找线路配置(ppp chap hostname/password xx)。


单向认证中由于被认证方中没有配置用户数据库,所以用线路配置匹配。

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 

encapsulationppp    

通过上面的配置,在没有启用任何认证的情况下,链路是通的。


配置步骤:

 

1.       在两台路由器上进行pap认证:

如果我们进行单项认证的话配置应该如下

R1为认证的服务器端,需要建立本地口令数据库,并且开始pap认证。

R1(config)#usernameR2 password gairuhe------------------------建立本地口令数据库

R1(config)#int s1/0

R1(config-if)#pppauthentication pap--------------------------------要求进行PAP认证

   在这样的配置下,我们可以看到链路已经down了:

   R1(config-if)#

*Aug 23 16:45:12.639: %LINEPROTO-5-UPDOWN: Line protocol on InterfaceSerial1/0, changed state to down

 

R2为认证的客户端,需要发送用户名和密码来匹配服务器端的口令数据库

此时我们在R2上加上如下的配置:

 

   R2(config)#int s1/0

   R2(config-if)#ppp papsent-username R2 password gairuhe------发送用户名和密码

  R2(config-if)#

*Aug 23 16:47:48.635: %LINEPROTO-5-UPDOWN: Line protocol on InterfaceSerial1/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)#

 

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)#



2.在上面实验的基础上,将R1改为chap认证,而R2不变

在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

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



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

首先将R2的pap认证关闭 

R2(config-if)#no pppauthen pap  

R2(config-if)#no ppp pap sent-username R2 password gairuhe

可以看到chap认证是通过发送一个challenge信息来进行认证。

在R2上启用chap认证

R2(config)#int s1/0  

R2(config-if)#ppp authentication chap 

这个时候链路就已经通了。


以上是关于CHAP双向认证为啥密必须一致?的主要内容,如果未能解决你的问题,请参考以下文章

CHAP认证(双向)

思科chap 配置密码两边要一样吗

NGINX 配置 SSL 双向认证

K8s和etcd双向认证

CISCO-配置路由器的双向PAP和CHAP身份认证

PPP中的pap和chap认证