凌峰创科服务平台

CentOS RADIUS认证服务器如何配置与使用?

本指南将以最常用、功能强大的 FreeRADIUS 为例,详细讲解在 CentOS 7/8/9 上搭建一个 RADIUS 服务器的完整过程。

CentOS RADIUS认证服务器如何配置与使用?-图1
(图片来源网络,侵删)

核心概念

  • RADIUS Server (认证服务器): 运行 FreeRADIUS 软件,负责接收客户端(如 AP、交换机)的认证请求,验证用户名和密码,然后返回 Access-Accept (接受) 或 Access-Reject (拒绝) 响应。
  • RADIUS Client (客户端): 网络设备,如无线 AP、VPN 服务器、交换机,它们将用户的认证请求发送给 RADIUS Server。
  • NAS (Network Access Server): RADIUS Client 的另一种称呼,指提供网络接入服务的设备。
  • Secret (共享密钥): RADIUS Server 和 RADIUS Client 之间必须配置一个完全相同的密钥,用于加密和验证通信内容。这是安全的关键!
  • User/Password (用户/密码): 存储在 RADIUS Server 中的用户凭证信息。

第一步:环境准备

  1. 操作系统: 一台干净的 CentOS 7/8/9 服务器。
  2. 网络配置: 确保服务器有静态 IP 地址,RADIUS Client 可以访问到该 IP。
  3. 防火墙: RADIUS 默认使用 UDP 1812 (认证) 和 UDP 1813 (计费) 端口,需要确保防火墙允许这些端口的流量。

第二步:安装 FreeRADIUS

FreeRADIUS 在 CentOS 的官方软件仓库中通常有提供,我们可以直接使用 yumdnf 进行安装。

# 对于 CentOS 7
sudo yum install -y freeradius freeradius-utils
# 对于 CentOS 8/9
sudo dnf install -y freeradius freeradius-utils

安装完成后,freeradius 服务会自动启动并设置为开机自启,我们可以检查一下状态:

sudo systemctl status radiusd

如果服务未启动,可以使用以下命令:

sudo systemctl start radiusd
sudo systemctl enable radiusd

第三步:配置用户

FreeRADIUS 的用户信息默认存储在 /etc/raddb/mods-config/files/authorize 文件中,这个文件实际上是 /etc/raddb/users 文件的一个符号链接。

CentOS RADIUS认证服务器如何配置与使用?-图2
(图片来源网络,侵删)

我们来添加一个测试用户,编辑 /etc/raddb/users 文件:

sudo vi /etc/raddb/users

在文件末尾添加以下内容:

# 用户名  密码    认证类型
testuser  Cleartext-Password := "testpass123"
        Service-Type = Framed-User,
        Framed-Protocol = PPP,
        Framed-IP-Address = 192.168.1.100,
        Framed-IP-Netmask = 255.255.255.0

解释:

  • testuser: 用户名。
  • Cleartext-Password: 表示密码是明文存储。在生产环境中,强烈建议使用 Crypt-Password 并使用 radpass 命令加密密码。
  • "testpass123": 用户的密码。
  • Service-Type = Framed-User: 定义用户类型为“帧用户”,常用于 PPP/SLIP 连接。
  • 后几行是分配给用户的网络属性,如 IP 地址、子网掩码等,可以根据需要修改。

保存并退出文件。

CentOS RADIUS认证服务器如何配置与使用?-图3
(图片来源网络,侵删)

第四步:配置 RADIUS 客户端

这一步至关重要,告诉 RADIUS Server 允许哪些设备(客户端)来请求认证。

编辑客户端配置文件 /etc/raddb/clients.conf

sudo vi /etc/raddb/clients.conf

在文件中添加你的 RADIUS Client(一台 IP 地址为 168.1.50 的无线 AP)的配置:

client test-network {
    ipaddr = 192.168.1.50
    netmask = 32
    secret = testing123  # <-- 共享密钥,必须与客户端设备上的配置完全一致!
}

解释:

  • client test-network: 为这个客户端定义一个别名,方便管理。
  • ipaddr = 192.168.1.50: RADIUS Client 的 IP 地址。
  • netmask = 32: 表示这是一个单机地址,如果是整个网段,可以设置为 255.255.0
  • secret = testing123: 共享密钥,这个密钥必须在你的 AP、交换机等所有 RADIUS Client 上进行完全相同的配置。请务必使用一个强密码替换 testing123

保存并退出文件。


第五步:配置 FreeRADIUS

为了简化调试,我们先让 FreeRADIUS 输出更详细的调试信息。

编辑主配置文件 /etc/raddb/radiusd.conf

sudo vi /etc/raddb/radiusd.conf

找到 log 部分,确保 authauth_detail 的日志级别足够高。

log {
    ...
    auth = yes
    auth_badpass = yes
    auth_goodpass = yes
    ...
}

更简单的方法是,在调试时,直接在命令行运行 radiusd -X,它会以调试模式启动,输出所有详细信息。


第六步:测试认证

我们可以开始测试了,有两种测试方法:使用命令行工具和使用网络设备。

使用 radtest 命令行工具

radtest 是一个简单的测试客户端,可以直接在服务器上运行来测试 RADIUS 服务。

# 格式: radtest <用户名> <密码> <RADIUS服务器IP> <端口号> <共享密钥>
radtest testuser testpass123 127.0.0.1 0 testing123

解释:

  • testuser: 我们在 users 文件中创建的用户名。
  • testpass123: 用户的密码。
  • 0.0.1: 本地回环地址,表示测试服务器自身。
  • 0: 使用默认的 RADIUS 端口(1812)。
  • testing123: 我们在 clients.conf 中为 0.0.1 配置的共享密钥。

预期成功输出: 你会看到以 Sent Access-Request 开头,并以 Received Access-Accept 结尾的输出,这表示认证成功。

Sent Access-Request ID 220, length 44
        User-Name = "testuser"
        User-Password = "testpass123"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
...
Received Access-Accept ID 220, length 20
        Service-Type = Framed-User
        Framed-Protocol = PPP
...

如果失败,请仔细检查 /var/log/radius/radius.log 日志文件,里面会有详细的错误信息。

使用真实网络设备(如华为/思科交换机)

这是实际应用场景,你需要配置你的网络设备。

以华为交换机为例:

# 进入系统视图
system-view
# 配置RADIUS方案
radius scheme MY_RADIUS
# RADIUS服务器IP
 primary authentication 192.168.1.100 1812
# 共享密钥
 shared-key cipher YourStrongSecretKey
# 计费服务器(可选)
 primary accounting 192.168.1.100 1813
 quit
# 配置认证方法
aaa
 authentication-scheme default
  authentication-mode radius
 quit
# 在接口上应用802.1X认证
interface Vlanif10
 dotx port-method macbased
 dotx port-control auto
 quit

关键点:

  • primary authentication 192.168.1.100 1812: 指定你的 RADIUS Server IP 和认证端口。
  • shared-key cipher YourStrongSecretKey: 这里的 YourStrongSecretKey 必须和 /etc/raddb/clients.conf 中的 secret 完全一致!

第七步:集成后端认证(可选,但推荐)

在生产环境中,用户通常存储在数据库(如 MySQL/MariaDB)或 LDAP 目录中,这里以集成 MariaDB 为例。

  1. 安装 MariaDB 和 FreeRADIUS 的数据库模块

    sudo dnf install -y mariadb-server freeradius-mariadb
  2. 初始化数据库并创建用户表

    sudo mysql_secure_installation # 初始化
分享:
扫描分享到社交APP
上一篇
下一篇