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
脚本来创建一组测试证书:
#
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
如果您看到了 Listening
和 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
中的所有测试证书并将其替换为您自己的证书,注释掉所有测试用户和客户端,然后按 Ctrl–C 停止 radiusd
。可以使用 systemctl
管理 radiusd.service
,就像管理任何其他服务一样。
要了解如何在网络中安装 FreeRADIUS 服务器,请参见 https://freeradius.org/documentation/ 和 https://networkradius.com/freeradius-documentation/,其中提供了深入的参考信息和操作指南。