Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41851
  • 博文数量: 28
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-26 20:08
文章分类

全部博文(28)

文章存档

2013年(28)

我的朋友

分类: 网络与安全

2013-02-27 18:54:24

点到点协议(PPP)

PPP(Point-to-Point Protocol 点到点协议)是一种可以用于异步(拨号)或同步串行(ISDN)介质数据链路层协议。它是用LCP(链路控制协议)建立并维护数据链路连接。NCP(网络控制协议)允许在点到点连接上使用多种网络层协议(被动路由协议),即协商链路上的其他网络层协议。它首先在LCP层进行身份验证,通过后才转到NCP层进行网络层协商。PPP提供认证、动态地址以及回叫功能。

点对点协议栈

 

NCP:一种建立和配置不同网络层协议的方法。NCP设计允许同时使用多个网络层协议。

LCP:一种建立、配置、维护和结束点到点连接的方法。

HDLC:在串行链路上封装数据报的方法。

EIA/TIA-232-C、V.24、V.35、ISDN:串行通信的物理层国际标准。
PPP会话的建立

当PPP连接开始时,链路经过3个会话建立阶段:

Link-establishment phase:链路建立阶段。每个PPP设备发送LCP包来配置和测试链路。LCP包包括一个叫做

     “配置选项”的字段,允许每个设备查看数据的大小、压缩和认证。如果没有设置“配置选项”字段,则

     使用默认的配置。

Authentication phase:认证阶段。如果配置了认证,在认证链路时可以使用CHAP或PAP。认证发生在读取网

     络层协议信息之前。同时可能发生链路质量决策。

Network layer protocol phase:网络层协商阶段。PPP使用NCP(网络控制协议)允许封装成多种网络层协议

     并在PPP数据链路上发送。每个网络层协议(如:IP、IPX、等这些被动路由协议)都建立和NCP的服务关系。

PPP认证方法

PPP链路可以使用两种认证方法:

说明:PAP使用明文两次握手实现,CHAP采用三次质询握手实现。

口令认证协议 PAP(Password Authentication Protocol)口令认证协议是两种方法中安全程度较低的一种。

     在PPP链路建立完毕后,源节点不停地在链路上反复发送用户名和密码,直到认证通过。PAP在认证过程

     中,密码在链路上是以明文传输的,而且由于源节点控制认证重试频率和次数,因此PAP不能防范再生攻击

     和重复的尝试攻击,尽管如此,PAP仍可用于以下情形:

     ①当系统中安装了大量不支持CHAP的客户端应用程序时;

     ②当不同供应商实现的CHAP互不兼容时;

     ③当主机远程登录必须使用纯文本口令时。

质询握手认证协议 CHAP(Challenge Handshake Authentication Protocol)利用3次握手周期性地验证远程

     节点的身份。CHAP定期执行消息询问,以确保远程节点任然拥有有效的口令值。口令值是个变量,在链路

     存在时该值不断改变,并且这种改变是不可预知的。本地路由器或第三方身份认证服务器控制着发送询问

     信息的频率和时机,CHAP不允许连接发起方在没有收到询问消息的情况下进行认证尝试,这使得链路更为

     安全。CHAP每次使用不同的询问消息,以及该询问消息与密码经过MD5运算后的HASH值。所以CHAP可以防止

     再生攻击,CHAP的安全性比PAP要高。

CHAP认证原理:

1.A端向B端发送自己的用户名(默认为主机名),和一个随机数。

2.B端收到后,检查自己的数据库中是否有和收到的用户名一致的用户名:

  有:就用这个用户名对应的密码与随机数做HASH,然后将HASH值和自己的用户名(默认为主机名)发送给A端;

  没有:一般情况下不会对A端(对端)做出回应。

3.A端检查收到的用户名,在自己的数据库中找到一致的用户名,然后利用这个用户名对应的密码与随机数做

  HASH。对比收到的HASH值,判断认证是否通过。通过,发送成功确认。

 

PPP实验

启用PPP封装:(无认证)

R1(config)#int S0/0

R1(config)#ip add 172.16.12.1 255.255.255.0

R1(config)#clock rate 64000

R1(config-if)#encapsulation ppp         //启用PPP封装协议

R1(config)#compress stac        //使用Stacker(LZS)压缩算法

R1(config)#ppp quality 80        //指定链路质量阀值

R1(config)#no sh

R2(config)#int S0/0

R2(config)#ip add 172.16.12.2 255.255.255.0

R2(config)#clock rate 64000

R2(config-if)#encapsulation ppp

R2(config)#compress stac

R2(config)#ppp quality 80

R1(config)#no sh

实验调试

R1#show int s0/0

R1#debug ppp negotiation        //显示PPP启动期间传输的数据包

特别说明:如果把路由器R1的S0/0接口地址改为1.1.1.1/24,把R2的S0/0接口地址改为2.2.2.2/24,然后分别在

      两个接口下封装PPP协议,并配置时钟速率。这时双方是可以通信的,在各自的路由表中也会产生一条对

      接口地址的主机路由,这是PPP的特性。

配置PAP认证:

单向认证:(left为主认证端,right为被认证端)

R1(config)#hostname left

left(config)#username right password right        //设置主认证端用于验证的用户名和密码

left(config)#int s0/0

left(config-if)#encapsulation ppp

left(config-if)#ppp authentication pap        //在主认证端启用PAP认证

R2(config)#hostname right

right(config)#int s0/0

right(config-if)#encapsulation ppp

right(config-if)#ppp pap sent-username right password right     //被认证端提交的用户名和密码

说明:如果没有配置本地认证数据库,或者用户名或密码错误,将会导致认证失败。
双向认证(left和right互为对方的主认证端和被认证端)

R1(config)#hostname left

left(config)#username right password right

left(config)#int s0/0

left(config-if)#encapsulation ppp

left(config-if)#ppp authentication pap

left(config-if)#ppp pap sent-username left password left

R2(config)#hostname right

right(config)#username left password left

right(config)#int s0/0

right(config-if)#encapsulation ppp

right(config-if)#ppp authentication pap

right(config-if)#ppp pap sent-username right password right

实验调试

left#debug ppp authentication        //查看PPP认证的过程

配置CHAP认证:
CHAP认证没有主和被区别,双方都需要做,也就是双向认证(标准配置)。

R1(config)#hostname left

left(config)#username right password samepwd

left(config)#int s0/0

left(config-if)#encapsulation ppp

left(config-if)#ppp authentication chap        //启用CHAP认证

R2(config)#hostname right

right(config)#username left password samepwd

right(config)#int s0/0

right(config-if)#encapsulation ppp

right(config-if)#ppp authentication chap

注意:

①CHAP认证默认时发送的用户名为主机名,而双方密码必须一致(密码都是敏感的,区分大小写);

②可以通过下边的命令更改发送的用户名和密码:

  left(config-if)#ppp chap hostname left        //更改发送的用户名

  left(config-if)#ppp chap password samepwd        //更改发送的密码

说明:在配置认证时也可以选择同时使用PAP和CHAP两种认证方式。如果同时配置了这两种认证方式,那么在链

      路协商阶段将先用第一种认证方式进行认证;如果对方建议使用第二种认证方式或者只是简单拒绝第一种

      方式(如:认证失败),那么将采用第二种方式进行认证。

      R1(config-if)#ppp authentication pap chap

      

      R1(config-if)#ppp authentication chap pap

多链路捆绑:

PPP协议支持链路捆绑,可以把多条运行PPP协议的链路捆绑成一条链路。这样能合并带宽,提高传输效率,而且物理接口无需再配置IP地址。直接在合并的虚链路上配置IP地址即可。

left(config)#int multilink 1        //建立multilink组

left(config-if)#ip add 192.168.2.1 255.255.255.0

left(config-if)#no sh

left(config)#int s0/0

left(config-if)#encapsulation ppp

left(config-if)#ppp multilink group 1        //将接口加入multilink组中

left(config-if)#no sh

left(config)#int s0/1

left(config-if)#encapsulation ppp

left(config-if)#ppp multilink group 1

left(config-if)#no sh

right(config)#int multilink 1

right(config-if)#ip add 192.168.2.2 255.255.255.0

right(config-if)#no sh

right(config)#int s0/0

right(config-if)#encapsulation ppp

right(config-if)#ppp multilink group 1

right(config-if)#no sh

right(config)#int s0/1

right(config-if)#encapsulation ppp

right(config-if)#ppp multilink group 1

right(config-if)#no sh

实验调试
left#show int multilink 1        //查看链路状态和带宽

额外实验

left(config-if)#int s0/0

left(config-if)#encapsulation ppp

left(config-if)#ip add 192.168.1.1 255.255.255.0

left(config-if)#peer default ip address 192.168.1.2        //给对端接口发送具体IP地址

left(config-if)#no sh

right(config)#int s0/0

right(config-if)#encapsulation ppp

right(config-if)#ip address negotiated        //此接口将自动获得IP地址

right(config-if)#no sh

 

阅读(335) | 评论(0) | 转发(0) |
0

上一篇:ACL

下一篇:局域网协议

给主人留下些什么吧!~~