我需要能够配置 radius 服务器来记录用户的活动,例如用户登录客户端设备时运行的命令。应在 /var/log/freeradius/radius.log 文件中记录这些条目。
答案1
我不相信 Radius 能够做到这一点,这实际上并不是它的设计目的。
你可能正在寻找的是日志如果您希望所有日志都集中存储,请设置 systemd(或您正在使用的任何记录器)将日志发送到中央远程主机(可以是您正在运行 Radius 服务器的同一台机器)。
答案2
此功能从未在标准中定义,因此因供应商而异。如果 NAS(网络访问服务器)支持此功能,则 NAS 会将用户输入的命令复制到 VSA(供应商特定属性)中。然后,NAS 会将该属性连同Accounting-Request/Interim-Update
用于识别 NAS 和用户的属性一起发送到 RADIUS 服务器。您可能需要在 NAS 的配置中明确启用通过 RADIUS 的命令记录,因为它几乎从未默认启用。
对于记录命令,最好使用linelog
模块。您还需要进行条件检查,以便仅在数据包中存在命令属性时才调用 linelog Accounting-Request/Interim-Update
,因为这些命令记录数据包将与正常的会计流混合在一起。
我在这里使用了HP-Command-String
示例属性,但实际属性会因供应商而异。您应该检查传入的Accounting-Request
数据包,看看哪个 VSA 包含用户发出的命令。
将以下行添加到您的 FreeRADIUS 配置文件中,并确保mods-available/linelog
链接到mods-enabled/linelog
。
站点可用/默认
accounting {
if (&HP-Command-String) {
log_commands
}
}
mods-可用/linelog
linelog log_commands {
format = "user=%{User-Name}, command=%{HP-Command-String}"
filename = ${logdir}/radius.log
}
重新启动 freeradius 后,您应该会看到附加到/var/log/radius/radius.log
或/var/log/freeradius/radius.log
取决于您的发行版的命令。
看mods-可用/linelog以获取 linelog 模块的更多确认选项。