RADIUS 认证服务器
RADIUS 协议概述
RADIUS(Remote Authentication Dial-In User Service)是 WiFi 企业网络的核心认证基础设施,定义了客户端(NAS/AP)与认证服务器之间的通信协议。
协议基础
属性 |
值 |
|---|---|
传输协议 |
UDP |
认证端口 |
1812 (或传统的 1645) |
计费端口 |
1813 (或传统的 1646) |
加密方式 |
MD5-based(仅部分字段加密) |
RADIUS 消息类型
Type |
名称 |
方向 |
说明 |
|---|---|---|---|
1 |
Access-Request |
NAS→Server |
认证请求 |
2 |
Access-Accept |
Server→NAS |
认证成功 |
3 |
Access-Reject |
Server→NAS |
认证失败 |
4 |
Accounting-Request |
NAS→Server |
计费记录 |
5 |
Accounting-Response |
Server→NAS |
计费响应 |
7 |
CoA-Request |
Server→NAS |
变更授权(动态策略) |
28 |
Disconnect-Request |
Server→NAS |
强制断开用户 |
RADIUS 属性系统
RADIUS 使用类型-长度-值(TLV)格式的属性传递信息:
┌──────────┬──────────┬──────────────┐
│ Type (1) │ Length (1)│ Value (var) │
└──────────┴──────────┴──────────────┘
WiFi 认证关键属性
Attribute |
Type |
说明 |
|---|---|---|
User-Name |
1 |
用户名 |
User-Password |
2 |
密码(加密) |
NAS-IP-Address |
4 |
AP 的 IP 地址 |
NAS-Identifier |
32 |
AP 的名称/ID |
Called-Station-ID |
34 |
AP 的 BSSID (目标) |
Calling-Station-ID |
37 |
STA 的 MAC 地址 (源) |
EAP-Message |
79 |
EAP 载荷(分片传输) |
Message-Authenticator |
80 |
防重放/完整性校验 |
WiFi 密钥分发属性
WPA/WPA2 Enterprise 需要 RADIUS 传递密钥材料:
MSK (Master Session Key) = 64 bytes
PMK (Pairwise Master Key) = MSK[0:32]
RADIUS 不直接发送 MSK,而是通过 vendor-specific attributes:
Microsoft:
EAP-MPPE-Keys (Vendor-Specific, VendorID=311)
→ 包含 MSK 的加密版本
标准方式:
RADIUS 使用 Shared Secret 对 MSK 进行加密传输
FreeRADIUS 配置示例
基本 sites-enabled 配置
authorize {
preprocess
chap
mschap
suffix "files" # 本地用户文件
# suffix "ldap" # LDAP 集成
eap {
if (ok) {
update control {
Auth-Type := EAP
}
}
}
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
eap {
if (userlock) {
reject
}
if (noop) {
ok
}
}
}
post-auth {
exec
logintime
# 审计日志
}
EAP 配置(eap.conf)
eap {
default_eap_type = tls
timer_expire = 60
ignore_unknown_eap_packets = yes
tls {
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.crt
CA_file = ${certdir}/ca.crt
cipher_suite = "DEFAULT:!aNULL:!eNULL:!3DES:!RC4"
tls_version_min = "1.2"
}
ttls {
default_eap_type = mschapv2
}
peap {
default_eap_type = mschapv2
}
}
RADIUS 高可用架构
负载均衡与故障转移
┌──────────┐
│ Load │
AP们 ─────→│ Balancer │
└────┬─────┘
│
┌──────┴──────┐
▼ ▼
RADIUS-1 RADIUS-2
(Primary) (Secondary)
│ │
▼ ▼
SQL/LDAP Database
配置:
- AP 配置多个 RADIUS 服务器(主+备)
- 主服务器无响应 → 自动切换到备用
- 共享用户数据库确保一致性
WLC 上的 RADIUS 配置示例
primary key radius-server identifier RADIUS1 ip-address 10.0.1.10 auth-port 1812 acct-port 1813
secondary key radius-server identifier RADIUS2 ip-address 10.0.1.11 auth-port 1812 acct-port 1813
wlan 1
security dot1x authentication primary server-group RADIUS-GROUP
security dot1x authentication fallback server-group RADIUS-BACKUP
RADIUS 安全最佳实践
措施 |
说明 |
|---|---|
使用强 Shared Secret |
≥32 字符,每个 NAS 独立密钥 |
启用 Message-Authenticator |
防止重放和篡改攻击 |
IP 白名单 |
只允许已知 AP/WLC 的 IP 连接 |
RADIUS over TLS (radsec) |
RFC 6678,加密整个 RADIUS 交换 |
定期审计日志 |
监控异常认证模式 |