菜缤的世界 CairBin's Blog - PPP
type: channel
link: https://blog.cairbin.top/index.php/tag/PPP/
items: 链路层安全扩展——L2TP协议

链路层安全扩展——L2TP协议
type: item
date: 2024-04-25T07:13:47+00:00
description: 链路层安全扩展——L2TP协议PPP协议协议概念说到数据链路层的安全协议，我们不得不先提一下PPP协议，后面的PAP、CHAP与L2TP协议都是围绕它展开的。（PPP不是本文重点，很多细节没有提到，到时候会专开一篇文章讲PPP）PPP（Point-to-point Protocol，点到点协议）协议是为同等单元之间传输数据包设计的，主要是用来通过拨号或专线方式建立点对点连接发送数据，使其成为各种主机、网桥和路由器之间简单连接到一种共同的解决方案。点对点网络中，一个数据帧的接收者就是固定的对等端。PPP规定了以下内容：帧格式以及成帧方法用于建立、配置和测试PPP链路的链路控制协议（Link Control Protocol, LCP），以及通信双方可通过LCP包协商一些选项。一组用于建立和配置网络层协议的网络控制协议（Network Control Protocol，NCP）。在PPP链路上可以传输不同网络协议的数据，NCP用于对这些网络协议相关的参数进行配置。但NCP只是一个统称，如果传输的是IP数据，则“NCP”是指IP控制协议（IPCP）。不同类型的NCP充分说明了PPP具有良好的通用性。鉴于IP的通用性，随后都以IPCP为例进行说明。协议封装格式PPP协议的封装格式如下：协议字段分为三种：如果是0xC021，则数据部分是PPP的链路控制数据；如果为0x0021，数据部分就是IP数据报；如果是0x8021，则表示这是网络控制数据。协议流程PPP协议流程如下：在建立PPP链路前，发送方和回应方必须建立一条物理连接。双方首先利用LCP建立PPP链路。用PAP或CHAP验证身份。用IPCP配置IP层参数。通信完成后，利用LCP断开PPP链路。断开物理连接。整个过程包括5个阶段：链路不可用阶段：链路状态的起始点和终止点。链路建立阶段：双方用LCP建立链路。认证阶段：回应方发起身份验证。网络层协议阶段：回应方给发起方分配IP地址（毕竟是对等方式连接的）。链路终止阶段：PPP链路终止。PAP和CHAP认证协议PPP协议有两种认证协议，分别是PAP协议和CHAP协议。PAP协议PAP（Password Authentication Protocol）是基于口令认证的方法，被认证方发送Authenticate-Request报文（类型1），其中包含了身份（通常是账号或者说用户名）和口令信息。若认证通过，认证方返回Authenticate-Ack（类型2），否则返回Authenticate-Nak（类型3）。PAP协议以明文方式传输身份和口令给网络接入服务器（Network Access Server，NAS）。因此安全性较差，容易被第三方窃取用户名和口令。另外，PAP在PPP身份认证过程中，由被认证方发起认证，并且仅在建立链路阶段使用，在数据传输过程中不能用。下面是PAP两次握手的具体过程：CHAP协议基于挑战认证的协议（Challenge-Handshake Authentication Protocol）通过三次握手完成身份认证，我们记认证方为S，其用户名为SU，被认证方为U其用户名为UU，随机数为R，口令为PW，则认证成功的工作过程如下（部分字段没有体现在下文中，详细请参考包格式）：$$ S\to U:0x0001,ID,R,SU \\ U\to S: 0x0002,ID,Hash(PW || R),UU \\ S\to U: 0x0003,ID,Message $$数据包格式如下图所示：Challenge和Response报文的类型编号分别为1和2，Success和Failure报文类型分别为3和4随机数和散列值长度可变，内容在值字段体现。名字字段描述发送方身份信息。消息字段包含描述信息，比如认证失败的原因。CHAP协议相比PAP协议较安全，它由认证方发起挑战，使用Hash函数来避免连接时传输明文，随机数可避免重放攻击，而且不定时重复呼叫用户提供口令来避免第三方冒充。但CHAP也有许多安全隐患：服务器明文存放口令单向认证，不能判断服务器是否假冒重复呼叫周期过长容易被攻击，周期过短计算量增加影响性能L2TP协议了解以上情况后，终于该本文主角登场了！概念第二层隧道协议（Layer 2 Tunnel Protocol, L2TP）是PPTP协议与Cisco L2F协议联合版本，有一部分采用PPTP，但可以在多种网络传输，突破了PPTP只能在IP网络上的局限性。我们来看下L2TP相关术语：LAC：L2TP接入控制器。作为L2TP隧道端点，位于一个LNS和一个远程系统之间，并在两者之间发数据包。从LAC发往LNS的数据包需要用L2TP协议进行隧道传输，从LAC到远程系统之间的连接或是本地的或是一个PPP连接。LNS：L2TP网络服务器。一次…