分類: Linux

Linux 禁止 root 管理者以 SSH 登入,強化系統安全性

這裡介紹如何在 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 管理者登入
PermitRootLogin no

若只希望 root 管理者不要以密碼認證方式登入(允許公鑰認證方式登入),可以將 PermitRootLogin 設定為 prohibit-passwordwithout-password

# 禁止 root 管理者以密碼認證登入(允許公鑰認證方式登入)
PermitRootLogin prohibit-password

若希望 root 管理者僅能以公鑰認證方式登入,並且在登入之後只能執行特定指令,可以將 PermitRootLogin 設定為 forced-commands-only(採用這個選項之後,要搭配 ForceCommand 指定允許執行的指令):

# 僅允許 root 管理者以公鑰認證方式登入,並限制執行的指令
PermitRootLogin forced-commands-only

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

# 重新啟動 SSH 服務
sudo systemctl restart sshd

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

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

參考資料:Tecmint

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

1 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

2 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

2 年 ago