Rhel

如何為 sudo 使用與 system-auth 不同的 kerberos 主體?

  • July 28, 2015

在我的組織中,在對 sudo 進行身份驗證時,我們需要使用與其他類型的身份驗證(例如登錄)不同的 kerberos 主體。例如,我的正常(登錄)主體可能被稱為foobar@DOMAIN,而我的 sudo 主體被​​稱為foobar/sudo@DOMAIN。過去,我們通過建構自己的 sudo並在建構時設置--with-kerb5--enable-kerb5-instance=sudo標誌來滿足此要求。這意味著我們的 sudo 版本直接掛鉤到 kerberos,根本不使用 PAM 堆棧。

我們正在嘗試查看是否可以在不建構和分發我們自己的 sudo 建構的情況下滿足拆分主體的要求。我的問題是:這可能嗎?如果可以,怎麼做?

使用標準的 RHEL 6/7 sudo 包,我不能使用--with-kerb5build-time 選項;我必須使用 PAM 作為我的身份驗證堆棧。這意味著我必須使用pam_krb5. 使用pam_krb5,我注意到我可以/etc/krb5.conf使用appdefaults/pam/mappings配置選項將使用者名映射到主體名稱。這讓我走到了一半,因為它使我能夠將使用者名映射foobarfoobar/sudo. 但是,據我所知,沒有辦法為每個應用程序設置映射(kerberos 將 PAM 視為單個應用程序,無論哪個應用程序呼叫 PAM 堆棧),這意味著映射適用於任何使用pam_krb5在他們的 PAM 配置中。因此,我可以讓系統對 sudo 和登錄都使用 sudo 主體,或者對兩者都使用登錄主體,但我無法讓系統對 sudo 使用 sudo 主體,對登錄使用登錄主體。

有任何想法嗎?還是我堅持必須建構和分發自定義 sudo?

這不是一個完整的答案,但我想知道您是否可以使用 SSSD 完成此操作。

pam_sss模組允許您將服務限制為僅考慮/etc/sssd/sssd.conf. 來自pam_sss(8)

允許管理員限制允許特定 PAM 服務對其進行身份驗證的域。格式是逗號分隔的 SSSD 域名列表,在 sssd.conf 文件中指定。

理論上,您可以有兩個域都指向同一個上游身份驗證環境,但使用不同的規則將使用者映射到主體。

不幸的是,SSSD 似乎只支持使用者名到主體名稱的靜態映射,這不能很好地擴展。

更新

看起來該pam_krb5模組的更新版本也支持一個完全符合您要求的alt_auth_map選項。也就是說,在 中,我可以這樣做:/etc/pam.d/sudo

auth    required    pam_krb5.so alt_auth_map=%s/sudo only_alt_auth

…現在sudo將始終使用<username>/sudo主體進行身份驗證。

此版本pam-krb5隨 Ubuntu 一起分發,但大概可以建構一個 rpm 並將其安裝在您的系統上而無需大驚小怪。

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