PPPoE本地认证与远端认证接入控制

实验目的
掌握PPPoE接入控制模式结构、原理及特点;
掌握PPPoE本地认证和PPPoE + RADIUS远端认证两种接入控制模式的配置方法;
通过抓包分析PPPoE协议和RADIUS协议的运行过程,进一步加深对协议的理解。
实验内容
基于 PPPoE本地认证的LAN接入实验
根据拓扑图互连设备搭建实验环境,按实验要求进行设备配置,接入测试,并通过抓包,记录并分析PPPoE协议的运行过程。
基于PPPoE + RADIUS远端认证的LAN接入实验
根据拓扑图互连设备搭建实验环境,按实验要求进行设备配置,接入测试,并通过抓包,记录并分析PPPoE和RADIUS协议前后台的协同工作过程。
实验器材
以太交换机2台(配置线1根,用于交换机故障时排查问题);
PC级6-8台(用途:1台PPPoE服务器,1台Radius服务器,1台外网主机,3-5台PPPoE客户机);
USB接口的以太网卡:科B119房间1个,科B121房间7-9个;
USB转串口配置线1根(用于交换机故障时排查问题);
网线:科B119房间1根,科B121房间7-9根。
实验原理
PPPoE协议主要用于多点链路的接入控制。工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是与每一个NAR主机建立一条虚拟点到点链路,并用唯一的会话ID标识。发现阶段结束后,就进入标准的PPP会话阶段。
NAS和NAA是两个独立的逻辑实体,位于同一物理设备时称为本地认证。适合于接入用户不多的小网,用户接入认证和接入控制都有PPPoE服务器完成。用户身份认证通过后,由PPPoE服务器通过IP池为用户分配IP地址上网。
对于接入用户数多或多种接入用户的综合接入控制,通常采用基于PPPoE+RADIUS的远端认证方式。该方式下,用户认证由RADIUS服务器完成,对于通过认证的用户进行授权,并将授权信息通过RADIUS协议发送到PPPoE服务器设备的RADIUS客户端,PPPoE服务器据此为接入用户分配IP地址上网。
实验拓扑
实验操作与记录
网络连接端口记录与IP地址规划
本实验中,PPPoE客户IP地址池(内网地址),外网地址,网络连接端口等规划如表1和表2。
端口号 | 连接设备 | 端口号 | 连接设备 | |
---|---|---|---|---|
2 @交换机1 | PPPoE客户1 | 1 @交换机2 | PPPoE服务器eth0外网口 | |
6 @交换机1 | PPPoE客户2 | 14 @交换机2 | RADIUS服务器 | |
12 @交换机1 | PPPoE客户3 | 10 @交换机2 | 外网PC | |
16 @交换机1 | PPPoE客户4 | |||
1 @交换机1 | PPPoE服务器eth1内网口 |
设备或端口 | IP地址(若需要,可含掩码) |
---|---|
PPPoE客户端IP地址池 | 192.168.4.2/24~192.168.4.11/24 |
PPP连接中服务器端地址 (与IP地址池在同一网段的地址) | 192.168.4.1/24 |
PPPoE服务器外网网卡 (eth0) | 192.168.5.1/24 |
RADIUS服务器网卡 (eth0) | 192.168.5.2/24 |
外网主机 | 192.168.5.3/24 |
PPPoE本地认证
(1)关键步骤与主要内容
进入桌面终端,运行配置脚本,根据提示配置PPPoE服务器参数。
启动PPPoE服务器(开启服务)。
配置IP转发与NAT。
开启转发:sysctl -w net.ipv4.ip_forward=1
配置NAT:iptables -t nat -A POSTROUTING -s X.X.X.X/M –j MASQUERADE
开启wireshark,抓PPPOE客户端的报文。
客户机使用PPPoE拨号接入,重启相应网卡,即启用PPPoE连接。
客户机ping外网测试,能够ping通外网PC说明已经可以连接外网。
(2)实验记录
客户端 | 帐户名 | 密码 | 认证后获取的 IP地址 | Ping外网主机 (通,不通) |
---|---|---|---|---|
PPPoE客户1 | user1 | 1 | 192.168.4.5 | 通 |
PPPoE客户2 | user2 | 1 | 192.168.4.4 | 通 |
PPPoE客户3 | user3 | 1 | 192.168.4.6 | 通 |
PPPoE客户4 | user4 | ` | 192.168.4.8 | 通 |
PPPoE+RADIUS远程认证
(1)关键步骤与主要内容
进入桌面终端,运行配置脚本,根据提示配置PPPoE服务器参数。
输入命令 ~/Desktop/radius.sh ,运行radius脚本。(如果需要输入密码,则输入123456)
根据提示输入PPPoE服务器的IP地址,并回车。
根据提示输入NAS和NAA之间的共享密钥,并回车。
进入用户管理数据库。在终端内输入
mysql -u radius -p
后回车,输入密码:321
,进入数据库。在mysql>提示后输入
use radius
后回车,进入radius数据库。在mysql> 提示符后输入如下命令,命令中的用户名、密码请自行更改。
insert into radcheck (username,attribute,op,value)
values('用户名', 'Cleartext-Password', ':=', '密码');
在Radius服务器上开启抓包。
客户端配置过程同本地认证实验,各PPPoE客户机ping外网主机,观察通信结果。
(2)实验记录
科目 | 具体配置的数据 |
---|---|
PPPoE服务器和RADIUS服务器的共享密钥 key | 123 |
在PPPoE服务器上配置的RADIUS服务器的IP地址 | 192.168.5.2/24 |
在RADIUS服务器上配置的PPPoE服务器的IP地址 | 192.168.5.1/24 |
配置事项 | 账户名 | 密码 | 认证后获取的 IP地址 | Ping外网主机 (通,不通) |
---|---|---|---|---|
PPPoE客户1 | 1user | 1 | 192.168.4.7/24 | 通 |
PPPoE客户2 | 2user | 1 | 192.168.4.2/24 | 通 |
PPPoE客户3 | 3user | 1 | 192.168.4.5/24 | 通 |
PPPoE客户4 | 4user | 1 | 192.168.4.8/24 | 通 |
本地认证分析
客户机网络连接状态
发现阶段报文分析
该阶段的本质是建立主机和PPPOE服务器之间的一条虚拟点到点通道,并由唯一会话标识表征。该阶段的协议交互如下图所示。下面逐一分析每次交互报文内容。
如下图所示,PADI报文中,主机使用广播MAC地址进行广播,用于寻找合适的PPPoE服务器。
如下图所示,PADO报文中,满足要求的服务器均可以应答,把自己的MAC地址作为源地址,单播出去;载荷部分中AC Cookie的内容由PPPOE服务器自由定义和解释,携带tag的类型、长度和值。
如下图所示,PADR报文中主机单播,发向主机选择的服务器,进行请求。可以看到载荷中的AC-Cookie与PADO的完全一致,主机并未解析和处理它。
如下图所示,PADS报文中服务器应答主机,分配唯一的会话标识5,成功建立P2P隧道。
会话阶段报文分析
该阶段即在每条虚拟链路中承载PPP帧,进行PPP链路的建立,认证和网络层协议协商等。
PPP链路建立
从下面两张图可以看出PPP链路建立是主机和服务器相互请求,建立双向连接。最大接收单元指发送端PPP报文中信息域的长度不能超过MRU,否则接收端不负责处理,可能会将报文丢弃。图中可以看出二者最大接收单元都为1492字节;对于魔术字,两端不能重复,可以用来检测链路的环回情况,这是一个必要选项,必须被确认否则LCP不能UP。
服务器的请求还会对认证协议及算法进行协商,这里使用的是CHAP with MD5。
CHAP认证
PPP链路建立完成后,开始进行CHAP认证对用户身份进行鉴别。CHAP协议交互如下图所示。下面逐一分析每次交互报文内容。
如下图所示,PPPOE通过单播给对等端(主机)发送质询分组,质询值应该是唯一的和不可预知的值,并且应该在随后的每个询问中改变,增强了安全性。
如下图所示,主机接收到质询报文后,将质询值通过哈希计算进行加密再发送,因为使用的是MD5算法,所以输出为16字节。
网络层配置
认证通过后,有IPCP对网络层协议进行配置,分配IP地址。协议交互过程如图3-12所示。下面逐一分析每次交互报文内容。
下图可以看到,由于主机还没有IP地址,此时将参数配置选项中的IP地址填充全0,表示请求对端分配IP。
当服务器收到报文时,会发送NAK应答表示不接受对端IP。又检测到对端IP为全0,则将分配给对方的IP地址(192.168.4.6)填充到报文内,并给定DNS服务器进行应答,如下图所示。
下图可以看出,主机收到Config-Nak报文后,使用服务器提供的IP地址(192.168.4.6)和DNS服务器重新发送一个Config-Request报文。
下图可以看出服务器接受对端主机IP(192.168.4.6)并发送ACK。由于连接是双向的,服务器也要发送配置请求,然后主机发送ACK表示接受IP,这里不再赘述。
PPPOE终止阶段
该阶段主机和服务器均可发起终止,发送PADT。
远程认证分析
客户机网络连接状态
报文分析
整个认证授权协议交互过程如下图所示,下面逐一分析每次交互报文内容。
下图可以看出,在一个二层网络中,PPPOE服务器向2user主机发起CHAP 质询,质询值为随机23字节值,服务器用户为misaka
下图可以看出主机收到质询报文后通过MD5算法使用共享密钥对质询值进行加密,生成16字节的值,发送过去。
下图可以看出,PPPOE服务器通过三层网络把接入请求发送给Radius服务器应用层,且使用的是UDP无连接的方式。
接入请求报文中,鉴别码是一个16字节的随机数,这个值应该是不可预测的,并且是唯一的,因为具有相同密码的重复请求值,使黑客有机会用已截取的响应回复用户。可以看到报文中直接发送了认证用户名和质询响应,PPPOE服务器并未对质询响应做处理,这是与其本地认证最大的不同。
下图可以看出Radius服务器接收请求报文后接受了请求并发出响应,回应鉴别码是对整个数据包进行MD5演算产生的16字节索引,防止伪造服务器的回应。
下图可以看出PPPOE向主机发送接入成功报文,用户认证成功。
认证通过后,PPPOE服务器开始为用户2user分配IP地址,从图5-3可以看出该阶段过程与本地认证阶段别无二致,这里不再详细介绍,详见7.1(3)中网络层配置分析部分。我们这里可以通过下图可以看出,PPPOE服务器给用户分配的地址是192.168.4.2。
分配完IP地址后,PPPOE会向Radius服务器发送记账请求,如下图所示。
Radius服务器收到记账请求报文后发送响应,开始记账,即记录用户的网络行为,如下图所示。