说一下PPP协议中的CHAP 和PAP 认证
PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主 要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
两种认证方式
一种是PAP,一种是CHAP。相对来说PAP的认证方式安全性没有CHAP高。PAP在传输password是明文的,而CHAP在传输过程中不传输密 码,取代密码的是hash(哈希值)。PAP认证是通过两次握手实现的,而CHAP则是通过3次握手实现的。PAP认证是被叫提出连接请求,主叫响应。而 CHAP则是主叫发出请求,被叫回复一个数据包,这个包里面有主叫发送的随机的哈希值,主叫在数据库中确认无误后发送一个连接成功的数据包连接。
clip_image002[4]
我的网络拓扑
其实单纯的说PPP下的CHAP和PAP的话 没必要把拓扑搞得这么复杂
交换机是不用接的 ,只需两台路由连两台PC即可
只是讲讲两种认证方式的做法
clip_image004[4]
clip_image006[4]
现在我在 ru1上 show 一下 他的接口情况 会发现封装格式为HDLC 或者ARPA
HDLC是串行接口的默认的封装协议 ,而ARPA 则是 快速以太网的封装格式
而我们今天要说的是PPP首先是具备用户验证能力的
下面介绍PPP链路建立的过程:一个典型的链路建立过程分为三个阶段:创建阶段、认证阶段和网络协商阶段。
阶段1:创建PPP链路 LCP负责创建链路。在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过LCP向对方发送配置信息报文(Configure Packets)。一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入了LCP开启状态。
应当注意,在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现。
阶段2:用户验证 在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。 在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。 最常用的认证协议有口令验证协议(PAP)和挑战握手验证协议(CHAP)。 认证方式介绍在第三部分中介绍。 阶段3:调用网络层协议 认证阶段完成之后,PPP将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP)。选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态地址。 这样,经过三个阶段以后,一条完整的PPP链路就建立起来了。
而他的两种方式,就是CHAP和PAP
口令验证协议(PAP) PAP是一种简单的明文验证方式。NAS(网络接入服务器,Network Access Server)要求用户提供用户名和口令,PAP以明文方式返回用户信息。很明显,这种验证方式的安全性较差,第三方可以很容易的获取被传送的用户名和口 令,并利用这些信息与NAS建立连接获取NAS提供的所有资源。所以,一旦用户密码被第三方窃取,PAP无法提供避免受到第三方***的保障措施。
挑战-握手验证协议(CHAP)
CHAP是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。NAS向远程用户发送一个挑战口令(challenge),其中包括会 话ID和一个任意生成的挑战字串(arbitrary challengestring)。远程客户必须使用MD5单向哈希算法(one-way hashing algorithm)返回用户名和加密的挑战口令,会话ID以及用户口令,其中用户名以非哈希方式发送。
CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以哈希算法对口令进行加密。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的操作,并将结果与用户返回的口令进行对照。CHAP为每一次验证任意生成一个挑战字串来防止受到再现***(replay attack)。在整个连接过程中,CHAP将不定时的向客户端重复发送挑战口令,从而避免第3方冒充远程客户(remote client impersonation)进行***。
至此我想准备已经做完了 ,重申一点,以上的理论部分并非出自本人之手,
今天的这个拓扑中配置如下
ru1 so/o 172.16.1.1 255.255.255.0
f0/0 192.168.1.1 255.255.255.0
ru2 s0/0 172.16.1.2/24
f0/0 192.168.11.1/24
sw1 ip 192.168.1.1/24
sw2 ip 192.168.11.1/24
pc的ip 我是依次配的
之后做的就是配置路由协议 注意时钟频率
确保两个网段的pc都能互相ping通,保存一下配置
接下来我们开始尝试做第一种CHAP认证方式
ru1上
ru1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ru1(config)#int s0/0
进入外网接口
ru1(config-if)#en
ru1(config-if)#encapsulation ppp
做ppp封装
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to down
09:28:06: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.11.1 on Serial0/0 from FULL to Down: Interface down or detachedru1(config-if)#ppp au
ru1(config-if)#ppp authentication chap
验证方式选择ppp下的chap
ru1(config-if)#user ru2 pass cisco
设置用户名密码如这里的用户名ru2,密码cisco
ru1(config)#
接着ru2上做配置
ru2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ru2(config)#int s0/0
进入接口
ru2(config-if)#en
ru2(config-if)#encapsulation ppp
做ppp封装
ru2(config-if)#ppp ?
如果你不知道下一步的命令 你可以?问
authentication Set PPP link authentication method
pap Set PAP authentication parameters
ru2(config-if)#ppp au
学会用tab键补全
ru2(config-if)#ppp authentication chap
ru2(config-if)#user ru1 pass cisco
使用对方的用户名 共同的密码
ru2(config)#
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
ru2(config)#
10:29:51: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on Serial0/0 from EXCHANGE to FULL, Exchange Done
ru2(config)#
clip_image008[4]
clip_image010[4]
你可以查看一下两台路由接口的信息,是不是会看到封装格式的变化
还有一个变化是 ru1#sh ip route后查看的路由表 会发现多了一个直连网段
提醒一点 当刚刚做完ru的配置后马上去pingru2 是ping不通的
接下来我们重启一下 尝试一下 pap的认证方式
ru1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ru1(config)#int s0/0
ru1(config-if)#en
ru1(config-if)#encapsulation ppp
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to down
00:00:44: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.11.1 on Serial0/0 from FULL to Down: Interface down or detachedru1(config-if)#ppp au
ru1(config-if)#ppp authentication pap
ru1(config-if)#ppp pap sent
ru1(config-if)#ppp pap sent-username ru1 pass cisco
ru1(config-if)#user ru2 pass cisco
ru1(config)#
ru2上的配置
ru2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ru2(config)#int s0/0
ru2(config-if)#en
ru2(config-if)#encapsulation ppp
ru2(config-if)#ppp au
ru2(config-if)#ppp authentication pap
ru2(config-if)#ppp pap sent
ru2(config-if)#ppp pap sent-username ru2 pass cisco
ru2(config-if)#user ru1 pass cisco
ru2(config)#
clip_image012[5]
这时你在ping一下 试试