Ubuntu

簡單半徑認證

  • May 8, 2015

在通過 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 進行身份驗證?我想讓它盡可能簡單。

libpam-radius-auth應該完全按照您的需要工作。我以這種身份使用它沒有問題。你只需要

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

但是,如果他們不是本地使用者,則無法進行身份驗證。

是的,這是真的。使用者必須首先存在。

聽起來您正在處理與身份驗證不同的問題。請記住這兩個子系統之間的區別:

  • NSS(名稱服務切換):實現使用者(和組,和主機等)的數據庫。這支持查詢以列出使用者並獲取他們的屬性,例如名稱、uid、主目錄和 shell。最常見的 NSS 後端是“files”,它從 獲取使用者資訊/etc/passwd,但您可以使用許多其他後端,從 DB 文件、LDAP 等獲取資訊。
  • PAM(可插入身份驗證模組):實現身份驗證(以及記帳和密碼更改)。該系統使用可插入模組來檢查使用者的身份驗證並允許或禁止登錄。最常見的 PAM 後端是“文件”,它要求使用者輸入一個簡單的密碼並根據雜湊值檢查它,/etc/shadow但您可以使用許多其他查詢服務的後端,如 RADIUS、一次性密碼系統、Kerberos 等。

聽起來您正在使用 RADIUS 進行身份驗證 (PAM),但您還想為使用者數據庫 (NSS) 本身使用基於網路的東西。這是一個完全不同的問題,與身份驗證無關。

您不能將 RADIUS 用作數據庫後端,因為 RADIUS 協議不提供數據庫功能。也就是說,它不允許您向使用者查詢 uid、主目錄和 shell 等詳細資訊,更不用說列舉數據庫中的使用者了。因此不存在 RADIUS NSS 後端(假設libnss-radius)。

對於基於網路的使用者數據庫,您可以使用 LDAP,或者 MySQL 或 Postgres。LDAP 可能是最好的建議。

引用自:https://unix.stackexchange.com/questions/202233