用於伺服器管理的 root 登錄或 sudo 使用者?
我試圖了解直接與 root 進行 ssh 或在維護伺服器的上下文中創建輔助 sudo 使用者之間的技術論點/安全含義。為了澄清,我們談論的是由單個管理員擁有的伺服器。對於在機器上工作的多人來說,很明顯,每個真實的人都有唯一的使用者和細粒度的權限有審計跟踪的好處。
我的想法是,如果這是一個桌面站,這是有道理的,建議使用非 root 使用者進行日常工作,但在伺服器上,您通常登錄以維護它,並且 99% 的時間您的所有活動都需要 root權限。
那麼創建一個“代理”使用者是否有任何安全優勢,您無論如何都要 sudo 到 root,而不是直接提供對 root 的 ssh 訪問?
我能想到的唯一好處是通過默默無聞的安全性,即機器人通常會嘗試探測“root”使用者。但是從我的角度來看,如果sudoers的使用者被盜用了,就和盜用root使用者一樣,所以遊戲結束。
此外,大多數遠端管理框架、NAS 系統、管理程序都鼓勵使用 root 使用者進行 Web 登錄。
其他使用者已經提到了非常好的觀點。我想回顧一下我認為最重要的那些……
…為什麼要使用 sudo
- 如果您用於 root 登錄的 ssh 密鑰被洩露,您幾乎沒有機會正確地逃避這種情況。
- 記錄使用 sudo 的命令,這不僅適用於有多個管理員時的安全性,而且適用於某些攻擊者進入您的系統時。
- 您有非常精細的選項來調整每個使用者的權限,是通過
/etc/ssh/sshd_config
還是通過SUDOers文件。(不要使用其他編輯器visudo
!)- 即使您的預設 ssh 登錄受到損害:像 sudo 這樣的額外層確實會降低 root 權限的可訪問性。(我總是
Defaults targetpw
在我的台式機和伺服器上使用-。所以一個人必須知道兩個不同的密碼才能成為root使用者)最後一點:我個人為我的伺服器上的每項任務使用單獨的使用者(我是唯一的管理員):例如,一個使用者用於備份。它可以訪問要備份的文件和單獨的 ssh 訪問異地伺服器。我有一個監控使用者,他對日誌文件和監控 API 的訪問權限非常有限。僅舉幾個例子…
但對我個人而言,最重要的一點是我們都是人。**你會犯錯誤。**必須
sudo
在每個命令之前輸入,這可能會改變您的系統行為,至少會增加一個障礙,讓您過度思考您的命令。所以我強烈建議:使用 sudo 而不是 root 使用者
從技術角度來看:root使用者有兩種常用的使用方式。以 root 身份直接通過 ssh 登錄,或者通過 ssh 登錄並鍵入
sudo su
或su -
(…) 作為第一個命令。這兩種方式都不會讓我感到舒服。ssh root 登錄
- 獨立於是否打開 root 登錄:使用 ssh 密鑰文件是唯一安全的方法。不要使用沒有密鑰文件的密碼。(這裡是指南)
- 添加防火牆規則和 sshd 規則,例如
LoginGraceTime
和MaxAuthTries
以限制 BruteForce 攻擊。- 保留以 root 身份登錄的選項會增加一個安全漏洞。即使它不太可能利用該缺陷。(我更喜歡
PermitRootLogin
)- 從技術上講,如果您按照最佳實踐保護 root 登錄,這並不比日常 ssh 安全。
是
- 在我看來,以 root 身份登錄的唯一問題是您不必
sudo
在每個命令之前都鍵入,這使您更容易出錯