当前位置: 首页 > article >正文

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 中继方式认证过程

  1. 客户端发送EAPoL-Start报文触发认证。

  2. 设备端发出一个Identity类型的请求报文(EAP-Request/Identity)请求客户端的身份信息。

  3. 客户端程序响应设备端发出的请求,将身份信息通过Identity类型的响应报文(EAP-Response/Identity)发送给设备端。

  4. 设备端响应报文中的EAP报文封装在RADIUS报文(RADIUS Access-Request)中,发送给认证服务器进行处理。

  5. RADIUS服务器收到设备端转发的身份信息后,启动和客户端EAP认证方法的协商。RADIUS服务器选择一个EAP认证方法,将认证方法封装在RADIUS Access-Challenge报文中,发送给设备端。

  6. 设备端收到RADIUS服务器发送的RADIUS Access-Challenge报文后,将其中的EAP信息转发给客户端。

  7. 客户端收到由设备端传来的EAP信息后,解析其中的EAP认证方法,如果支持该认证方法,客户端发送EAP-Response报文给设备端;如果不支持,客户端选择一个支持的EAP认证方法封装到EAP-Response报文中发送给设备端。

  8. 设备将报文中的EAP信息封装到RADIUS报文中发给RADIUS服务器。

  9. RADIUS服务器收到后,如果客户端与服务器选择的认证方法一致,EAP认证方法协商成功,开始认证。以EAP-PEAP认证方法为例,服务器将自己的证书封装到RADIUS报文中发送给设备端。设备收到后将证书转发给客户端。客户端校验服务器证书(可选),与RADIUS服务器协商TLS参数,建立TLS隧道。TLS隧道建立完成后,用户信息将通过TLS加密在客户端、设备端和RADIUS服务器之间传输。如果客户端与服务器的EAP认证方法协商失败,则终止认证流程,通知设备认证失败,设备去关联客户端。

  10. RADIUS服务器完成对客户端身份验证之后,通知设备认证成功。

  11. 设备收到认证通过报文后向客户端发送认证成功报文(EAP-Success),并将端口改为授权状态,允许用户通过该端口访问网络。

  12. 用户在线期间,设备端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。具体实现参见authentication handshake命令。

  13. 客户端收到握手报文后,向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。具体实现参见authentication handshake命令。

  14. 客户端可以发送EAPoL-Logoff报文给设备端,主动要求下线。

  15. 设备端把端口状态从授权状态改变成未授权状态,并向客户端发送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源代码:


http://www.kler.cn/a/510209.html

相关文章:

  • 嵌入式硬件篇---基本组合逻辑电路
  • upload-labs靶场练习
  • Qt之文件系统操作和读写
  • 快手极速版如何查找ip归属地?怎么关掉
  • 服务器迁移MySQL
  • 无降智o1 pro——一次特别的ChatGPT专业模式探索
  • leetcode刷题记录(六十八)——2. 两数相加
  • OpenAI第一个真正意义上的AI Agent:ChatGPT Tasks,使用指南1.0
  • latin1_swedish_ci(latin1 不支持存储中文、日文、韩文等多字节字符)
  • Shell控监Kafka积压
  • 210. 课程表 II【 力扣(LeetCode) 】
  • 【git】如何删除本地分支和远程分支?
  • Gateway与WebFlux
  • docker容器中运行了一个Ubuntu系统,如何把主机的一个文件拷贝到这个Ubuntu系统中
  • python json.dump 插入到json文件中,中文乱码问题
  • MCU中的LSB、MSB和大端模式、小端模式
  • Spring Boot+Vue
  • node.js项目依赖关系分析工具 Depazer 的使用
  • C# winodw TableLayoutPanel 料盒生产状态UI自动生成
  • 差分(前缀和的逆运算)
  • Oracle系列---【Oracle中密码的策略如何设置】
  • 学校C语言实验——文件
  • 新星杯-ESP32智能硬件开发--ESP32系统
  • 常在道中
  • awk命令进阶
  • LlamaIndex环境配置