简单的 Radius 身份验证

简单的 Radius 身份验证

我正在考虑在通过 SSH 访问时使用 Radius 作为一些 Ubuntu 服务器的身份验证服务器。我尝试过使用 libpam-radius-auth 但它不能完全按照我的需要工作。

我的目标是拥有一个类似于使用 TACACS/Radius 作为身份验证的 Cisco 设备的解决方案。但是,如果他们不是本地用户,则无法进行身份验证。

sshd[3200]:来自 198.18.18.22 的用户 testacc 无效

sshd[3200]:input_userauth_request:无效的用户 testacc [preauth]

我发现的解决方案是使用 NFS 挂载主文件夹和/或设置 LDAP 服务。有没有更简单的方法让用户通过 SSH 登录服务器,通过 Radius 进行身份验证?我想让它尽可能简单。

答案1

libpam-radius-auth应该完全按照您的需要工作。我以这种身份使用它没有任何问题。你只需要

  • /etc/pam.d可能在某个地方配置它common-auth
  • 配置 RADIUS 服务器/etc/raddb/server

但是,如果他们不是本地用户,则无法进行身份验证。

是的,这是真的。用户首先必须存在。

听起来您正在处理与此处身份验证不同的问题。请记住这两个子系统之间的区别:

  • 国家安全局(名称服务开关):实现用户(以及组、主机等)的数据库。它支持查询列出用户并获取其属性,例如名称、uid、主目录和 shell。最常见的 NSS 后端是“文件”,它从 获取用户信息/etc/passwd,但您可以使用许多其他后端从 DB 文件、LDAP 等获取信息。
  • 聚丙烯酰胺(可插入身份验证模块):实现身份验证(以及记帐和密码更改)。该系统使用可插入模块来检查用户的身份验证并允许或禁止登录。最常见的 PAM 后端是“文件”,它要求用户提供一个简单的密码,并根据哈希值进行检查,/etc/shadow但您可以使用许多其他后端来查询 RADIUS、一次性密码系统、Kerberos 等服务。

听起来您正在使用 RADIUS 进行身份验证 (PAM),但您还想对用户数据库 (NSS) 本身使用基于网络的内容。这是一个完全不同的问题,与身份验证无关。

您不能使用 RADIUS 作为数据库后端,因为 RADIUS 协议不提供数据库功能。也就是说,它不允许您查询用户的 uid、主目录和 shell 等详细信息,更不用说枚举数据库中的用户了。因此,不存在 RADIUS NSS 后端(假设libnss-radius)。

对于基于网络的用户数据库,您可以使用 LDAP、MySQL 或 Postgres。 LDAP 可能是最好的推荐。

相关内容