同时启用chap和pap两种认证
PPP的CHAP认证和PAP认证

PPP的CHAP认证和PAP认证Chap 和pap 认证有很多种,有单项的,有双向的。
单项chap认证。
(R1作为服务器端)R1(config)#interface s4/0R1(config-if)#ip address 192.168.1.1 255.255.255.0R1(config-if)#encapsulation ppp \\封装PPP协议R1(config-if)#ppp authentication chap \\开启认证,认证方式为chap认证R1(config-if)#exitR1(config)#username R2 password 0 123456 \\创建用户R2 ,用于识别认证客户端R2(config)#interface s4/0R2(config-if)#ip address 192.168.1.2 255.255.255.0R2(config-if)#encapsulation ppp \\封装PPP协议R2(config-if)#exitR2(config)#username R1 password 0 123456 \\创建用户R1,用于识别想服务器端单项pap 认证。
(R1作为服务器端)R1(config)#interface s4/0R1(config-if)#ip address 192.168.1.1 255.255.255.0R1(config-if)#encapsulation ppp \\封装PPP协议R1(config-if)#ppp authentication pap \\开启认证,认证方式为pap (服务器断开启)R1(config-if)#exitR1(config)#username R2 password 0 123456 \\创建的用户为客户端的主机名R2(config)#interface s4/0R2(config-if)#ip address 192.168.1.2 255.255.255.0R2(config-if)#encapsulation pppR2(config-if)#ppp pap sent-username R2 password 0 123456 \\定义客户端所要发送的用户名和密码,一般是发送跟自己主机名一样的的用户。
pppd拨号脚本说明文档

linux下PPPD拨号研究pppd脚本简介pppd脚本拨号会涉及到4个脚本,和PPP连接关系密切的有两个脚本是chat和options 两个脚本另外两个是pppd认证的脚本:chap-secrets、pap-secrets。
其中,chap-secrets 和pap-secrets是两种不同的认证方式,chat脚本是用来进行AT呼叫和控制的脚本,而options脚本就影响PPP连接的,指定了连接使用的设备、使用的控制字符传输速率、指定了硬件加速、溢出控制等。
options脚本/dev/ttyUSB0 //指定连接使用的设备115200 //设置连接使用的控制字符传输速率crtscts //告诉ppp使用modem的硬件流量控制connect '/mnt/iRTK/bin/chat -s -v -f /etc/ppp/cc864sr-connect-chat'//指定了要使用的chat脚本的位置debug //加入调试信息nodetachipcp-accept-localipcp-accept-remoteusepeerdns //使用服务器端协商的DNSdefaultroute //使用默认线路user "card" //电信“card”,移动“cmnet”,联通3G“3gnet”chat脚本一个chat脚本都是由字符串对来组成的。
前面的字符串都是期望获取的串,紧跟的是发送的字符串。
TIMEOUT 15 //延时ABORT "DELAYED"//收到字符串“BUSY”、“NO ANSWER”、“RINGING”就退出执行ABORT "BUSY"ABORT "ERROR"ABORT "NO DIALTONE"ABORT "NO CARRIER"TIMEOUT 40'' \rATOK ATS0=0 //禁用自动接听OK ATE1 //打开回显OK ATDT#777 //所需的拨号号码为#777#OK AT+CGDCONT=1,"IP","CMNET"CONNECT ''不同的运行商拨号的中心号码是不同的,以下这个是每个运行商的拨号中心号码:认证脚本一般情况下,PPP连接是需要进行身份认证的。
PPP协议

PPP点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。
PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。
在 TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI 模式中的第二层),替代了原来非标准的第二层协议,即 SLIP。
除了 IP 以外 PPP 还可以携带其它协议,包括 DECnet 和 Novell 的Internet 网包交换(IPX)。
简介PPP:点对点协议(PPP:Point to Point Protocol)点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。
PPP 最初设计是为两个对等节点之间的IP 流量传输提供一种封装协议。
在TCP-IP 协议集中它是一种用来同步调制连接的数据链路层协议(OSI 模式中的第二层),替代了原来非标准的第二层协议,即S LI P。
除了IP 以外 PPP 还可以携带其它协议,包括DECnet 和 Novell 的Internet 网包交换(IPX)。
PPP 主要由以下几部分组成封装:一种封装多协议数据报的方法。
PPP 封装提供了不同网络层协议同时在同一链路传输的多路复用技术。
PPP 封装精心设计,能保持对大多数常用硬件的兼容性,克服了SLIP不足之处的一种多用途、点到点协议,它提供的WAN数据链接封装服务类似于LAN所提供的封闭服务。
所以,PPP 不仅仅提供帧定界,而且提供协议标识和位级完整性检查服务。
链路控制协议:一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。
网络控制协议:协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议;配置:使用链路控制协议的简单和自制机制。
该机制也应用于其它控制协议,例如:网络控制协议(NCP)。
为了建立点对点链路通信,PPP 链路的每一端,必须首先发送LCP 包以便设定和测试数据链路。
在链路建立,LCP 所需的可选功能被选定之后,PPP 必须发送NCP 包以便选择和设定一个或更多的网络层协议。
认证方式pap chap协议解读

1. 前言PAP和CHAP协议是目前的在PPP(MODEM或ADSL拨号)中普遍使用的认证协议,CHAP 在RFC1994中定义,是一种挑战响应式协议,双方共享的口令信息不用在通信中传输;PAP 在RFC1334中定义,是一种简单的明文用户名/口令认证方式。
2. PAPPAP全称为:Password Authentication Protocol(口令认证协议),是PPP中的基本认证协议。
PAP就是普通的口令认证,要求将密钥信息在通信信道中明文传输,因此容易被sniffer监听而泄漏。
PAP协商选项格式:0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Type | Length | Authentication-Protocol |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+对于PAP,参数为:Type = 3,Length = 4,Authentication-Protocol = 0xc023(PAP)PAP数据包格式:0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Code | Identifier | Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Data ...+-+-+-+-+Code:1字节,表示PAP包的类型1 认证请求2 认证确认3 认证失败Identifier:ID号,1字节,辅助匹配请求和回应Length:2字节,表示整个PAP数据的长度,包括Code, Identifier, Length和Data字段。
PPP的PAP与CHAP深入详解

点到点协议(Point to Point Protocol,PPP)是IETF(Internet Engineering Task Force,因特网工程任务组)推出的点到点类型线路的数据链路层协议。
它解决了SLIP中的问题,并成为正式的因特网标准。
PPP协议在RFC 1661、RFC 1662和RFC 1663中进行了描述。
PPP支持在各种物理类型的点到点串行线路上传输上层协议报文。
PPP有很多丰富的可选特性,如支持多协议、提供可选的身份认证服务、可以以各种方式压缩数据、支持动态地址协商、支持多链路捆绑等等。
这些丰富的选项增强了PPP的功能。
同时,不论是异步拨号线路还是路由器之间的同步链路均可使用。
因此,应用十分广泛。
下面是我查的关于PPP协议认证的一些知识1。
什么情况我们可以用show cdp nei看到自己直边的邻居呢,邻居的发现对我们在排查问题时很有帮助,我们可以通过我们左右的邻居,来判断是那台设备出现问题,只要我们在接口上把物理端口打开,然后DCE端配上时钟就可以发现邻居。
Router(config-if)#do sh cdp neiCapability Codes: R –Router, T –Trans Bridge, B –Source Route Bridge S – Switch, H – Host, I – IGMP, r – RepeaterDevice ID Local Intrfce Holdtme Capability Platform Port ID R2 Ser 1/0 159 R 7206VXR Ser 1/0在上图中R2为我们的邻居,本地Ser1/0与R2的Ser1/0相连,R2的设备型号为7206VXR,为Router.Router#debug cdp adjCDP neighbor info debugging is onEnter configuration commands, one per line. End with CNTL/Z.Router(config)#int s1/0Router(config-if)#shRouter(config-if)#*Jan 29 17:06:09.883: CDP-AD: Interface Serial1/0 going down 由于shutdown的原因使的邻居断开*Jan 29 17:06:09.911: CDP-AD: Interface Serial1/0 going down*Jan 29 17:06:11.887: %LINK-5-CHANGED: Interface Serial1/0, changed state to administratively down*Jan 29 17:06:12.887: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to downRouter(config-if)#no shRouter(config-if)#*Jan 29 17:06:19.055: CDP-AD: Interface Serial1/0 coming up*Jan 29 17:06:21.015: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up*Jan 29 17:06:21.019: CDP-AD: Interface Serial1/0 coming up*Jan 29 17:06:22.019: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to upRouter(config-if)#do debug cdp pa cdp packet informationCDP packet info debugging is onRouter(config-if)#*Jan 29 17:06:56.167: CDP-PA: Packet received from R2 on interface Serial1/0*Jan 29 17:06:56.167: **Entry found in cache***Jan 29 17:06:58.415: CDP-PA: version 2 packet sent out on Serial1/0 2。
PAP认证和CHAP认证概述

PAP认证和CHAP认证概述一、PAP认证协议(PasswordAuthenticationProtocol,口令认证协议):PAP认证过程非常简单,二次握手机制。
使用明文格式发送用户名和密码。
发起方为被认证方,可以做无限次的尝试(暴力破解)。
只在链路建立的阶段进行PAP认证,一旦链路建立成功将不再进行认证检测。
目前在PPPOE拨号环境中用的比较常见。
PAP认证过程:PAP认证过程图首先被认证方向主认证方发送认证请求(包含用户名和密码),主认证方接到认证请求,再根据被认证方发送来的用户名去到自己的数据库认证用户名密码是否正确,如果密码正确,PAP认证通过,如果用户名密码错误,PAP认证未通过。
二、CHAP认证协议(ChallengeHandshakeAuthenticationProtocol,质询握手认证协议)CHAP认证过程比较复杂,三次握手机制。
使用密文格式发送CHAP认证信息。
由认证方发起CHAP认证,有效避免暴力破解。
在链路建立成功后具有再次认证检测机制。
目前在企业网的远程接入环境中用的比较常见。
CHAP认证过程:CHAP认证第一步:主认证方发送挑战信息【01(此报文为认证请求)、id(此认证的序列号)、随机数据、主认证方认证用户名】,被认证方接收到挑战信息,根据接收到主认证方的认证用户名到自己本地的数据库中查找对应的密码(如果没有设密码就用默认的密码),查到密码再结合主认证方发来的id和随机数据根据MD5算法算出一个Hash值。
CHAP认证过程图:CHAP认证第二步:被认证方回复认证请求,认证请求里面包括【02(此报文为CHAP认证响应报文)、id(与认证请求中的id相同)、Hash值、被认证方的认证用户名】,主认证方处理挑战的响应信息,根据被认证方发来的认证用户名,主认证方在本地数据库中查找被认证方对应的密码(口令)结合id找到先前保存的随机数据和id根据MD5算法算出一个Hash值,与被认证方得到的Hash值做比较,如果一致,则认证通过,如果不一致,则认证不通过。
PPP验证

PPP验证一:配置步骤:1:检验每台路由器是否已经分配主机名。
要分配主机名,可在全局配置模式下输入hostname name此名称必须与链路另一端的身份验证路由器所期望的用户名匹配2:在每台路由器上使用username name password password全局配置命令定义期望从远程路由器获得的用户名和口令。
如:username R3 password cisco注意:R3为对端路由器的主机名,cisco为密码,两端的密码必须相同。
3:使用PPP authentication {chap | chap pap | pap chap | pap}接口配置命令配置PPP身份认证。
二:PPP证方式:PAP 和CHAPPAP是双向握手,它为远程节点提供了建立其身份标识的简单方法。
PAP仅在初始链路建立期间执行。
CHAP使用三次握手的CHAP发生在链路建立时,并在其后定期使用三次握手来检验远程节点的标识。
如果配置了PPP authentication chap pap路由器将尝试试使用chap验证所有的传入的PPP会话。
如果远程设备不支持chap,路由器将尝试使用pap验证ppp会话。
如果设备不支持chap也不支持pap,身份验证将失败。
并且ppp会话将关闭。
如果配置了PPP authentication pap chap路由器将尝试试使用pap验证所有的传入的PPP会话。
如果远程设备不支持pap,路由器将尝试使用chap验证ppp会话。
如果设备不支持任何一种协议,身份验证将失败。
并且ppp会话将关闭。
注:如果同时启用了两种方法,链路协商期间会要求使用指定的第一种方法。
如果对方提出要求使用第二种方法或拒绝第一种方法,则会尝试第二种方法。
三:配置实验环境:GNS 注:在模拟器下看不到debug输入设备:cisco c3600路由器两台R2配置:Hostname R2username R3 password ciscointerface Serial0/0ip address 10.1.1.1 255.255.255.0encapsulation pppserial restart-delay 0clock rate 64000 //需要在其中一个配置时钟ppp authentication chapR3配置:Hostname R3username R2 password ciscointerface Serial0/0ip address 10.1.1.2 255.255.255.0encapsulation pppserial restart-delay 0no fair-queueppp authentication chap四:检验身份验证通过debug ppp authentication查看认证协商过程,下面是协议配置错误时的输出(此时还没有配置两个路由器的主机名,也没有添加认证用户名和密码。
PAPCHAP协议

命令debug ppp authentication 的输出
下图表明经过若干次认证要求后,认证服务器最终收到了认证客户端发送过来的正 确的"挑战"回应数据包。此时,双方的链路将成功建立。
பைடு நூலகம்意:
1. 2. PAP和CHAP认证过程中,口令是大小写敏感的。 身份认证也可以双向进行,即互相认证。配置方法同单向认证类似,只不过需 要将通信双方同时配置成为认证服务器和认证客户端。
pap&chap的优缺点
PAP is not a strong authentication method. Passwords are sent over the circuit “in the clear”, and there is no protection from playback or repeated trial and error attacks. The peer is in control of the frequency and timing of the attempts.( 截取自RFC1334)
PAP/CHAP协议
PPP(point-to-point protocol)提供的两种可选的身份认证方法 : 口令鉴别协议PAP(Password Authentication Protocol),是 PPP中的基本认证协议。PAP就是普通的口令认证,要求发起通信的 一方发送身份标识符和口令。 挑战握手认证协议CHAP(Challenge Handshake Authentication Protocol),通过三次握手周期性的校验对端的身 份,在初始链路建立时完成,可以在链路建立之后的任何时候重复 进行。
chap的认证过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用的命令为:
R2(config-if)#ppp authentication chap pap或者
R2(config-if)#ppp authentication pap chap
如果同时启用了两种验证协议,则在配置中指定的第一种验证方式在链路协商过程中将被请求。如果另一端设备建议使用第二种验证方法,或者第一种验证方法没有通过,那么两台设备之间就开始尝试第二种验证方法。
ip address1.1.1.2 255.255.255.0
encapsulationppp
通过上面的配置,在没有启用任何认证的情况下,链路是通的。
配置步骤:
1.在两台路由器上进行pap认证:
如果我们进行单项认证的话配置应该如下
R1为认证的服务器端,需要建立本地口令数据库,并且开始pap认证。
R1(config)#usernameR2passwordgairuhe------------------------建立本地口令数据库
*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
此时链路已经起来,我们仅在R1上做了认证,而在R2上没有进行认证。这就是pap的单向认证。
Pap的双向认证:
Pap的双向认证其实就是将两端同时都配置为认证服务器端和认证客户端。在上面实验的基础上,我们只要将R2配置成服务器端,将R1配置成客户端即可。
R2(config)#username R1 password gairuhe
R2为认证的客户端,需要发送用户名和密码来匹配服务器端的口令数据库
此时我们在R2上加上如下的配置:
R2(config)#int s1/0
R2(config-if)#ppp pap sent-usernameR2passwordgairuhe------发送用户名和密码
R2(config-if)#
*Aug 23 16:47:48.635: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
然后验证
因此cБайду номын сангаасap的安全性高于pap
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
这个时候链路就已经通了。
!
interface Serial1/0
ip address1.1.1.1 255.255.255.0
encapsulation ppp-------------------------------------------------设置封装为ppp
R2:
hostname R2
!
interface Serial1/0
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)#ppp authentication chap
我们发现,链路状态并没有改变,而且也没有任何的debug信息产生。这就是说明了在链路已经建立起来后,是无需进行再次的认证的。
我们把R1的是s1/0口shut down后在no shut down,看看情况
R1(config-if)#shut
*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
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
写在前面:今天看了victoryan兄弟的chap认证实验,想起来以前帮忙同学解决了一个关于pap和chap认证的问题,现在就把ppp中的pap和chap认证做一个总结。
实验等级:Aassistant
实验拓扑:
实验说明:PPP中的认证方式有pap和chap两种,这两种认证既可以单独使用也可以结合使用。并且既可以进行单向认证也可以进行双向认证。
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
pap是通过验证远端的用户名和密码是否匹配来进行验证
chap则是发送一个挑战包,然后远端通过自己的数据库的用户名和密码利用md5进行计算后返还一个数值,然后在发送方验证这个数值是否和自己计算出来的数值是否一致进行验证
基本配置:
R1:
!
hostname R1----------------------------------------------------------设置主机名为“R1”
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"
这两个认证同时启用是只需要一种认证通过即可建立起链路通信。
总结:
pap是通过发送用户名和密码进行匹配,我们就必须使用sent-username ** password **这条命令,并且这个用户名和密码可以通过抓包软件抓到,是明文传输的
chap的认证过程(单向认证,R2为服务器端,R1为客户端)
R2首先发一个挑战包给R1,包的内容包括:01(标识符,表示挑战分组)+ID(序列号)+随机数+自己的用户名(R2)
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
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 pppauthen pap
R1接收到这个包后,将挑战包的用户名(R2),随机数,ID和本地数据库的密码gairuhe进行计算,得出MD5的值,然后发送给R2
这个回应的分组包括:02(回应标识符)+ID(和R2的一样)+hash(MD5的计算值)+自己的用户名(R1)
R2收到后,通过ID找到它发送的挑战包,然后把ID,随机数,以及密码(通过本地数据库查找R1对应的密码)进行计算,得出MD5的值