這裡介紹如何在 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 的 su
與 sudo
指令教學與範例,確認自己的一般使用者帳號可以取得管理者權限,如果一般使用者帳號無法取得管理者權限的話,root
遠端登入功能一關閉,就只能從本機登入來管理機器了。
以 root
管理者權限編輯 /etc/ssh/sshd_config
這個 SSH 服務的設定檔,修改 PermitRootLogin
選項,將其設定為 no
即可關閉 root
遠端登入的功能。
# 禁止 root 管理者登入 PermitRootLogin no
若只希望 root
管理者不要以密碼認證方式登入(允許公鑰認證方式登入),可以將 PermitRootLogin
設定為 prohibit-password
或 without-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
1 則自動引用通知