跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 安全和强化指南 / 身份验证 / 设置 freeRADIUS 服务器
适用范围 SUSE Linux Enterprise Server 15 SP4

9 设置 freeRADIUS 服务器

RADIUS(远程身份验证拨入用户服务)协议一直以来都是用于管理网络访问的标准服务。它为特大型企业(例如互联网服务提供商和手机网络提供商)提供身份验证、授权和统计 (AAA),在小型网络中应用也很广泛。它对用户和设备进行身份验证,授权这些用户和设备使用特定的网络服务,并跟踪服务的使用以进行计费和审计。您不需要使用全部三个 AAA 协议,只需使用所需的协议。例如,您可能不需要统计功能,而只需要客户端身份验证功能,或者,您可能只需要统计功能,客户端授权交由其他某个系统来管理。

此协议极其高效,使用普通配置的硬件就能管理数千个请求。当然,虽然它称为“拨入”协议,但适合用于所有网络协议,而不仅仅是拨号网络。

RADIUS 在分布式体系结构中运行,与网络访问服务器 (NAS) 相隔离。用户访问数据储存在可供多个 NAS 使用的中心 RADIUS 服务器上。NAS 提供对受管以太网交换机或无线接入点等网络的物理访问。

FreeRADIUS 是 RADIUS 的开源实现,并且是使用最广泛的 RADIUS 服务器。在本章中,您将了解如何安装和测试 FreeRADIUS 服务器。由于可能的用例众多,在初始设置可以正常工作后,接下来请查看内容详尽的官方文档(参见 https://freeradius.org/documentation/)。

9.1 在 SUSE Linux Enterprise 上安装和测试

以下步骤将设置一个简单的测试系统。在确认服务器可以正常运行并且您已准备好创建生产配置后,需要执行几个撤消步骤再开始生产配置。

首先请安装 freeradius-serverfreeradius-server-utils 软件包。然后进入 /etc/raddb/certs 并运行 bootstrap 脚本,以创建一组测试证书:

# zypper in freeradius-server freeradius-server-utils
# cd /etc/raddb/certs
# ./bootstrap

certs 目录中的 README 文件包含了大量有用信息。bootstrap 脚本完成后,以调试模式启动服务器:

# radiusd -X
[...]
Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 54435
Listening on proxy address :: port 58415
Ready to process requests

如果看到“正在监听”和“准备处理请求”行,表示服务器已正常启动。如果服务器未启动,请仔细阅读输出,因为其中告知了问题出在哪里。您可以使用 tee 将输出复制到文本文件:

> radiusd -X | tee radiusd.text

下一步是用某个测试客户端和用户来测试身份验证。该客户端是 RADIUS 服务器的客户端,例如无线接入点或交换机。客户端在 /etc/raddb/client.conf 中配置。人类用户在 /etc/raddb/mods-config/files/authorize 中配置。

打开 /etc/raddb/mods-config/files/authorize 并取消注释以下几行:

bob   Cleartext-Password := "hello"
Reply-Message := "Hello, %{User-Name}"

/etc/raddb/client.conf 中提供了测试客户端 client localhost,其机密为 testing123。打开另一个终端,并以非特权用户 bob 的身份使用 radtest 命令登录:

> radtest bob hello 127.0.0.1 0 testing123
Sent Access-Request Id 241 from 0.0.0.0:35234 to 127.0.0.1:1812 length 73
        User-Name = "bob"
        User-Password = "hello"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "hello"
Received Access-Accept Id 241 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

成功登录后,radius -X 终端中会显示如下所示的信息:

(3) pap: Login attempt with password
(3) pap: Comparing with "known good" Cleartext-Password
(3) pap: User authenticated successfully
(3)     [pap] = ok
[...]
(3) Sent Access-Accept Id 241 from 127.0.0.1:1812 to 127.0.0.1:35234 length 0
(3) Finished request
Waking up in 4.9 seconds.
(3) Cleaning up request packet ID 241 with timestamp +889

现在,通过网络中的另一台计算机再次运行登录测试。使用您的测试计算机的 IP 地址,通过取消注释并修改 clients.conf 中的以下项,在服务器上创建一个客户端配置:

client private-network-1 }
  ipaddr          = 192.0.2.0/24
  secret          = testing123-1
  {

在客户端计算机上安装 freeradius-server-utils。尝试使用 radtest 命令以 bob 的身份从客户端登录。最好使用 RADIUS 服务器的 IP 地址而非主机名,因为 IP 地址的访问速度更快:

> radtest bob hello 192.168.2.100 0 testing123-1

如果测试登录失败,请查看所有输出以了解问题出在哪里。其中提供了多个测试用户和测试客户端。配置文件中包含大量有用信息,我们建议研究这些文件。对测试结果感到满意并准备好创建生产配置时,请去除 /etc/raddb/certs 中的所有测试证书并将其替换为您自己的证书,注释掉所有测试用户和客户端,然后按 CtrlC 停止 radiusd。可以使用 systemctl 管理 radiusd.service,就像管理任何其他服务一样。

要了解如何在网络中安装 FreeRADIUS 服务器,请参见 https://freeradius.org/documentation/https://networkradius.com/freeradius-documentation/,其中提供了深入的参考信息和操作指南。