SELinux保護影子時判斷Linux賬戶是否被鎖定
我正在嘗試執行一個腳本來獲取 Linux 系統上每個鎖定帳戶的使用者名。該伺服器是帶有 SELinux 的 Gentoo Hardened 伺服器。我嘗試編寫一些 Python,它在 /shadow/passwd 中查找強制性的“!” 而不是密碼雜湊。
我本來打算用這個…
def get_users_blacklist(users): f = open('shadow.example', 'r') #f is for file blacklist = [] #obvious for l in f: #l is for line s = l.split(':') #s is for shadower for u in users: #u is for user if (u == s[0]): if (s[1] == "!"): blacklist.append(u) return blacklist
它需要一個使用者列表來檢查陰影中的密碼欄位是否為“!” (帳戶已禁用)然後它將它們添加到列表中。
但是,在我的伺服器上,由於 SELinux,腳本無法讀取
/etc/shadow
,並且使用它時出現“權限被拒絕”錯誤。我需要一些其他方法來確定有關使用者的這些資訊。Google混合了許多結果來鎖定使用者帳戶,我找不到檢查帳戶是否被鎖定的命令。
semodule
我嘗試使用“audit2allow”來允許 sysadm_r Python 腳本讀取 /etc/shadow,但在插入規則時出現“neverallow”錯誤。這實際上是相當困難和相當冒險的。我要做的是
users
自動禁止 sshd_config 組中的所有無密碼帳戶。使用“passwd -l user”停用帳戶的使用者仍然可以使用 SSH pubkey auth 登錄。我想把它應用到很多使用者的伺服器上,所以我寫了一個腳本。腳本:https ://pastebin.com/Z5T7GS4J
我認為應該有一些涉及 filecaps 的實用程序可以告訴我使用者密碼是否已被鎖定/從系統中刪除。我在Google上找不到它。對於我的解決方案,將 SELinux 置於許可模式不是一種選擇,因為自動化和缺乏集群。
有點像黑客,但它可能對你有用……
#!/bin/bash unset VISUAL export EDITOR=cat vipw -s >mybackupshadow.out
然後針對 mybackupshadow.out 執行您的腳本,完成後將其刪除,當然。
這假定您具有 root 訪問權限。我沒有在 SELinux 上嘗試過,因為我們不使用它,所以不確定 SELinux 對 vipw 有什麼影響。
您可以在 python 中使用這一行程式碼:
>>> blacklist = [ x.split(":")[0] for x in open("/tmp/shadow", "r") if x.split(":")[1] == '!'] >>> print blacklist ['lxd', 'monitoring-agent'] >>>