Linux

在雲伺服器上設置無密碼sudo可以嗎?

  • May 24, 2019

我喜歡通過密鑰訪問伺服器的想法,這樣我就不必每次ssh進入一個盒子時都輸入我的密碼,我什至鎖定了我的使用者(不是root)密碼(passwd -l username),所以沒有密鑰就不可能登錄。

但是,如果我需要輸入sudo命令密碼,所有這些都會中斷。所以我很想設置無密碼sudo以使事情符合無密碼登錄。

然而,我一直有一種直覺,它可能會以某種意想不到的方式適得其反,這似乎有點不安全。這種設置有什麼注意事項嗎?您會推薦/不推薦為伺服器上的使用者帳戶執行此操作嗎?

澄清

  1. 我在這裡談論的是sudo在互動式使用者會話中的使用,而不是用於服務或管理腳本
  2. 我說的是使用雲伺服器(所以我沒有對機器的物理本地訪問,只能遠端登錄)
  3. 我知道這sudo有一個超時,在此期間我不必重新輸入我的密碼。但我的演唱會並不是真的要浪費額外的時間來輸入密碼。我的想法是根本不必處理密碼,因為我假設:
  • 如果我必須完全記住它,它很可能太短而無法安全或重複使用
  • 如果我為我的遠端帳戶生成一個長且唯一的密碼,我將不得不將它儲存在某個地方(本地密碼管理器程序或云服務)並在每次我想使用時獲取它sudo。我希望我可以避免這種情況。

因此,對於這個問題,我想更好地了解一種可能的配置相對於其他配置的風險、注意事項和權衡。

跟進 1

所有答案都說無密碼sudo是不安全的,因為如果我的個人使用者帳戶受到威脅,它允許“輕鬆”提升權限。我明白那個。但另一方面,如果我使用密碼,我們會遇到密碼的所有經典風險(太短或通用的字元串,在不同的服務中重複等)。但是我想如果我禁用密碼身份驗證/etc/ssh/sshd_config以便您仍然必須擁有登錄密鑰,我可以使用更簡單的密碼只是為了sudo更容易輸入?這是一個有效的策略嗎?

跟進 2

如果我還有一個root通過 ssh 登錄的密鑰,如果有人可以訪問我的電腦並竊取我的密鑰(儘管他們仍然受到作業系統的密鑰環密碼的保護!),他們還不如直接訪問該root帳戶,繞過sudo路徑。root那麼訪問該帳戶的策略應該是什麼?

我喜歡通過密鑰訪問伺服器的想法,這樣我就不必每次 ssh 進入一個盒子時都輸入我的密碼,我什至鎖定了我的使用者(不是 root)密碼(passwd -l 使用者名),所以不可能無需密鑰登錄…您是否建議/不建議為伺服器上的使用者帳戶執行此操作?

您正在以錯誤的方式禁用基於密碼的登錄。不要鎖定使用者的帳戶,而是PasswordAuthentication no在您的/etc/ssh/sshd_config.

使用該設置,ssh 的密碼身份驗證被禁用,但您仍然可以為 sudo 使用密碼。

我建議在 sudo 中設置的唯一NOPASSWD一次是服務帳戶,其中程序需要能夠以程式方式通過 sudo 執行命令。在這些情況下,請確保您僅將帳戶需要執行的*特定命令明確列入白名單。*對於互動式帳戶,您應該始終啟用密碼。

回复您的後續問題:

但是我想如果我在 /etc/ssh/sshd_config 中禁用密碼身份驗證,以便您仍然必須擁有登錄密鑰,我可以為更容易輸入的 sudo 使用更簡單的密碼?這是一個有效的策略嗎?

對,那是正確的。我仍然建議使用相對強的本地帳戶密碼,但不要太強。~8 個字元,隨機生成就足夠了。

如果我還有一個通過 ssh 以 root 身份登錄的密鑰,如果有人可以訪問我的電腦並竊取我的密鑰(儘管他們仍然受到作業系統的密鑰環密碼的保護!),他們還不如直接訪問root 帳戶,繞過 sudo 路徑。

應該禁用通過 ssh 的根訪問。時期。設置PermitRootLogin no在您的sshd_config.

那麼訪問 root 帳戶的策略應該是什麼?

您應該始終能夠獲得對伺服器控制台的帶外訪問權限。一些 VPS 供應商確實提供此功能,專用硬體供應商也是如此。如果您的提供商未授予真正的控制台訪問權限(例如 EC2),您通常仍可以使用我在此答案中概述的流程恢復訪問權限。

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