無法更改root密碼的root訪問權限?
我們在伺服器上遇到了一個小問題。我們希望一些使用者應該能夠做例如
sudo
並成為root,但限制使用者不能更改root密碼。也就是說,保證無論其他使用者做什麼,我們仍然可以登錄到該伺服器並成為 root。那可能嗎?
我們希望一些使用者應該能夠做例如
sudo
並成為root,好吧,這就是 sudo 旨在解決的問題,所以這部分很容易。
但有使用者不能更改root密碼的限制。
正如SHW在評論中指出的那樣,您可以將 sudo 配置為僅允許某些使用者以 root 身份執行某些操作。也就是說,您可以允許 user1 執行
sudo services apache2 restart
,允許 user2 執行sudo reboot
但不執行其他操作,同時允許僱用的系統管理員user3
執行sudo -i
. 有關於如何設置 sudo 這樣的操作指南,或者您可以在此處搜尋(或詢問)。這是一個可以解決的問題。但是,已被授予訪問
sudo -i
或sudo
進入 shell(sudo bash
例如)的能力的使用者可以做任何事情。那是因為當 sudo 啟動 shell 時,sudo 本身已經不存在了。它提供不同使用者(通常是 root)的安全上下文,但對執行的應用程序的作用沒有發言權。如果該應用程序依次啟動passwd root
,則 sudo 無能為力。請注意,這也可以通過其他應用程序來完成;例如,許多更高級的編輯器提供了通過 shell 執行命令的工具,shell 將使用該編輯器程序(即 root)的有效 uid 執行。也就是說,保證無論其他使用者做什麼,我們仍然可以登錄到該伺服器並成為 root。
對不起; 如果您的意思確實是“確保我們能夠登錄並使用系統,無論具有 root 訪問權限的人對它做什麼”,那(出於所有意圖和目的)都無法做到。一個快速的“sudo rm /etc/passwd”或“sudo chmod -x /bin/bash”(或任何 shell root 使用),無論如何你都已經被淹沒了。“相當多的軟管”意思是“你需要從備份中恢復,並希望他們沒有做任何比手指滑更糟糕的事情”。您可以採取一些措施來降低意外事故導致系統無法使用的風險,但您無法防止惡意導致非常嚴重的問題,直至需要從頭開始或至少從已知的情況下重建系統良好的備份。
通過向使用者提供系統上不受限制的 root 訪問權限,您相信該使用者(包括他們可能選擇執行的任何軟體,甚至像 ls 這樣的普通軟體)沒有惡意,並且不會意外搞砸。這就是root訪問的本質。
通過例如 sudo 進行有限的 root 訪問會更好一些,但您仍然必須小心不要打開任何攻擊向量。並且通過 root 訪問,有很多可能的攻擊向量用於權限提升攻擊。
如果您無法以 root 身份所需的訪問級別信任他們,您將需要非常嚴格的 sudo 配置,或者根本不通過任何方式(sudo 或其他方式)授予相關使用者的 root 訪問權限。
這實際上是不可能的。首先,如果您授予他們成為 root的權力,那麼您將無法阻止他們做任何事情。在您的案例中,
sudo
應該用於授予您的使用者一些 root 權限,同時限制其他使用者而不讓他們成為 root。在您的場景中,您需要限制對
su
andpasswd
命令的訪問並開放對幾乎所有其他內容的訪問。問題是,您無法阻止使用者直接編輯/etc/shadow
(或/etc/sudoers
就此而言)並輸入替換 root 密碼來劫持 root。這只是可能的最直接的“攻擊”場景。除了一兩個命令之外,具有不受限制的權力的 Sudoer 可以繞過限制來劫持完全的 root 訪問權限。正如SHW 在評論中所建議的那樣,唯一的解決方案是使用
sudo
授予您的使用者訪問受限命令集的權限。更新
如果您使用 Kerberos 票證進行身份驗證,則可能有一種方法可以完成此操作。閱讀本文件,解釋文件的使用
.k5login
。我引用相關部分:
假設使用者 alice 在她的主目錄中有一個 .k5login 文件,其中包含以下行:
bob@FOOBAR.ORG
這將允許 bob 使用 Kerberos 網路應用程序,例如 ssh(1),使用 bob 的 Kerberos 票證來訪問 alice 的帳戶。
…
請注意,由於 bob 為他自己的主體保留了 Kerberos 票證
bob@FOOBAR.ORG
,因此他將沒有任何需要 alice 票證的特權,例如對任何站點主機的 root 訪問權限,或更改 alice 密碼的能力。不過,我可能弄錯了。我仍在閱讀文件,還沒有親自嘗試過 Kerberos。