如何(以及為什麼)在 Linux 上通過 SSH 禁用 root 登錄

已發表: 2022-09-29
顯示 bash 提示符的 Linux 筆記本電腦
fatmawati achmad zaenuri/Shutterstock.com

以 Linux root 用戶身份登錄是不好的做法。 通過 SSH 連接以 root 身份登錄更糟糕。 我們告訴您原因,並向您展示如何預防。

兩刃劍

您需要有權擁有和管理操作系統中那些對於普通用戶來說太重要或太敏感而無法處理的部分的人。 這就是 root 的用武之地。root 是 Unix 和 Linux 操作系統的全能超級用戶。

與所有帳戶一樣,root 用戶帳戶受密碼保護。 如果沒有 root 用戶的密碼,其他任何人都無法訪問該帳戶。 這意味著其他任何人都不能使用 root 的特權和權力。 另一方面,惡意用戶和 root 權限之間的唯一防禦就是密碼。 當然,密碼可以被猜測、推斷、發現寫在某處,或暴力破解。

如果惡意攻擊者發現了 root 的密碼,他們就可以登錄並對整個系統做任何他們喜歡的事情。 使用 root 的提升權限,他們可以做的事情沒有任何限制。 就好像 root 用戶在沒有註銷的情況下離開了終端,允許機會主義地訪問他們的帳戶。

為什麼你不應該以 root 身份登錄你的 Linux 系統
相關為什麼你不應該以 root 身份登錄你的 Linux 系統

由於這些風險,許多現代 Linux 發行版不允許 root 在本地登錄計算機,更不用說通過 SSH。 root 用戶存在,但沒有為他們設置密碼。 然而,必須有人能夠管理系統。 該難題的解決方案是sudo命令。

sudo允許指定用戶在他們自己的用戶帳戶中臨時使用 root 級別的權限。 您需要進行身份驗證才能使用sudo ,您可以通過輸入自己的密碼來執行此操作。 這使您可以臨時訪問 root 的功能。

當您關閉使用它們的終端窗口時,您的 root 權限就會消失。如果您讓終端窗口保持打開狀態,它們將超時,自動將您返回到常規用戶狀態。 這提供了另一種類型的保護。 它保護你免受自己的傷害。

如果您習慣性地以 root 而不是普通帳戶登錄,那麼您在命令行上犯的任何錯誤都可能是災難性的。 必須使用sudo來執行管理意味著您更有可能專注並小心您鍵入的內容。

允許通過 SSH 進行 root 登錄會增加風險,因為攻擊者不必在本地; 他們可以嘗試遠程暴力破解您的系統。

相關:如何在 Linux 上查看 sudo 命令用法

root 用戶和 SSH 訪問

當您為其他人管理系統時,您更有可能遇到此問題。 有人可能已經決定設置一個 root 密碼以便他們可以登錄。需要更改其他設置以允許 root 通過 SSH 登錄。

這件事不會偶然發生。 但它可以由不了解相關風險的人來完成。 如果您接管了處於該狀態的計算機的管理,您需要告知所有者為什麼這是一個壞主意,然後將系統恢復到安全工作狀態。 如果是以前的系統管理員配置的,業主可能不知道。

這是運行 Fedora 的計算機上的用戶,以 Ubuntu 計算機的 root 用戶身份與 Ubuntu 計算機建立 SSH 連接。

 ssh [email protected] 

使用 SSH 連接到遠程計算機的 root 用戶

Ubuntu 計算機允許 root 用戶通過 SSH 登錄。 在 Ubuntu 計算機上,我們可以看到 root 用戶正在進行實時連接。

使用 who 命令列出已登錄用戶

我們看不到誰在使用該會話。 我們不知道SSH連接另一端的人是root用戶還是設法獲得root密碼的人。

禁用 root 的 SSH 訪問

要禁用 root 用戶的 SSH 訪問,我們需要更改 SSH 配置文件。 它位於“/etc/ssh/sshd_config”。 我們需要使用sudo對其進行更改。

 sudo gedit /etc/ssh/sshd_config 

編輯 sshd-config 文件

滾動文件或搜索字符串“PermitRootLogin”。

將其設置為“否”或通過將哈希“ # ”作為該行的第一個字符來註釋該行。 保存您的更改。

我們需要重新啟動 SSH 守護程序,以便我們的更改生效。

 sudo systemctl 重啟 ssh 

重新啟動 sshd 守護進程

如果您還想阻止本地登錄,請禁用 root 的密碼。 我們採用帶和大括號的方法並同時使用-l (鎖定)和-d (刪除密碼)選項。

 須藤密碼根 -ld 

鎖定 root 帳戶並刪除 root 密碼

這將鎖定帳戶並將帳戶密碼刪除到交易中。 即使 root 用戶實際坐在您的計算機旁,他們也無法登錄。

允許 root SSH 訪問的更安全方法

有時您會遇到管理人員對通過 SSH 刪除 root 訪問權限的抵制。 如果他們真的不聽,您可能會發現自己處於必須恢復它的位置。 如果是這種情況,您應該能夠以一種降低風險的方式進行妥協,並且仍然允許 root 用戶進行遠程登錄。

如何從 Linux Shell 創建和安裝 SSH 密鑰
相關如何從 Linux Shell 創建和安裝 SSH 密鑰

使用 SSH 密鑰通過 SSH 建立連接比使用密碼安全得多。 因為不涉及密碼,所以它們不能被暴力破解、猜測或以其他方式發現。

在鎖定本地 root 帳戶之前,請在遠程計算機上設置 SSH 密鑰,以便 root 用戶可以連接到本地計算機。 然後繼續刪除他們的密碼並鎖定他們的本地帳戶。

我們還需要再次編輯“sshd_config”文件。

 sudo gedit /etc/ssh/sshd_config 

編輯 sshd-config 文件

更改“PermitRootLogin”行,使其使用“prohibit-password”選項。

保存更改並重新啟動 SSH 守護程序。

 sudo systemctl 重啟 ssh 

重新啟動 sshd 守護進程

現在,即使有人恢復了 root 用戶的密碼,他們也無法使用密碼通過 SSH 登錄。

當遠程 root 用戶與您的本地計算機建立 SSH 連接時,會交換和檢查密鑰。 如果他們通過身份驗證,root 用戶無需密碼即可連接到您的本地計算機。

 ssh [email protected] 

root 用戶使用 SSH 連接到遠程計算機而無需密碼

禁止駛入

拒絕來自 root 用戶的遠程連接是最好的選擇。 允許 root 使用 SSH 密鑰進行連接是次優的,但仍然比使用密碼好很多。

相關:如何在 Linux 上控制 sudo 訪問