8 设置 FreeRADIUS 服务器 #
RADIUS(远程身份验证拨入用户服务)协议一直以来都是用于管理网络访问的标准服务。它为特大型企业(例如因特网服务提供商和手机网络提供商)执行身份验证、授权和统计 (AAA) 协议,在小型网络中应用也很广泛。它对用户和设备进行身份验证,授权这些用户和设备使用特定的网络服务,并跟踪服务的使用以进行计费和审计。您不需要使用所有三个 AAA 协议,而只需使用所需的协议。例如,您可能不需要统计功能,而只需要客户端身份验证功能,或者,您可能只需要统计功能,客户端授权交由其他某个系统来管理。
此协议极其高效,使用普通配置的硬件就能管理数千个请求。当然,虽然它称为“拨入”协议,但适合用于所有网络协议,而不仅仅是拨号网络。
RADIUS 在分布式体系结构中运行,与网络访问服务器 (NAS) 相隔离。用户访问数据储存在可供多个 NAS 使用的中心 RADIUS 服务器上。NAS 提供对受管以太网交换机或无线接入点等网络的物理访问。
FreeRADIUS 是 RADIUS 的开源实现,并且是使用最广泛的 RADIUS 服务器。在本章中,您将了解如何安装和测试 FreeRADIUS 服务器。由于可能的用例众多,在初始设置可以正常工作后,接下来请查看内容详尽的官方文档(参见 https://freeradius.org/documentation/)。
8.1 在 SUSE Linux Enterprise 上安装和测试 #
以下步骤将设置一个简单的测试系统。在确认服务器可以正常运行并且您已准备好创建生产配置后,需要执行几个撤消步骤再开始生产配置。
首先请安装 freeradius-server
和 freeradius-server-utils
软件包。然后进入 /etc/raddb/certs
并运行 bootstrap
脚本,以创建一组测试证书:
root #
zypper in freeradius-serverroot #
cd /etc/raddb/certsroot #
./bootstrap
certs
目录中的 README 文件包含了大量有用信息。bootstrap
脚本完成后,以调试模式启动服务器:
root #
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
将输出复制到文本文件:
tux >
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
命令登录:
tux >
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
现在,通过网络中的另一台计算机再次运行登录测试。通过取消注释并修改 clients.conf
中的以下项,在服务器上创建一个客户端配置:
client private-network-1 } ipaddr = 192.0.2.0/24 secret = testing123-1 {
输入测试客户端计算机的 IP 地址。在客户端计算机上安装 freeradius-server-utils
,它可以提供一些有用的测试命令。尝试使用 radtest
命令以 bob 的身份从客户端登录。最好使用 RADIUS 服务器的 IP 地址而非主机名,因为 IP 地址的访问速度更快:
tux >
radtest bob hello 192.168.2.100 0 testing123-1
如果测试登录失败,请查看所有输出以了解问题出在哪里。其中提供了多个测试用户和测试客户端。配置文件中包含大量有用信息,我们建议研究这些文件。对测试结果感到满意并准备好创建生产配置时,请去除 /etc/raddb/certs
中的所有测试证书并将其替换为您自己的证书,注释掉所有测试用户和客户端,然后按 Ctrl–c 停止 radiusd
。可以使用 systemctl
管理 radiusd.service
,就像管理任何其他服务一样。
要了解如何在网络中安装 FreeRADIUS 服务器,请参见 https://freeradius.org/documentation/ 和 https://networkradius.com/freeradius-documentation/,其中提供了深入的参考信息和操作指南。