链路层安全协议——L2TP
“端到端” 与 “点到点”
端到端
在数据传输前,经过各种交换设备在两端设备间建立一条链路。链路建立后,发送端就可以发送数据,直至数据发送完毕,接收端确认接收成功
- **优点:**链路建立后,发送端知道接收设备一定能收到,而且经过中间交换设备时不需要进行存储转发,因此传输延迟小
- **缺点:**直到接收端收到数据为止,发送端的设备要一直参与传输。如果整个传输的延迟很长,那么对发送端的设备造成很大浪费。另外,如果接收设备关机或故障,那么端到端传输不可能实现
点到点
发送端把数据传给与它直接相连的设备,这台设备在合适的时候又把数据传给与之直接相连的下一台设备,通过一台一台直接相连的设备,把数据传到接收端
- **优点:**发送端设备送出数据后,它的任务已经完成,不需要参与整个传输过程,这样不会浪费发送端设备的资源。另外,即使接收端设备关机或故障,点到点传输也可以采用存储转发技术进行缓冲
- **缺点:**发送端发出数据后,不知道接收端能否收到或何时能收到数据
点对点协议PPP
PPP实际上是一个协议集合,它包括三个主要组成部分:
- 帧格式及成帧方法:一种将网络层分组封装到串行链路的方法。
- 一组链路控制协议LCP:用来处理连接建立、选项协商、测试线路和释放链路层连接。
- 一组网络控制协议NCP:用来处理连接建立、选项协商、测试线路和释放网络层连接
不同类型的NCP说明了PPP具有很好的通用性
DEAD状态
- 链路的初始状态为DEAD,这意味着不存在物理层连接。
- 当物理层连接建立以后,双方能够检测到载波,链路转换到ESTABLISH状态。
ESTABLISH状态
- 在ESTABLISH状态,PPP对等实体可以利用LCP协议协商一些配置选项。
- 如果LCP配置选项协商要求使用认证协议进行身份认证,当LCP配置完成后,链路状态转换到AUTHENTICATE状态。
- 否则,当LCP配置完成后,链路状态跳过AUTHENTICATE状态,直接转换到NETWORK状态。
AUTHENTICATE状态
- AUTHENTICATE状态是一个可选的状态。
- PPP允许使用三种认证协议:密码认证协议PAP和挑战握手认证协议CHAP和扩展认证协议EAP。
- 如果认证通过,链路状态转换到NETWORK状态。否则链路状态转换到TERMINATE状态。
NETWORK状态
- PPP对等实体可以使用NCP进行网络层参数的相关协商。
- 对于IPv4,NCP被称为IPCP。IPCP可协商一系列选项,包括IP压缩协议、IPv4地址、移动IPv4以及域名服务器等。
- NCP配置完成后,NCP协议可以控制链路转换到OPEN状态。
OPEN状态
- 只有链路进入OPEN状态后,PPP才可以传送上层协议的数据,如传送IP数据报。
- 在NETWORK状态和OPEN状态时,PPP也可以传送LCP分组和NCP分组。
- NCP可以根据需要,关闭网络层连接。一旦关闭网络层连接,LCP也将尝试终止PPP链路。
- LCP通过终止请求帧和终止确认帧终止PPP链路后,链路状态转换到TERMINATE状态。
TERMINATE状态
- 物理层连接被放弃后,链路将回到DEAD状态。
认证协议PAP和CHAP
PAP
口令认证协议,采用基于口令的认证方法
**认证过程:**被认证者向认证方发送“认证-请求”报文,其中包含了身份和口令信息。认证方根据请求报文返回相应信息
PAP包含的身份和口令信息为明文传输,所以无法防止窃听、重放和穷举攻击
CHAP
基于挑战-握手的认证协议
主要在PPP中使用,既可在拨号开始时使用,也可在连接建立后的任何时刻(如:数据传输阶段)使用
挑战与响应报文
Challenge和Response报文的类型编号分别为1和2
“值”字段为c和A1, “长度”可变
“名字”字段包含了发送方的身份描述信息
成功与失败报文
Success和Failure报文的类型为3和4
“消息”字段包含了描述信息,比如认证失败时可描述失败的原因
优缺点
**优点:**密钥信息不需要在通信信道中发送,而且每次认证所交换的信息都不一样,可以有效避免监听攻击
**缺点:**密钥在本地明文信息保存、不能防止中间人攻击
※ L2TP协议 ※
L2TP允许链路端点跨越多个网络
过程
- 通过电话网络与LAC建立PPP链路,这段链路和隧道一起构成虚拟的PPP链路
- 远程系统的PPP帧首先发送给LAC,LAC将它作为L2TP协议报文的数据区封装并发送给LNS
- LNS则对报文进行解封处理后发送给家乡网络中的主机
- 从家乡局域网中主机的角度看,其收到的PPP帧就是远程系统发出的PPP帧,两者之间建立了一条虚拟的PPP链路
在某些情况下,主机可以不依赖LAC,而是独立运行L2TP,并与LNS建立隧道,如:LAC客户。
控制连接 & 会话
**控制连接:**LAC和LNS的一条隧道对应一个控制连接
**会话:**LAC每收到一个来自远程系统的呼叫,就为该呼叫建立一个会话
- LAC和LNS通过协商建立控制连接后,意味着隧道建立成功,随后即可承载会话
- 控制连接和会话都有唯一标识,发起方和回应方为同一隧道及会话指定的标识可以不同
- 在建立控制连接和会话时,双方都会将自己指定的标识通告对方
隧道、控制连接及会话之间的关系
- 一条隧道对应一个控制连接,可承载多个会话,分别对应多个远程系统
- 各远程系统分别呼叫LAC,与LAC建立PPP链路,随后LAC与LNS建立会话
- PPP链路和L2TP会话共同构成虚拟PPP链路
一次完整的L2TP交互包括5个步骤:建立控制连接、建立会话、数据传输、终止会话、终止控制连接
建立控制连接的协商可由LAC发起,也可由LNS发起
建立会话的两种情况(呼入和呼出)不一定要同时包含或先后进行
通信实体在收到一个L2TP协商报文后应发回确认,以确保可靠性
- 可以捎带在下一发送的报文中返回
- 如果没有下一报文,则返回专门的确认报文,即ZLBACK(Zero Length Body ACK), 即实体长度为0的确认报文,仅包含首部,数据区为空
- 终止控制连接阶段的ZLBACK是必需的,其他各阶段则是可选的
L2TP消息
L2TP包括两种消息:数据消息和控制消息,分别通过L2TP数据通道和控制通道传输
- 数据消息承载PPP帧
- 控制消息则用于L2TP隧道和会话的协商及维护
L2TP不保证数据消息的可靠传输,但保证控制消息的可靠传输
L2TP协议流程—可靠性机制
从TCP/IP协议族分层的角度看,L2TP是一个应用层协议,基于UDP,使用知名端口1071
UDP不保证可靠投递,需要加入确保控制消息可靠投递的机制
- 每个L2TP报文都包含序号,为检测报文丢失和乱序提供基础
- 使用肯定-确认,防止报文丢失
- 使用滑动窗口技术,提高通信效率并进行流量控制
- 使用慢启动策略,防止拥塞
安全性分析
未提供对每个报文的认证功能,无法抵抗插入攻击和地址欺骗
未提供对报文的完整性保护,攻击者可能会构造假冒的控制消息,使得隧道或底层链路断开,造成拒绝服务攻击
不提供对PPP数据的机密性和完整性保护,若使用CHAP,则可体现端点身份认证的功能。但CHAP依赖共享秘钥,而L2TP并未讨论密钥的生成方法