在 CentOS 7.2.1511 中停用 root 登入

在 CentOS 7.2.1511 中停用 root 登入

據稱,如果您以非 root 身分登入並 write sudo passwd -d root,root 登入將被停用,這意味著您必須以另一個使用者身分登入並使用su切換到 root (或只是堅持使用sudo)。

然而,當我嘗試這樣做時,它並沒有禁用root登錄,而只是刪除了對密碼的要求,本質上使任何人都能夠訪問我的電腦上的root(很壞)。

告訴我使用的書sudo passwd -d root是為CentOS 6.5寫的。我的版本是7.2。這是最近的改變還是我誤解了什麼?

答案1

在本機 PC 上限制 root 登入是沒有意義的,因為本機使用者始終可以以 root 權限以單一使用者模式載入系統。如果您需要透過 ssh 阻止 root 登入 - 可以在 /etc/ssh/sshd_config 中新增以下內容來完成 PermitRootLogin no

答案2

阻止 root 登入最簡單的方法是破壞/etc/shadow.正常的線條/etc/shadow看起來像這樣:陰影線

  1. 使用者名稱:這是您的登入名稱。
  2. 密碼:這是您的加密密碼。密碼長度應至少為 6-8 個字符,包括特殊字符/數字等。
  3. 上次密碼變更 (lastchanged):自 1970 年 1 月 1 日以來上次變更密碼的天數
  4. 最小值:密碼變更之間所需的最短天數,即允許使用者變更密碼之前剩餘的天數
  5. 最大值:密碼有效的最大天數(在使用者被迫更改密碼之後)
  6. 警告:密碼到期前警告使用者必須更改其密碼的天數
  7. Inactive :密碼過期後該帳號被停用的天數
  8. 過期:自 1970 年 1 月 1 日起該帳戶被停用的天數,即指定不再使用登入名稱的絕對日期。

引用自這裡)您可以添加一個! (感嘆號)不會從 root 行中密碼部分的雜湊函數生成/etc/shadow,這會阻止使用所有可能的密碼登入。既然你已經取消了 root 的密碼登入方法,那麼就沒有人可以從任何地方以 root 身分登入了使用密碼。 (不過可能有其他登入方式)

更安全的方法是透過usermod實用程式: sudo usermod -L root 這可以防止您把事情搞砸。詳細usermod用法請參閱usermod(8)

當你想用 root 登入時,刪除它!一切都會好起來的。

答案3

雖然前面的答案提到了我關於使用usermod -L或阻止 rootpasswd -l並有效地將密碼欄位設為 ! 的評論,但它們並沒有解釋您的困境。

我一直在想為什麼書上說刪除可以passwd -d阻止訪問。當你將密碼設定為空白時,加上-d,你將阻止所有非root使用者存取root帳戶遠端,因為非 root 使用者無法移動到另一個沒有密碼的帳號。由於現在 ssh 預設也會阻止 root,因此從遠端和非 root 使用者的角度來看,root 帳號將會被有效阻止。 (例如,以 root 身分工作的唯一方法是 sudo)

儘管如此,本書應該提到本機控制台中的任何使用者都可以以 root 身分登入而無需密碼。雖然現在大多數主機對於虛擬環境中的普通用戶來說是遙不可及的,但有一種控制 root 密碼的方法總是明智的。

更明智的策略是使用usermod -L或阻止 root passwd -L,但不是在建立明智的使用者策略並對其進行測試之前進行。

另一種方法是建立一個非常安全的 root 密碼,定期更改,無人知道(makepasswd例如隨機生成並將其保存在信封中),以應對緊急情況(例如單啟動,或者當有人錯誤地弄亂了sudo時)這樣,root 密碼就可以派上用場了。

相關內容