凌峰创科服务平台

Linux RADIUS服务器如何配置与安全防护?

RADIUS (Remote Authentication Dial-In User Service) 是一种广泛使用的网络协议,用于对远程用户进行认证、授权和计费,在 Linux 生态中,最经典和强大的 RADIUS 服务器实现是 FreeRADIUS

Linux RADIUS服务器如何配置与安全防护?-图1
(图片来源网络,侵删)

下面我将从以下几个方面为您详细介绍:

  1. RADIUS 核心概念 (为什么需要它)
  2. 主流 Linux RADIUS 服务器软件
  3. 以 FreeRADIUS 为例的详细部署与配置步骤
  4. 应用场景与排错

RADIUS 核心概念

在开始配置之前,理解 RADIUS 的工作模式至关重要。

  • 三个核心组件:

    1. NAS (Network Access Server): 网络接入服务器,这是用户尝试连接网络的“门卫”,无线接入点、VPN 服务器、以太网交换机、防火墙等,NAS 负责接收用户的凭据(用户名/密码),并将其打包成 RADIUS 请求包发送给 RADIUS 服务器。
    2. RADIUS Server: 认证服务器,它接收来自 NAS 的请求,验证用户凭据,并根据预设的策略返回“Access-Accept”(允许接入)或“Access-Reject”(拒绝接入)等响应,它还可以执行授权(该用户能访问哪些资源)和计费(记录用户的上网时长、流量等)。
    3. RADIUS Client: 通常就是 NAS,因为它作为 RADIUS 服务器的客户端。
  • 工作流程 (以认证为例):

    Linux RADIUS服务器如何配置与安全防护?-图2
    (图片来源网络,侵删)
    1. 用户在 NAS(如 Wi-Fi)上输入用户名和密码。
    2. NAS 将用户名和密码打包成一个 Access-Request 数据包,发送给 RADIUS 服务器。
    3. RADIUS 服务器收到请求后,会使用共享密钥 对数据包进行解密和验证,确保请求来自可信的 NAS。
    4. 服务器根据用户名在本地文件、数据库或外部服务(如 LDAP, Active Directory)中查找对应的密码,并进行比对。
    5. 如果密码正确,服务器返回 Access-Accept 响应,并可能附带授权属性(如分配 IP 地址、设置 VLAN 等),如果错误,则返回 Access-Reject
    6. NAS 收到响应后,决定是允许还是拒绝用户的连接请求。
  • 关键端口:

    • UDP 1812: 用于认证请求。
    • UDP 1813: 用于计费请求。
    • UDP 1645 / 1646: 旧版认证/计费端口,现在不推荐使用。

主流 Linux RADIUS 服务器软件

在 Linux 上,您有几个选择:

软件名称 描述 优点 缺点
FreeRADIUS 业界黄金标准,功能最强大、最灵活、最广泛使用的开源 RADIUS 服务器。 - 功能极其强大
- 模块化设计,支持多种数据库后端
- 社区活跃,文档丰富
- 支持最新的安全标准
- 配置复杂,学习曲线陡峭
- 默认配置文件非常庞大,初学者容易迷失
Daloradius 一个基于 Web 的 FreeRADIUS 管理界面,它本身不是 RADIUS 服务器,而是 FreeRADIUS 的图形化前端。 - 提供直观的 Web 界面管理用户、客户端和统计
- 大大简化了 FreeRADIUS 的日常管理
- 依赖于 LAMP/LNMP 环境
- 性能和灵活性不如直接配置 FreeRADIUS
openNDS 一个专注于网络接入控制的开源项目,核心是一个 RADIUS 服务器。 - 非常适合热点、访客网络等场景
- 配置简单,开箱即用
- 提供 Captive Portal 功能
- 功能相对 FreeRADIUS 较为单一,专注特定场景
Cisco Secure ACS / ISE 商业 RADIUS 服务器,通常用于大型企业网络。 - 功能强大,与 Cisco 设备集成度高
- 提供高级策略和报告功能
- 价格昂贵,闭源

对于绝大多数 Linux 环境下的 RADIUS 部署需求,FreeRADIUS 是不二之选,虽然配置复杂,但一旦掌握,您将拥有一个无比强大和灵活的认证引擎。


以 FreeRADIUS 为例的详细部署与配置

这里我们以一个最常见的场景为例:使用 FreeRADIUS 对本地用户文件进行认证,并配置一台 NAS (模拟为另一台 Linux 服务器) 来使用它

Linux RADIUS服务器如何配置与安全防护?-图3
(图片来源网络,侵删)

环境准备

  • 服务器端: 一台安装了 Ubuntu 22.04 的服务器,IP 为 168.1.10
  • 客户端 (NAS): 另一台安装了 Ubuntu 22.04 的服务器,IP 为 168.1.20
  • 目标: 让客户端服务器上的用户 testuser 通过 mysecretpassword 认证成功。

在服务器端安装和启动 FreeRADIUS

# 更新软件包列表
sudo apt update
# 安装 freeradius
sudo apt install freeradius
# 启动并设置开机自启
sudo systemctl enable --now freeradius

配置 FreeRADIUS

FreeRADIUS 的配置文件位于 /etc/freeradius/3.0/,主配置文件是 radiusd.conf,但通常我们不需要修改它,我们主要修改以下几个文件:

  1. clients.conf: 定义哪些 NAS (客户端) 可以连接到 RADIUS 服务器。
  2. users: 定义用户及其密码和权限。
  3. sites-available/default: 定义处理请求的“站点”和流程。

配置客户端 (clients.conf)

sudo nano /etc/freeradius/3.0/clients.conf

找到类似下面这样的部分,取消注释并根据你的 NAS IP 和共享密钥进行修改:

client nas_client {
    # NAS 的 IP 地址
    ipaddr          = 192.168.1.20
    # 共享密钥,必须和 NAS 上的配置完全一致!
    secret          = testing123
    # 短名称,用于日志
    nas_type        = other
}

注意: testing123 是默认的测试密钥,在生产环境中务必修改为一个复杂且唯一的密钥!

配置用户 (users)

sudo nano /etc/freeradius/3.0/users

在文件末尾添加我们的测试用户,格式为 用户名 密码 = "属性"

# 添加以下行
testuser        User-Password == "mysecretpassword"

这里我们只做了最简单的认证,属性 User-Password 表示这是一个明文密码的请求(在传输中会被加密),FreeRADIUS 还支持 Cleartext-Password,但 User-Password 是更标准的做法。

检查并启用默认站点 (sites-available/default)

sudo nano /etc/freeradius/3.0/sites-available/default

确保 authorizeauthenticate 部分包含了 files 模块,这是读取 users 文件的关键。

authorize {
    # ...
    files    # 确保这行存在且未被注释
    # ...
}
authenticate {
    # ...
    Auth-Type PAP {
        pap
    }
    # ...
}

pap 模块用于处理 PAP 认证,这是一种基础的认证方式,FreeRADIUS 默认支持多种认证方式,PAP 最简单。

重启 FreeRADIUS 服务

sudo systemctl restart freeradius

在客户端 (NAS) 上安装和测试 radeclient

客户端需要安装一个工具来发送 RADIUS 请求,radclient 是 FreeRADIUS 自带的,非常方便。

# 在客户端服务器 (192.168.1.20) 上执行
sudo apt update
sudo apt install freeradius-utils  # 包含 radclient

我们使用 radclient 在客户端服务器上向 RADIUS 服务器发起认证请求:

# 格式: radclient <服务器IP> <端口> <共享密钥>
# 使用 -x 参数可以输出详细调试信息
radclient -x 192.168.1.10 auth testing123

然后它会提示你输入用户名和密码:

  1. User-Name: testuser
  2. User-Password: mysecretpassword

如果一切配置正确,你会看到类似下面的成功响应:

radclient: Received Access-Accept from id 10 192.168.1.10:1813 length 38

如果失败,你会看到 Access-Reject,此时请仔细检查:

  1. 服务器和客户端的防火墙是否放行了 1812/udp1813/udp
  2. clients.conf 中的 ipaddrsecret 是否完全正确。
  3. users 文件中的用户名和密码格式是否正确。

应用场景与排错

常见应用场景

  • 1X 网络认证: 在企业有线和无线网络中,交换机和 AP 作为 NAS,通过 RADIUS 对员工的电脑或手机进行认证,确保只有授权设备才能接入内网。
  • VPN 认证: VPN 服务器作为 NAS,将用户的登录请求转发给 RADIUS 服务器进行统一认证,可以实现与 AD 集成。
  • Wi-Fi 认证: 无线控制器或 AP 作为 NAS,对连接 Wi-Fi 的用户进行认证。
  • 访客网络管理: 为访客提供临时账户,通过 RADIUS 进行认证和管理。

排错技巧

  1. 查看日志: 这是最重要的排错手段。

    • 系统日志: journalctl -u freeradiustail -f /var/log/syslog | grep radius
    • FreeRADIUS 内部日志: /var/log/freeradius/radius.log,这个日志非常详细,会显示数据包的收发、模块的加载和执行过程,是定位问题的金钥匙。
  2. 使用 radtest (或 radclient): 像上面演示的那样,从客户端直接发起测试请求,可以快速判断是网络问题、NAS 配置问题还是 RADIUS 服务器本身的问题。

  3. 使用 tcpdump 抓包: 如果怀疑 NAS 和 RADIUS 服务器之间的通信有问题,可以在服务器端或客户端上使用 tcpdump 抓取 1812 端口的流量。

    # 在 RADIUS 服务器上抓包
    sudo tcpdump -i any -n port 1812

    这样可以看到 NAS 是否在发请求,请求内容是什么,以及服务器是否回复了。


在 Linux 上部署 RADIUS 服务器,FreeRADIUS 是功能最全面、最可靠的解决方案,虽然其配置初看复杂,但只要理解了 RADIUS 的基本工作流程,并掌握了 clients.conf, users, sites-available/default 这几个核心文件的作用,就能应对绝大多数场景。

部署流程可以概括为: 安装 -> 配置客户端 -> 配置用户 -> 测试 -> 集成到生产环境 (如与 AD/LDAP 集成)

对于需要图形化管理的用户,可以额外安装 Daloradius 来简化日常的用户管理工作,掌握 FreeRADIUS 将为您构建安全、统一、可扩展的网络认证体系打下坚实的基础。

分享:
扫描分享到社交APP
上一篇
下一篇