配置 FreeRADIUS 来记录用户命令

配置 FreeRADIUS 来记录用户命令

我需要能够配置 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 模块的更多确认选项。

相关内容