Ubuntu

無法更改root密碼的root訪問權限?

  • July 28, 2017

我們在伺服器上遇到了一個小問題。我們希望一些使用者應該能夠做例如sudo並成為root,但限制使用者不能更改root密碼。也就是說,保證無論其他使用者做什麼,我們仍然可以登錄到該伺服器並成為 root。

那可能嗎?

我們希望一些使用者應該能夠做例如sudo並成為root,

好吧,這就是 sudo 旨在解決的問題,所以這部分很容易。

但有使用者不能更改root密碼的限制。

正如SHW在評論中指出的那樣,您可以將 sudo 配置為僅允許某些使用者以 root 身份執行某些操作。也就是說,您可以允許 user1 執行sudo services apache2 restart,允許 user2 執行sudo reboot但不執行其他操作,同時允許僱用的系統管理員user3執行sudo -i. 有關於如何設置 sudo 這樣的操作指南,或者您可以在此處搜尋(或詢問)。這是一個可以解決的問題。

但是,已被授予訪問sudo -isudo進入 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

在您的場景中,您需要限制對suandpasswd命令的訪問並開放對幾乎所有其他內容的訪問。問題是,您無法阻止使用者直接編輯/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。

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