SSH:su root 還是 sudo?
什麼是更好的選擇:使用 su 切換到 root 或啟用 sudo?如果不使用 sudo,入侵者將需要知道允許 ssh 的使用者的密碼(或密鑰),然後還需要知道 root 密碼。使用 sudo 非特權使用者的密碼就足夠了。
我設置了一個新的網路伺服器(Debian 8.2),我想知道最好的做法是通過 SSH 安全地連接到它,並且我仍然可以輕鬆地使用它。
到目前為止,我已經在 SSH 上禁用了 PermitRootLogin 並切換了埠。iptables 也可以阻止我不需要的所有內容。現在我必須使用非特權使用者登錄,然後切換
su root
但是以 root 身份工作並不是我聽說過的最好的事情……所以我考慮只授予我的非特權使用者 sudo 權限。
再一次,入侵者只需要知道一個密碼,因為 sudo 要求的是目前使用者密碼而不是 root 密碼。因此,我通過在 SSH 中禁用 PermitRootLogin 來使攻擊者更難的計劃不再奏效。
那麼:su root 還是 sudo?
到目前為止,我已經在 SSH 上禁用了 PermitRootLogin 並切換了埠。
我不喜歡在非標準埠上執行服務;您使自己和他人的互操作性變得更加困難,而沒有真正的收益。使用合適的密碼(或更好的密碼),隨機 SSH 掃描無論如何都沒有成功的機會,並且有針對性的攻擊不會由不同的埠分階段進行。
但是以 root 身份工作並不是我聽說過的最好的事情……所以我考慮只授予我的非特權使用者 sudo 權限。
這是個人喜好;選擇這兩種方法都有正當理由。
就個人而言,我更喜歡避免使用 sudo,主要是因為它比 su 複雜得多。而且這種複雜性帶來了更高的安全風險,無論是在 sudo 的配置中,還是在 sudo 本身(有幾個安全建議)。不過,sudo 在允許非特權使用者在沒有密碼的情況下執行非常特定的命令方面非常有用。
也就是說,切換到 root 並以您描述的方式使用 sudo 幾乎可以互換,除了一些事情:
- sudo 可以記錄通過它執行的每個命令。使用 su 時,您必須依靠 root 的 shell 歷史記錄進行日誌記錄。(攻擊者可以輕鬆地繞過這個,例如通過簡單地做
sudo su
)- 使用 sudo,您通常需要您的使用者密碼,使用 su 您需要 root 的密碼。
- 使用 sudo 可以更輕鬆地交錯特權和非特權命令。
但是,我通常會發現自己要麼執行需要大量 root 的管理任務,要麼執行不需要 root 的非管理任務。為了避免混淆,我給 shell 提示著色以區分 root(紅色)和 user(藍色)。
- 預設情況下,sudo 僅限於某些帳戶。
對於 su,可以通過使用
pam_wheel.so
將 su-to-root 限制為某個組的成員來實現類似的事情。(addgroup --system wheel
,adduser YOU wheel
, 取消註釋 pam_wheel 中的行/etc/pam.d/su
)我應該通過密碼禁用 SSH 身份驗證並只使用密鑰嗎?如果我不在自己的筆記型電腦上,那麼我將很難訪問伺服器。
是的,這可能是最大的安全收益之一。
您可以在多台(受信任的)機器上授予對您帳戶的 SSH 密鑰的訪問權限。
如果機器不受信任,您應該考慮不要從它們登錄;他們可以注入命令或讓鍵盤記錄器嗅探您的密碼。
一些額外的提示:
- 考慮將 SSH 訪問限制為需要 SSH 訪問的使用者帳戶。
我喜歡這樣做
addgroup --system allowssh
,然後在/etc/ssh/sshd_config
設置PubkeyAuthentication no
中添加一個Match Group allowssh\n PubkeyAuthentication yes
節。我確信這也可以通過 PAM 完成,使用類似
auth required pam_succeed_if.so quiet_success user ingroup allowssh
in 的東西/etc/pam.d/sshd
。
- 考慮安裝一個報告異常的日誌檢查器。要減少郵件量,您可以考慮郵寄成功的登錄嘗試,而不是不成功的登錄嘗試。