如何為 sudo 使用與 system-auth 不同的 kerberos 主體?
在我的組織中,在對 sudo 進行身份驗證時,我們需要使用與其他類型的身份驗證(例如登錄)不同的 kerberos 主體。例如,我的正常(登錄)主體可能被稱為
foobar@DOMAIN
,而我的 sudo 主體被稱為foobar/sudo@DOMAIN
。過去,我們通過建構自己的 sudo並在建構時設置--with-kerb5
和--enable-kerb5-instance=sudo
標誌來滿足此要求。這意味著我們的 sudo 版本直接掛鉤到 kerberos,根本不使用 PAM 堆棧。我們正在嘗試查看是否可以在不建構和分發我們自己的 sudo 建構的情況下滿足拆分主體的要求。我的問題是:這可能嗎?如果可以,怎麼做?
使用標準的 RHEL 6/7 sudo 包,我不能使用
--with-kerb5
build-time 選項;我必須使用 PAM 作為我的身份驗證堆棧。這意味著我必須使用pam_krb5
. 使用pam_krb5
,我注意到我可以/etc/krb5.conf
使用appdefaults/pam/mappings
配置選項將使用者名映射到主體名稱。這讓我走到了一半,因為它使我能夠將使用者名映射foobar
到foobar/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 並將其安裝在您的系統上而無需大驚小怪。