Linux

使用 pam_access 時檢查帳戶是否允許

  • March 17, 2015

我正在使用 pam_access 和 /etc/security/access.conf 來限制誰可以登錄到我的 Rhel 6.5 主機。

我有一個具有不同使用者群的 LDAP 伺服器,而安全人員想要一個誰可以登錄到什麼的列表。

我需要一種可靠的方法來檢查一個帳戶是否能夠登錄到主機。getent passwd、id、finger、groups 和我嘗試過的所有其他工具都返回相同的輸出,如果帳戶被限制登錄或不登錄。passwd -S 似乎根本不適用於 LDAP 帳戶。

有沒有辦法檢查給定帳戶是否具有登錄權限?在 Solaris 上,如果使用者或網路組不在 /etc/passwd 中,則沒有任何工具可以辨識受限帳戶,但在 Linux 上似乎完全相反。

謝謝!

編輯:這是 /etc/pam.d/system-auth 的帳戶部分: account required pam_access.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_krb5.so account required pam_permit.so

我的 puppet 配置僅執行以下可能更改 pam 設置的操作。 /usr/sbin/authconfig --enablemkhomedir --updateall /usr/sbin/authconfig --enablekrb5 --updateall /usr/sbin/authconfig --enablepamaccess --updateall /usr/sbin/authconfig --enablesssd --updateall /usr/sbin/authconfig --nisdomain=domainname.corp --updateall 我的 /etc/security/access.conf `+ : root : ALL …. all system accounts

  • : @ngunix_admins : ALL
  • : ALL : ALL我的網路組getent netgroup ngunix_admins ngunix_admins ( ,danw,domainname.corp)我在 ngunix_admins 網路組中,所以這是有道理的% id danw uid=355400001(danw) gid=355400001(danw) groups=355400001(danw) % getent passwd danw danw::355400001:355400001:unixadmin:/home/danw:/bin/bash但是這個其他使用者不在 ngunix_admins 網路組中,所以我需要一些方法來確定他無法登錄id testuser uid=355400003(testuser) gid=355400003(testuser) groups=355400003(testuser) getent passwd testuser testuser::355400003:355400003:first last:/home/testuser:/bin/bash` 第二次編輯:澄清我’不是調整登錄權限,而是嘗試報告訪問權限以供審核。

我最近不得不執行一個性質非常相似的 PCI 審計(誰可以登錄這些系統以及他們的權限是什麼),所以對你在這裡想要完成的事情有一個很好的感覺。該方法因環境而異,具體取決於 PAM 和 LDAP 的配置方式。

以下因素似乎適用於您的環境:

  • 列舉passwd數據庫 ( getent passwd) 包含不應被允許訪問系統的使用者。
  • shadow必須考慮限制。有時,無論如何。您已broken_shadow啟用。
  • 必須考慮 PAM 限制。(包括pam_access限制,這大大降低了找到一個無需實際呼叫就可以做到這一點的一體化工具的可能性pam_acct_mgmt
  • 對於擁有帳戶的使用者,必須考慮 KRB5 限制。

如果沒有測試 PAM 堆棧的實用程序,我會將這項任務的複雜性評為“高且耗時”。pamtester看起來它會完成這項工作。您需要遍歷每個使用者getent passwd並執行身份驗證後記帳檢查:

pamtester sshd $user acct_mgmt

這假設您只需要通過 測試訪問ssh。如果您需要進行更多測試,請執行此操作。查看/etc/pam.d您已配置的服務並審核任何必要的服務。

(我對最初的回答表示歉意,我最後的努力更側重於 sudo 審計而不是 PAM 審計,而且我過於“手工做所有事情”的心態。)

引用自:https://serverfault.com/questions/676239