這裡介紹如何在 Linux 系統上更改 SSH 服務設定,讓 root 管理者無法遠端登入,降低被駭客入侵的風險。

在實務上大部分的 Linux 伺服器都是放在機房內,並開啟 SSH 服務讓管理者以遠端登入的方式來管理 Linux 系統,除非真的有必要(例如更換硬體等),否則管理者不會直接在伺服器前面操作(有進去過機房的人就知道裡面其實很吵,而且很冷)。


若要在遠端以 SSH 連進 Linux 系統進行管理動作,有幾種不同的作法,最簡單的就是用 root 帳號直接透過 SSH 登入系統,但是這樣做的風險比較高,因為 root 這個帳號名稱試種所皆知的名字,如果 SSH 服務又對外開放,網路上的駭客就可以用暴力法嘗試破解 root 的密碼,萬一密碼又設定的很簡單,可能就很容易被攻破。

另外一種比較好的方式就是把 root 帳號的 SSH 遠端登入功能關閉,然後讓管理者以一般的使用者帳號登入後,再以 sudo 等方式切換成 root 進行管理,這樣一來外部的駭客就完全不知道到底系統上有哪些帳號,以及哪些帳號有 sudo 權限,這樣就比較不容易被猜出帳號密碼。

以下是將 root 的 SSH 遠端登入功能關閉的步驟。

SSH 關閉 root 遠端登入

在關閉 root 的 SSH 遠端登入功能之前,請先參考 Linux 的 susudo 指令教學與範例,確認自己的一般使用者帳號可以取得管理者權限,如果一般使用者帳號無法取得管理者權限的話,root 遠端登入功能一關閉,就只能從本機登入來管理機器了。

root 管理者權限編輯 /etc/ssh/sshd_config 這個 SSH 服務的設定檔,修改 PermitRootLogin 選項,將其設定為 no 即可關閉 root 遠端登入的功能。

# 是否允許 root 管理者以 SSH 登入
PermitRootLogin no

修改好之後,重新啟動 SSH 服務,不同的 Linux 發行版會使用不同的指令:

# 重新啟動 SSH 服務(CentOS Linux)
systemctl restart sshd

# 重新啟動 SSH 服務(Ubuntu Linux)
service sshd restart

重新啟動之後,就算知道 root 的密碼,也無法直接透過 SSH 登入了。

補充說明,Vim 若要編輯 /etc/ssh/sshd_config 時,設定的 syntax 為 sshconfig

參考資料:Tecmint