802.1X 网络认证完全配置指南
802.1X 网络认证完全配置指南
- 标准依据: IEEE 802.1X-2020(Port-Based Network Access Control)
- 适用场景: 企业有线局域网、Wi-Fi 无线网络、园区网准入控制
- 文档版本: v2.0 · 2026-04
目录
一、协议概述
IEEE 802.1X 是由 IEEE 802 委员会制定的**基于端口的网络访问控制(PNAC)**标准,首次发布于 2001 年,最新版本为 2020 年修订版。
1.1 设计目标
| 目标 | 说明 |
|---|---|
| 身份验证 | 确保只有已认证的用户/设备才能访问网络资源 |
| 访问控制 | 基于身份动态授予网络权限(VLAN、ACL、带宽) |
| 审计追溯 | 记录认证日志,满足合规审计要求 |
| 抗非法接入 | 防止未授权设备通过物理接口接入内网 |
1.2 核心特点
- 🔐 基于端口控制:在网络层之前完成身份验证,未认证流量被隔离
- 🔄 协议无关性:通过 EAP(可扩展认证协议)支持多种认证方式
- 🌐 适用性广:同时支持有线以太网(IEEE 802.3)和无线网络(IEEE 802.11)
- 📦 标准封装:使用 EAPOL(EAP over LAN)在链路层传输认证报文
1.3 协议栈位置
应用层 ┌─────────────────┐
│ 业务应用 │
传输层/网络层 │ TCP/IP Stack │
├─────────────────┤
数据链路层 │ IEEE 802.1X │ ← 认证控制在此层
│ EAPOL / EAP │
物理层 │ 以太网 / Wi-Fi │
└─────────────────┘
二、核心架构与角色
802.1X 定义了三个核心实体,构成完整的认证体系:
┌────────────────┐ EAPOL ┌────────────────────┐ RADIUS ┌──────────────────┐
│ │ ◄────────────► │ │ ◄────────────► │ │
│ 申请者 │ │ 认证者 │ │ 认证服务器 │
│ Supplicant │ │ Authenticator │ │ Auth Server │
│ │ │ │ │ │
│ PC / 终端 │ │ 交换机 / AP │ │ RADIUS / LDAP │
└────────────────┘ └────────────────────┘ └──────────────────┘
用户侧 网络设备侧 后端服务侧
2.1 申请者(Supplicant)
职责: 发起认证请求,提供身份凭据
- 安装在用户终端(PC、手机、IoT 设备)上的 802.1X 客户端软件
- 响应认证者发来的 EAP 请求,发送用户名、密码或证书
- 常见实现:Windows 内置 Dot1x 客户端、macOS 系统支持、iNode、H3C iNode
2.2 认证者(Authenticator)
职责: 执行端口控制,中继认证报文
- 通常是接入层交换机或无线 AP/AC
- 维护受控端口(Controlled Port)和非受控端口(Uncontrolled Port)
- 认证前:受控端口阻断,仅允许 EAPOL 报文通过
- 认证后:受控端口放行,允许正常业务流量
| 端口状态 | 非受控端口 | 受控端口 |
|---|---|---|
| 认证前 | ✅ 开放(仅EAPOL) | ❌ 阻断 |
| 认证中 | ✅ 开放 | ❌ 阻断 |
| 认证成功 | ✅ 开放 | ✅ 开放 |
| 认证失败 | ✅ 开放 | ❌ 阻断 |
2.3 认证服务器(Authentication Server)
职责: 验证身份,返回授权策略
- 通常采用 RADIUS(Remote Authentication Dial-In User Service)协议
- 接收认证者转发的 EAP 报文,完成最终身份验证
- 可对接 AD/LDAP、证书服务(PKI)、数据库等后端身份源
- 认证结果携带授权属性(VLAN ID、ACL、带宽策略等)
三、认证流程详解
3.1 标准认证流程(EAP 中继方式)
申请者 认证者(交换机) 认证服务器(RADIUS)
│ │ │
│── EAPOL-Start ──────────► │ │
│ │── RADIUS Access-Request ────► │
│ ◄── EAP-Request/Identity ─│ ◄── RADIUS Access-Challenge ──│
│ │ │
│── EAP-Response/Identity ─►│ │
│ │── RADIUS Access-Request ────► │
│ ◄── EAP-Request/[Method] ─│ ◄── RADIUS Access-Challenge ──│
│ │ │
│ [多轮 EAP 交互...] │ [身份验证中...] │
│ │ │
│── EAP-Response/[Creds] ──►│ │
│ │── RADIUS Access-Request ────► │
│ │ │
│ │ ◄── RADIUS Access-Accept ─────│
│ │ (含授权属性: VLAN/ACL) │
│ ◄── EAP-Success ──────────│ │
│ │ │
│ [受控端口打开,允许通信] │ │
│ ◄══════════════════════ 正常网络通信 ══════════════════════ │
3.2 EAP 终结方式
区别于中继方式,EAP 在认证者(交换机)处终结,与 RADIUS 使用传统 PAP/CHAP 认证
申请者 认证者(交换机) RADIUS 服务器
│ │ │
│── EAPOL-Start ──────────► │ │
│ ◄── EAP-Request/Identity ─│ │
│── EAP-Response/Identity ─►│ │
│ │ │
│ ◄── EAP-Request/MD5 ──────│ [Challenge 由交换机生成] │
│── EAP-Response/MD5 ──────►│ │
│ │── RADIUS Access-Request ────► │
│ │ (PAP/CHAP 方式) │
│ │ ◄── RADIUS Access-Accept ─────│
│ ◄── EAP-Success ──────────│ │
3.3 报文类型说明
| EAPOL 报文类型 | 值 | 发起方 | 说明 |
|---|---|---|---|
EAP-Packet |
0x00 | 双方 | 承载 EAP 认证数据 |
EAPOL-Start |
0x01 | 申请者 | 主动发起认证 |
EAPOL-Logoff |
0x02 | 申请者 | 主动注销下线 |
EAPOL-Key |
0x03 | 认证者 | 传输密钥信息(WPA2 等) |
EAPOL-Encapsulated-ASF-Alert |
0x04 | - | 安全告警 |
四、EAP 认证方法对比
4.1 主流方法全景对比
| 方法 | 安全等级 | 服务端证书 | 客户端证书 | 适用场景 | 推荐度 |
|---|---|---|---|---|---|
| EAP-TLS | ⭐⭐⭐⭐⭐ | ✅ 必需 | ✅ 必需 | 高安全企业、政府、金融 | 🏆 最推荐 |
| PEAP-MSCHAPv2 | ⭐⭐⭐⭐ | ✅ 必需 | ❌ 不需 | 一般企业、BYOD 场景 | ✅ 推荐 |
| PEAP-TLS | ⭐⭐⭐⭐⭐ | ✅ 必需 | ✅ 必需 | 高安全无线 | ✅ 推荐 |
| EAP-TTLS | ⭐⭐⭐⭐ | ✅ 必需 | ❌ 不需 | 跨平台场景 | ✅ 推荐 |
| EAP-FAST | ⭐⭐⭐ | 可选 | 可选 | 思科遗留环境 | ⚠️ 谨慎 |
| EAP-MD5 | ⭐ | ❌ 无 | ❌ 无 | 测试/实验室 | ❌ 不推荐 |
| LEAP | ⭐ | ❌ 无 | ❌ 无 | 已淘汰 | 🚫 禁用 |
4.2 EAP-TLS 详解(最高安全性)
工作原理: 基于 TLS 握手进行双向证书认证
优势:
✅ 双向身份验证(服务端 + 客户端均需证书)
✅ 完全消除密码泄露风险
✅ 抗中间人攻击(MitM)
✅ 支持完美前向保密(PFS)
部署要求:
📋 需要 PKI 基础设施(CA 服务器)
📋 为每台设备签发客户端证书
📋 配置 CRL/OCSP 实现证书吊销检查
📋 客户端证书需安全分发(MDM/GPO)
4.3 PEAP-MSCHAPv2 详解(企业主流)
工作原理: TLS 隧道保护内部 MSCHAPv2 密码认证
阶段一:建立 TLS 隧道
客户端 ─── 验证服务端证书 ──► 建立加密隧道
阶段二:内部认证(隧道内)
客户端 ─── 用户名/MSCHAPv2哈希 ──► RADIUS 验证
⚠️ 安全注意:
必须启用服务端证书验证,否则易遭受钓鱼攻击
不要将 "不验证服务端证书" 配置推送给终端
4.4 方法选型决策树
是否能部署 PKI 基础设施?
│
是│ 否│
▼ ▼
需要双向证书认证? 用户名/密码认证
│ │
是│ 否│ ▼
▼ ▼ 选择 PEAP-MSCHAPv2
EAP-TLS PEAP-TLS (必须验证服务端证书)
(最高安全性)(高安全性)
五、RADIUS 服务器配置
5.1 FreeRADIUS 配置(开源方案)
5.1.1 安装
# Ubuntu / Debian
sudo apt-get install freeradius freeradius-utils
# RHEL / CentOS
sudo yum install freeradius freeradius-utils freeradius-ldap
5.1.2 基础客户端配置(/etc/freeradius/3.0/clients.conf)
# 定义认证者(交换机/AP)作为 RADIUS 客户端
client switch_core {
ipaddr = 192.168.1.254 # 交换机管理 IP
secret = "YourSecretKey123!" # 共享密钥(不少于16位,含大小写+数字+符号)
nastype = other
shortname = core-switch
}
client ap_controller {
ipaddr = 192.168.1.253 # 无线控制器 IP
secret = "WirelessKey456@"
nastype = other
shortname = wifi-ac
}
# 支持整个子网(可选)
client office_network {
ipaddr = 192.168.1.0/24
secret = "NetworkSecret789#"
}
5.1.3 用户配置(/etc/freeradius/3.0/users)
# 本地用户(测试用)
testuser Cleartext-Password := "testpass123"
Reply-Message = "Welcome, %{User-Name}!",
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
Tunnel-Private-Group-Id = "100"
# 仅用于 MAC 地址认证的旁路(MAB)
00-11-22-33-44-55 Auth-Type := Accept
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
Tunnel-Private-Group-Id = "200"
5.1.4 EAP 模块配置(/etc/freeradius/3.0/mods-enabled/eap)
eap {
default_eap_type = peap # 默认 EAP 方法
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
# EAP-TLS 配置
tls-config tls-common {
private_key_password = "your_ca_password"
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.pem
ca_file = ${cadir}/ca.pem
ca_path = ${cadir}
dh_file = ${certdir}/dh
cipher_list = "DEFAULT"
tls_min_version = "1.2" # 最低 TLS 1.2
ecdh_curve = "prime256v1"
# 证书吊销(生产环境建议启用)
# check_crl = yes
}
tls {
tls = tls-common
}
# PEAP 配置
peap {
tls = tls-common
default_eap_type = mschapv2
copy_request_to_tunnel = no
use_tunneled_reply = no
virtual_server = "inner-tunnel"
}
# MSCHAPv2
mschapv2 {
# send_error = yes
}
# EAP-TTLS
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = no
virtual_server = "inner-tunnel"
}
}
5.1.5 对接 Active Directory / LDAP
# /etc/freeradius/3.0/mods-enabled/ldap
ldap {
server = 'dc.yourdomain.com'
port = 389
identity = 'CN=radiusbind,OU=ServiceAccounts,DC=yourdomain,DC=com'
password = 'BindPassword123!'
base_dn = 'DC=yourdomain,DC=com'
update {
control:Password-With-Header += 'userPassword'
control:NT-Password := 'ntPassword'
}
user {
base_dn = "${..base_dn}"
filter = "(sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}})"
scope = 'sub'
}
group {
base_dn = "${..base_dn}"
filter = "(objectClass=group)"
membership_attribute = 'memberOf'
}
# 连接池
pool {
start = ${thread[pool].start_servers}
min = ${thread[pool].min_spare_servers}
max = ${thread[pool].max_servers}
spare = ${thread[pool].max_spare_servers}
uses = 0
retry_delay = 30
lifetime = 0
idle_timeout = 60
}
tls {
start_tls = no
}
}
5.1.6 服务管理
# 测试配置(调试模式)
sudo freeradius -X
# 启动服务
sudo systemctl enable freeradius
sudo systemctl start freeradius
# 测试认证
radtest testuser testpass123 127.0.0.1 0 testing123
# 检查日志
sudo journalctl -u freeradius -f
tail -f /var/log/freeradius/radius.log
5.2 Windows NPS(微软企业方案)
5.2.1 安装 NPS 角色
# PowerShell 安装 NPS 角色
Install-WindowsFeature NPAS -IncludeManagementTools
# 开启防火墙(RADIUS 端口)
New-NetFirewallRule -DisplayName "RADIUS Auth" -Direction Inbound -Protocol UDP -LocalPort 1812 -Action Allow
New-NetFirewallRule -DisplayName "RADIUS Acct" -Direction Inbound -Protocol UDP -LocalPort 1813 -Action Allow
5.2.2 NPS 配置要点
| 配置项 | 说明 |
|---|---|
| RADIUS 客户端 | 添加交换机/AP IP,填写共享密钥 |
| 连接请求策略 | 配置 802.1X 认证请求转发/本地处理 |
| 网络策略 | 定义用户组对应 VLAN/权限(RADIUS 属性下发) |
| 证书模板 | 配置服务端证书(来自企业 CA) |
| EAP 类型 | 推荐 PEAP-MSCHAPv2 或 EAP-TLS |
5.2.3 RADIUS 属性下发 VLAN
在「网络策略」→「设置」→「RADIUS 属性」中添加:
Tunnel-Type = VLAN (64号属性,值=13)
Tunnel-Medium-Type = 802 (65号属性,值=6)
Tunnel-Pvt-Group-Id = 100 (81号属性,值=VLAN ID)
六、交换机(有线)配置
6.1 华为交换机配置示例
# ── 系统视图 ──────────────────────────────
system-view
sysname Core-Switch
# ── RADIUS 方案配置 ────────────────────────
radius scheme radius_corp
primary authentication 10.10.1.100 # RADIUS 主服务器
primary accounting 10.10.1.100
secondary authentication 10.10.1.101 # RADIUS 备服务器
secondary accounting 10.10.1.101
key authentication cipher P@ssW0rd! # 共享密钥
key accounting cipher P@ssW0rd!
user-name-format without-domain # 用户名不携带域名
timer response-timeout 5 # 响应超时 5 秒
retry 3 # 重试 3 次
quit
# ── AAA 认证域配置 ──────────────────────────
aaa
domain corp.com
radius-server radius_corp
authentication-mode radius
accounting-mode radius
authorization-mode radius
quit
quit
# ── 全局开启 802.1X ─────────────────────────
dot1x enable
# ── 接口配置 802.1X ────────────────────────
interface GigabitEthernet 0/0/1
description "Access Port - Staff Area"
port link-type access
port default vlan 100 # 默认 VLAN(认证前隔离 VLAN)
dot1x enable
dot1x authentication-method eap # EAP 中继方式(推荐)
dot1x port-method mac-based # MAC-based(每用户独立认证)
dot1x re-authenticate # 开启周期性重认证
dot1x guest-vlan 999 # 未认证用户进入 Guest VLAN
dot1x auth-fail vlan 998 # 认证失败进入隔离 VLAN
dot1x critical-vlan 997 # RADIUS 不可达时进入 Critical VLAN
quit
# ── 显示验证 ────────────────────────────────
display dot1x
display dot1x sessions
display dot1x statistics interface GigabitEthernet0/0/1
6.2 H3C 交换机配置示例
system-view
sysname H3C-Switch
# RADIUS 方案
radius scheme corp_radius
primary authentication 10.10.1.100 1812
primary accounting 10.10.1.100 1813
key authentication cipher P@ssW0rd!
key accounting cipher P@ssW0rd!
user-name-format without-domain
quit
# 本地备用用户
local-user fallback class network
password cipher F@llB@ck123!
service-type lan-access
quit
# ISP 域
domain corp.com
authentication lan-access radius-scheme corp_radius local
authorization lan-access radius-scheme corp_radius local
accounting lan-access radius-scheme corp_radius local
quit
# 全局开启 802.1X
dot1x
# 接口配置
interface GigabitEthernet1/0/1
description "Staff Workstation Port"
port access vlan 100
dot1x
dot1x port-method macbased
dot1x mandatory-domain corp.com
dot1x guest-vlan 999
dot1x auth-fail vlan 998
quit
# 验证命令
display dot1x
display dot1x connection
display dot1x sessions interface GigabitEthernet1/0/1
6.3 Cisco Catalyst 交换机配置示例
! ── 全局 AAA 配置 ──────────────────────────
aaa new-model
aaa authentication dot1x default group radius
aaa authorization network default group radius
aaa accounting dot1x default start-stop group radius
! ── RADIUS 服务器配置 ─────────────────────
radius server CORP-RADIUS
address ipv4 10.10.1.100 auth-port 1812 acct-port 1813
key P@ssW0rd!
! ── 备份 RADIUS 服务器 ────────────────────
radius server CORP-RADIUS-BACKUP
address ipv4 10.10.1.101 auth-port 1812 acct-port 1813
key P@ssW0rd!
aaa group server radius RADIUS-GROUP
server name CORP-RADIUS
server name CORP-RADIUS-BACKUP
deadtime 10
! ── 全局 802.1X ───────────────────────────
dot1x system-auth-control
! ── VLAN 定义 ─────────────────────────────
vlan 100
name Staff-VLAN
vlan 998
name Auth-Fail-VLAN
vlan 999
name Guest-VLAN
! ── 接口配置 ──────────────────────────────
interface GigabitEthernet1/0/1
description "Staff Workstation Port"
switchport mode access
switchport access vlan 100
! 开启 802.1X
authentication port-control auto
dot1x pae authenticator
! 开启 MAB(设备无客户端时使用 MAC 认证)
mab
! 认证顺序:先 802.1X,失败后尝试 MAB
authentication order dot1x mab
authentication priority dot1x mab
! Guest VLAN(未认证)
authentication event no-response action authorize vlan 999
! Auth-Fail VLAN(认证失败)
authentication event fail action authorize vlan 998
! 开启 RADIUS 下发 VLAN
authentication violation restrict
spanning-tree portfast
! ── 验证命令 ──────────────────────────────
! show dot1x all
! show authentication sessions interface GigabitEthernet1/0/1
! show radius statistics
6.4 VLAN 策略规划建议
| VLAN | 名称 | 用途 | 权限 |
|---|---|---|---|
| 100 | Staff-VLAN | 认证成功的员工 | 完整内网访问 |
| 200 | IT-Admin | IT 管理员 | 所有权限 + 管理 |
| 300 | Finance | 财务人员 | 限制访问财务系统 |
| 800 | IoT-Device | IoT 设备(MAB) | 仅特定系统 |
| 998 | Auth-Fail | 认证失败隔离 | 无访问 / 重定向 |
| 999 | Guest | 未认证 / 访客 | 仅互联网 |
| 997 | Critical | RADIUS 故障旁路 | 最小权限 |
七、无线控制器配置
7.1 企业 Wi-Fi 802.1X(WPA2/WPA3-Enterprise)架构
用户设备(STA)
│
│ WPA2/WPA3-Enterprise
│ (EAPOL over Air)
▼
无线 AP
│
│ CAPWAP 隧道
▼
无线控制器(AC) ──── RADIUS ────► RADIUS 服务器
│
│ 有线上联
▼
核心交换机
7.2 Cisco WLC/Catalyst Center(无线 SSID 配置要点)
SSID 配置:
Security Policy: WPA2-Enterprise 或 WPA3-Enterprise
Authentication: 802.1X
AAA 配置:
RADIUS Server: 10.10.1.100 (Port 1812/1813)
Shared Secret: [填入共享密钥]
高级选项:
Dynamic VLAN Assignment: Enabled ← 支持 RADIUS 下发 VLAN
PMF (Protected Management Frames): Required (WPA3)
Fast Roaming (802.11r): Enabled ← 漫游时快速重认证
Pre-Auth Timeout: 30s
EAP Request Timeout: 30s
7.3 华为 AC 无线配置
# SSID 安全策略(WPA2-Enterprise)
security-profile name corp_wifi
security wpa2
authentication-mode dot1x
quit
# RADIUS 认证
radius-server template corp_radius
radius-server authentication 10.10.1.100 1812
radius-server accounting 10.10.1.100 1813
radius-server shared-key cipher P@ssW0rd!
quit
# AAA 域
aaa
domain corp.com
radius-server corp_radius
quit
quit
# VAP(虚拟接入点)绑定
vap-profile name corp_vap
ssid "Corp-WiFi"
security-profile corp_wifi
service-vlan 100
dot1x-profile corp_dot1x
quit
八、客户端配置
8.1 Windows 客户端配置
8.1.1 图形界面配置(PEAP-MSCHAPv2)
1. 打开「控制面板」→「网络和共享中心」→「更改适配器设置」
2. 右键目标网卡 → 「属性」→「身份验证」选项卡
3. 勾选「启用 IEEE 802.1X 身份验证」
4. 选择 EAP 类型:「Microsoft 受保护的 EAP (PEAP)」
5. 点击「设置」:
- 勾选「验证服务器证书」(重要!)
- 选择受信任的 CA 证书
- 身份验证方法:「加密身份验证 (MSCHAPv2)」
8.1.2 通过 GPO/PowerShell 批量配置
# 使用组策略推送 802.1X 配置
# 路径:计算机配置 → Windows 设置 → 安全设置 → 有线网络(IEEE 802.3)策略
# 或使用 netsh 命令
netsh lan add profile filename="dot1x_profile.xml" interface="以太网"
# 启用有线自动配置服务
Set-Service dot3svc -StartupType Automatic
Start-Service dot3svc
# 查看当前 802.1X 状态
netsh lan show settings
netsh lan show profiles
8.1.3 Windows XML 配置文件模板(PEAP)
<?xml version="1.0"?>
<LANProfile xmlns="http://www.microsoft.com/networking/LAN/profile/v1">
<MSM>
<security>
<OneXEnforced>true</OneXEnforced>
<OneXEnabled>true</OneXEnabled>
<OneX xmlns="http://www.microsoft.com/networking/OneX/v1">
<authMode>user</authMode>
<EAPConfig>
<EapHostConfig xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
<EapMethod>
<Type xmlns="http://www.microsoft.com/provisioning/EapCommon">25</Type>
<VendorId xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorId>
<VendorType xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorType>
<AuthorId xmlns="http://www.microsoft.com/provisioning/EapCommon">0</AuthorId>
</EapMethod>
<Config xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
<Eap xmlns="http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1">
<Type>25</Type>
<EapType xmlns="http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV1">
<ServerValidation>
<DisableUserPromptForServerValidation>true</DisableUserPromptForServerValidation>
<ServerNames>radius.corp.com</ServerNames>
<TrustedRootCA><!-- Root CA Thumbprint --></TrustedRootCA>
</ServerValidation>
<FastReconnect>true</FastReconnect>
<InnerEapOptional>false</InnerEapOptional>
<Eap xmlns="http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1">
<Type>26</Type><!-- MSCHAPv2 -->
</Eap>
<EnableQuarantineChecks>false</EnableQuarantineChecks>
<RequireCryptoBinding>true</RequireCryptoBinding>
<PeapExtensions/>
</EapType>
</Eap>
</Config>
</EapHostConfig>
</EAPConfig>
</OneX>
</security>
</MSM>
</LANProfile>
8.2 Linux 客户端配置(wpa_supplicant)
8.2.1 PEAP-MSCHAPv2 配置
# /etc/wpa_supplicant/wpa_supplicant-eth0.conf
ctrl_interface=/run/wpa_supplicant
ctrl_interface_group=netdev
update_config=1
network={
key_mgmt=IEEE8021X
eap=PEAP
identity="username@corp.com"
password="YourPassword123"
ca_cert="/etc/ssl/certs/corp-ca.pem" # 必须验证服务端证书
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
eapol_flags=0
}
8.2.2 EAP-TLS 配置
network={
key_mgmt=IEEE8021X
eap=TLS
identity="user@corp.com"
ca_cert="/etc/ssl/certs/corp-ca.pem" # CA 证书
client_cert="/etc/ssl/certs/user-cert.pem" # 用户证书
private_key="/etc/ssl/private/user-key.pem" # 用户私钥
private_key_passwd="KeyPassword123"
eapol_flags=0
}
8.2.3 启用服务
# 方式一:wpa_supplicant 直接启用
sudo wpa_supplicant -D wired -i eth0 -c /etc/wpa_supplicant/wpa_supplicant-eth0.conf -B
sudo dhclient eth0
# 方式二:systemd 服务(推荐)
sudo systemctl enable wpa_supplicant@eth0
sudo systemctl start wpa_supplicant@eth0
# 查看状态
sudo wpa_cli -i eth0 status
sudo wpa_cli -i eth0 log
8.3 macOS 客户端配置
系统设置 → 网络 → 以太网(或 Wi-Fi)→ 802.1X
认证方式:
☑ PEAP (推荐,支持用户名密码)
☑ EAP-TLS (推荐,证书认证)
☐ LEAP (禁用)
☐ EAP-MD5 (禁用)
用户名:user@corp.com
密码:[用户密码 / 证书]
高级 → 信任 → 选择企业 CA 证书 → 信任
8.4 iOS/Android(BYOD 场景)
iOS:
设置 → Wi-Fi → 目标 SSID → 配置
EAP 方法:PEAP / EAP-TLS
必须通过 MDM(如 Jamf/Intune)推送证书和配置文件
Android:
Wi-Fi → 目标 SSID → 高级选项
EAP 方法:PEAP / TLS
阶段 2 身份验证:MSCHAPV2
CA 证书:手动导入企业 CA 证书
推荐通过 MDM(Android Enterprise)统一配置
九、高可用与高级特性
9.1 RADIUS 高可用设计
┌─────────────────────┐
│ 负载均衡/故障转移 │
└────────┬────────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ RADIUS 主节点 │ │ RADIUS 备节点 │ │ 本地认证备份 │
│ 10.10.1.100 │ │ 10.10.1.101 │ │ (交换机本地用户) │
│ FreeRADIUS │ │ FreeRADIUS │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
┌─────────▼──────────────────▼─────────┐
│ 共享 LDAP/AD │
│ (账户/证书后端) │
└──────────────────────────────────────┘
9.2 关键高可用参数配置
# 华为交换机 - RADIUS 高可用配置
radius scheme radius_ha
primary authentication 10.10.1.100 1812 weight 80
secondary authentication 10.10.1.101 1812 weight 20
timer response-timeout 5 # 5 秒超时切换
retry 2 # 2 次重试后切备
dead-time 5 # 5 分钟恢复探测
quit
9.3 MAC 认证绕过(MAB)
适用场景: 打印机、IP 电话、门禁控制器等无 802.1X 客户端的设备
工作原理:
1. 设备连接端口,未响应 EAP 请求
2. 认证者超时,切换到 MAB 模式
3. 以设备 MAC 地址为用户名发送 RADIUS 请求
4. RADIUS 验证 MAC 是否在白名单
5. 认证通过 → 授权进入 IoT VLAN
Cisco 配置:
authentication order dot1x mab ! 先 802.1X,超时后 MAB
authentication fallback FALLBACK-ACL
华为配置:
mac-authentication enable
mac-authentication user-name-format mac-address with-hyphen
9.4 周期性重认证
# 华为 - 开启重认证
dot1x timer re-authenticate 3600 # 每 3600 秒(1小时)重认证
interface GigabitEthernet 0/0/1
dot1x re-authenticate # 接口开启重认证
# Cisco
interface GigabitEthernet1/0/1
authentication periodic ! 开启周期性重认证
authentication timer reauthenticate 3600
9.5 动态 VLAN 下发
RADIUS 服务器通过以下标准属性动态为用户分配 VLAN:
RFC 3580 定义的 VLAN 属性:
Attribute 64: Tunnel-Type = VLAN (13)
Attribute 65: Tunnel-Medium-Type = 802 (6)
Attribute 81: Tunnel-Private-Group-ID = <VLAN ID>
示例(RADIUS 返回):
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-ID = "100"
9.6 ACL 动态下发
Filter-ID(属性 11):指定预配置 ACL 名称
Filter-Id = "ACL_STAFF_INBOUND"
Cisco AV-Pair(属性 26,Cisco VSA):
Cisco-AVPair = "ip:inacl#1=permit tcp any 10.0.0.0/8 eq 80"
Cisco-AVPair = "ip:inacl#2=permit tcp any 10.0.0.0/8 eq 443"
Cisco-AVPair = "ip:inacl#3=deny ip any any"
十、安全加固建议
10.1 共享密钥安全
✅ 最佳实践:
- 长度 ≥ 16 字符
- 包含大小写字母、数字、特殊符号
- 每台网络设备使用唯一的共享密钥
- 定期轮换(建议每季度)
- 避免在配置中以明文显示(使用 cipher 加密存储)
❌ 禁止:
- 使用默认密钥(如 "secret", "radius123")
- 多台设备共享同一密钥
- 长期不更换密钥
10.2 证书安全(EAP-TLS/PEAP)
服务端证书:
✅ 使用受信任企业 CA 签发(或知名公共 CA)
✅ 有效期建议 1-2 年
✅ 算法:RSA 2048 位 或 ECDSA P-256 以上
✅ 配置 CRL/OCSP 吊销检查
✅ 证书 CN/SAN 与 RADIUS 服务器名称一致
客户端证书(EAP-TLS):
✅ 每设备唯一证书
✅ 通过企业 MDM/GPO 自动注册
✅ 有效期建议 1 年
✅ 离职/设备报废时及时吊销
10.3 客户端强制验证服务端证书
⚠️ 最常见的安全漏洞: 客户端未验证 RADIUS 服务端证书,导致钓鱼攻击成功
必须在所有客户端配置策略中强制:
- 验证服务端证书 = 启用
- 指定受信任 CA = 企业内部 CA
- 服务端名称 = radius.corp.com
- 拒绝用户手动绕过证书警告
10.4 Guest VLAN / Critical VLAN 安全
Guest VLAN 策略:
- 仅允许 DHCP、DNS、HTTP/HTTPS(互联网)
- 禁止访问内网任何资源
- 速率限制(防止占用带宽)
- 部署 Web 认证门户(可选)
Critical VLAN(RADIUS 故障旁路):
- 仅对已知的预授权设备开放
- 权限最小化(关键业务系统访问)
- 记录所有进入 Critical VLAN 的事件
- RADIUS 恢复后强制重认证
10.5 日志审计
# FreeRADIUS 详细日志
# /etc/freeradius/3.0/radiusd.conf
log {
destination = files
file = /var/log/freeradius/radius.log
auth = yes # 记录所有认证请求
auth_badpass = yes # 记录失败认证
auth_goodpass = yes # 记录成功认证
}
# 华为交换机 - 开启 RADIUS 认证日志
info-center source RADIUS channel loghost
info-center loghost 10.10.1.200 facility local7
# 监控告警建议(SIEM 规则):
# - 同一账号 5 分钟内失败 ≥ 5 次 → 告警暴力破解
# - 非工作时间认证成功 → 告警异常登录
# - RADIUS 服务不可达 → 立即告警
十一、故障排查
11.1 常见问题诊断流程
认证失败?
│
├── 1. 检查物理连接(链路是否 UP)
│
├── 2. 检查 RADIUS 服务器连通性
│ ping <RADIUS IP>
│ telnet <RADIUS IP> 1812
│
├── 3. 检查共享密钥是否一致
│ RADIUS 客户端配置 vs 交换机配置
│
├── 4. 检查 EAP 类型是否匹配
│ 交换机配置的 EAP 方法 vs RADIUS 允许的 EAP 方法
│
├── 5. 检查证书有效性(PEAP/EAP-TLS)
│ 证书是否过期
│ CA 链是否完整
│ 客户端是否信任 CA
│
└── 6. 查看日志
RADIUS: /var/log/freeradius/radius.log(开启 -X debug)
交换机: display dot1x statistics
11.2 常见错误及解决方案
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
EAP-Failure 立即返回 |
EAP 方法不支持 | 检查 RADIUS 和交换机 EAP 配置 |
Access-Reject |
用户名/密码错误或不存在 | 检查 AD/LDAP 账户状态 |
No response from server |
RADIUS 不可达 / 防火墙拦截 | 检查 UDP 1812 防火墙规则 |
Bad authenticator |
共享密钥不匹配 | 确认交换机与 RADIUS 密钥一致 |
| 证书警告 / 认证终止 | 服务端证书不受信 | 导入企业 CA 到客户端信任库 |
| 认证循环重试 | 超时配置过短 | 增大 timer response-timeout 值 |
| MAB 认证失败 | MAC 地址未注册 | 将 MAC 加入 RADIUS MAC 白名单 |
| VLAN 未切换 | 动态 VLAN 属性格式错误 | 检查 Tunnel-Type/Medium-Type 值 |
11.3 调试命令汇总
# FreeRADIUS 调试模式(临时)
sudo systemctl stop freeradius
sudo freeradius -X 2>&1 | tee /tmp/radius_debug.log
# 命令行测试认证
radtest username password 127.0.0.1 0 shared_secret
# EAP 认证测试(需 eapol_test)
eapol_test -c peap_test.conf -a 127.0.0.1 -p 1812 -s shared_secret
# 华为交换机
<Huawei> debugging dot1x all
<Huawei> terminal debugging
<Huawei> display dot1x statistics interface GigabitEthernet0/0/1
<Huawei> reset dot1x statistics
# Cisco 交换机
Switch# debug dot1x all
Switch# show authentication sessions interface Gi1/0/1 details
Switch# show radius statistics
# H3C 交换机
<H3C> debugging dot1x all
<H3C> display dot1x connection
<H3C> display dot1x sessions
十二、典型部署场景
场景一:中小企业(100-500 人)
推荐方案:PEAP-MSCHAPv2 + Windows NPS + Active Directory
架构:
┌──────────┐ ┌──────────────┐ ┌──────────────────┐
│ 员工终端 │────│ 接入交换机 │────│ NPS (RADIUS) │
│ Win/Mac │ │ IEEE 802.1X │ │ + Active Dir │
└──────────┘ └──────────────┘ └──────────────────┘
优势:
✅ 利用现有 AD 账户体系,无需额外用户管理
✅ Windows 原生支持,无需额外客户端
✅ NPS 免费内置于 Windows Server
✅ 通过 GPO 统一推送 802.1X 配置
部署步骤:
1. Windows Server 安装 NPS 角色
2. 配置 NPS 连接请求策略和网络策略
3. 添加交换机为 RADIUS 客户端
4. 交换机配置 802.1X + RADIUS 指向 NPS
5. GPO 推送客户端 802.1X 配置
场景二:大型企业(1000+ 人)
推荐方案:EAP-TLS + FreeRADIUS + PKI + MDM
架构:
┌──────────────────────────────────────────────────────┐
│ 企业 PKI │
│ 根 CA → 中间 CA → 服务端证书 + 客户端证书(每设备) │
└───────────────────────────┬──────────────────────────┘
│
┌────────────────────┼─────────────────────┐
│ │ │
┌─────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MDM │ │ FreeRADIUS HA │ │ LDAP / AD │
│ (Intune等) │ │ 主 + 备 │ │ 用户身份源 │
└──────┬──────┘ └─────────────────┘ └─────────────────┘
│ 推送证书 ▲ 认证
┌──────▼──────────────────┴────────────────────────┐
│ 企业接入层(有线 + 无线) │
└─────────────────────────────────────────────────┘
优势:
✅ 最高安全级别,无密码泄露风险
✅ 证书与设备绑定,设备即身份
✅ MDM 管理证书生命周期(自动申请/续期/吊销)
场景三:高校 / 校园网
推荐方案:802.1X + RADIUS + VLAN 分段
VLAN 规划:
VLAN 10 - 教职工(完整内网访问)
VLAN 20 - 学生宿舍(互联网 + 校内资源)
VLAN 30 - 教学设备(仅校内资源)
VLAN 40 - 服务器区(严格 ACL)
VLAN 999 - Guest(仅互联网,带宽限制)
认证方式:
有线(宿舍/教室):802.1X + PEAP-MSCHAPv2
无线:WPA2-Enterprise / WPA3-Enterprise
门禁/打印机:MAB(MAC 地址认证)
参考资料
| 资源 | 说明 |
|---|---|
| IEEE 802.1X-2020 | 官方标准文档 |
| RFC 3748 - EAP | EAP 协议定义 |
| RFC 2865 - RADIUS | RADIUS 协议定义 |
| RFC 3580 - 802.1X RADIUS | 802.1X 与 RADIUS 集成 |
| FreeRADIUS 官方文档 | FreeRADIUS 配置参考 |
| Microsoft EAP 文档 | Windows/NPS EAP 配置 |
| Cisco 802.1X 配置指南 | Cisco IOS 配置参考 |
| 华为 802.1X 文档 | 华为设备配置参考 |
| H3C 802.1X 配置 | H3C 设备配置参考 |
📌 最后更新: 2026 年 4 月
📋 适用标准: IEEE 802.1X-2020 · RFC 3748 · RFC 2865 · RFC 3580
⚠️ 安全提醒: 生产环境部署前务必在测试环境充分验证,并确保已制定回退方案