802.1协议讲解
一、简介
802.1X是有线和无线局域网的认证标准协议,用于访问局域网中的资源。
1、802.1X体系结构
图1 802.1x协议的体系结构
客户端:接入LAN/WLAN的终端设备,可以是PC、打印机、网络摄像机等。
认证系统:通常为支持802.1X协议的网络设备,为客户端提供接入局域网的端口(物理端口或逻辑端口)。
认证服务器:常为Radius服务器,用于实现对用户进行认证、授权和计费。
认证系统和认证服务器之间既可以分布在两个不同的物理实体上,也可以是集中在一个物理实体上。
2、认证协议
EAP协议
图2 EAP帧结构
实现客户端、认证系统和认证服务器之间认证信息的交互。通过支持EAP协议,可以使用认证服务器来实现各种认证机制,认证系统仅仅需要传送认证信息,并根据认证返回的结果控制受控端口的状态。
EAPOL协议
图3 EAPOL帧结构
用于在客户端和设备端之间传送EAP协议报文,以允许EAP协议报文在LAN上传送。
RADIUS协议
图4 RADIUS帧结构
同时兼顾验证(authentication)、授权(authorization)及计费(accounting)三种服务的一种网络传输协议。
3、认证方式
EAP中继方式
EAP报文被直接封装到RADIUS报文中(EAP over RADIUS,简称为EAPoR),以便穿越复杂的网络到达认证服务器。
图5 中继方式认证过程
-
客户端发送EAPoL-Start报文触发认证。
-
设备端发出一个Identity类型的请求报文(EAP-Request/Identity)请求客户端的身份信息。
-
客户端程序响应设备端发出的请求,将身份信息通过Identity类型的响应报文(EAP-Response/Identity)发送给设备端。
-
设备端响应报文中的EAP报文封装在RADIUS报文(RADIUS Access-Request)中,发送给认证服务器进行处理。
-
RADIUS服务器收到设备端转发的身份信息后,启动和客户端EAP认证方法的协商。RADIUS服务器选择一个EAP认证方法,将认证方法封装在RADIUS Access-Challenge报文中,发送给设备端。
-
设备端收到RADIUS服务器发送的RADIUS Access-Challenge报文后,将其中的EAP信息转发给客户端。
-
客户端收到由设备端传来的EAP信息后,解析其中的EAP认证方法,如果支持该认证方法,客户端发送EAP-Response报文给设备端;如果不支持,客户端选择一个支持的EAP认证方法封装到EAP-Response报文中发送给设备端。
-
设备将报文中的EAP信息封装到RADIUS报文中发给RADIUS服务器。
-
RADIUS服务器收到后,如果客户端与服务器选择的认证方法一致,EAP认证方法协商成功,开始认证。以EAP-PEAP认证方法为例,服务器将自己的证书封装到RADIUS报文中发送给设备端。设备收到后将证书转发给客户端。客户端校验服务器证书(可选),与RADIUS服务器协商TLS参数,建立TLS隧道。TLS隧道建立完成后,用户信息将通过TLS加密在客户端、设备端和RADIUS服务器之间传输。如果客户端与服务器的EAP认证方法协商失败,则终止认证流程,通知设备认证失败,设备去关联客户端。
-
RADIUS服务器完成对客户端身份验证之后,通知设备认证成功。
-
设备收到认证通过报文后向客户端发送认证成功报文(EAP-Success),并将端口改为授权状态,允许用户通过该端口访问网络。
-
用户在线期间,设备端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。具体实现参见authentication handshake命令。
-
客户端收到握手报文后,向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。具体实现参见authentication handshake命令。
-
客户端可以发送EAPoL-Logoff报文给设备端,主动要求下线。
-
设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。
EAP终结方式
EAP报文在设备端终结并重新封装到RADIUS报文中,利用标准RADIUS协议完成认证、授权和计费。
图6 终结方式认证过程
EAP终结方式与EAP中继方式的认证流程相比,不同之处在于EAP认证方法协商由客户端和设备端完成,之后设备端会把用户信息送给RADIUS服务器,进行相关的认证处理。而在EAP中继方式中,EAP认证方法协商由客户端和服务器完成,设备端只是负责将EAP报文封装在RADIUS报文中透传认证服务器,整个认证处理都由认证服务器来完成。
二、监控摄像机使用的认证模式
常见的802.1X认证模式如下图:
图7 802.1x协议的认证模式
监控摄像机使用的认证模式为EPA-TLS和EAP-PEAP这两种,都属于是EAP中继认证方式。
1、TLS
图8 大华TLS认证模式配置界面
使用公钥证书来进行身份验证和密钥交换。客户端和服务器之间建立了一个安全的TLS通道,并且要求客户端拥有有效的数字证书。
2、PEAP
图9 大华PEAP认证模式配置界面
基于TLS协议,在客户端与服务器之间建立一个加密通道。允许在外部阶段使用用户名/密码等凭据,并将其传输到内部加密通道中。PEAP还支持服务器端认证,确保客户端连接到合法的服务器。
三、实现802.1X认证
1、命令行实现
在Linux上通过以下命令实现:
wpa_supplicant -B -i eth0 -c /etc/wpa_supplicant.wired.conf -D wired
其中 -B是指定以守护进程模式运行
-i是指定网卡
-c是指定这次认证的wpa_supplicant配置文件
-D是指定使用的驱动,这里是有线,所以用wired
编写不同的wire.conf文件实现不同的模式
PEAP模式
# IEEE 802.1X with dynamic WEP keys using EAP-PEAP/MSCHAPv2
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="example 802.1x network"
key_mgmt=IEEE8021X
eap=PEAP
phase2="auth=MSCHAPV2"
identity="user name"
password="password"
ca_cert="/etc/cert/ca.pem"
}
TLS模式
# WPA2-EAP/CCMP using EAP-TLS
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="example wpa2-eap network"
key_mgmt=WPA-EAP
proto=WPA2
pairwise=CCMP
group=CCMP
eap=TLS
ca_cert="/etc/cert/ca.pem"
private_key="/etc/cert/user.p12"
private_key_passwd="PKCS#12 passhrase"
}
2、通过移植wpa_supplicant实现
下载wpa_supplicant源码添加到工程,包含头文件
备注
802.1X参考资料:
802.1X认证详解-CSDN博客
https://support.huawei.com/hedex/hdx.do?docid=EDOC1100247312&id=ZH-CN_CONCEPT_0176368242
wpa_supplicant使用说明:Linux WPA Supplicant (IEEE 802.1X, WPA, WPA2, WPA3, RSN, IEEE 802.11i)
wpa_supplicant源代码: