SSH是遠程登錄Linux服務器的主要方式,但它也是黑客進行暴力破解和惡意攻擊的主要入口之一。為了加強Linux云主機的SSH登錄安全,您可以采用以下方式進行安全加固:
- 修改默認端口;
- 禁止root用戶直接登錄;
- 添加安全組規則;
- 采用密鑰登錄;
- 配置SSH登錄限制。
我們以centos為例為大家介紹如何進行安全加固。
修改默認端口
- 遠程登錄彈性云主機。
- 打開 sshd 配置文件 /etc/ssh/sshd_config,可以使用編輯器打開該文件,例如使用 vi 命令:
vi /etc/ssh/sshd_config
- 找到以下代碼行:
#Port 22
將該行代碼的注釋符號 # 去掉,并將 22 修改為想要設置的端口號,例如 2222:
Port 2222
- 按ESC鍵,輸入:wq保存修改并退出編輯器。
- 重啟 sshd 服務,使配置生效。可以使用以下命令重啟 sshd 服務:
systemctl restart sshd
- 確認修改是否生效。可以使用以下命令檢查 sshd 服務是否在新端口上監聽:
netstat -tnl | grep 2222
如果輸出類似于以下內容,則表示 sshd 服務已經在新端口 2222 上監聽:
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN
- 完成以上步驟后,就成功將 CentOS 系統的 SSH 默認端口號修改為了 2222。注意,在修改 SSH 默認端口號之后,需要使用新的端口號來進行 SSH 連接,例如:
ssh username@hostname -p 2222
其中,username 和 hostname 分別是 SSH 登錄的用戶名和遠程主機名或 IP 地址。
禁用root用戶直接登錄
Linux的默認管理員名即是root,只需要知道root密碼即可直接登錄SSH。禁止root從SSH直接登錄可以提高服務器安全性。經過以下操作后即可實現。
- 新建用戶
useradd test
- 配置密碼
#使用passwd命令即可給相應帳戶設置或修改密碼。
passwd test
#根據圖示,設置或修改密碼需要填寫兩次,第二次為效驗密碼,輸入完畢后請回車確認。
Changing password for user test.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
- 配置不允許root用戶直接登錄,修改相關文件
vi /etc/ssh/sshd_config
查找 #PermitRootLogin yes” 默認為132行
將“#”去掉,末尾“Yes”改為“No”
并:wq保存
- 重啟SSHD服務
systemctl restart sshd
- 測試連接,可以看到,直接使用root 連接服務器 ssh會直接拒絕


添加安全組規則
安全組中的入方向規則默認開啟了22端口,當云服務器的SSH登錄端口修改為2222時,需要為安全組新加一條規則。
登錄管理控制臺。
- 選擇“計算 > 彈性云主機”,進入云主機控制臺。
- 單擊云服務器名稱進入詳情頁面。
- 選擇“安全組”頁簽,單擊展開安全組規則詳情,單擊列表右上角的“更改安全組規則”。
- 添加一條入方向規則。

采用密鑰登錄
密鑰對登錄比起密碼登錄更加安全,因此在創建彈性云主機時您可以選擇密鑰對登錄的方式。
- 新建密鑰對,或者選擇已有的密鑰對,并下載至本地。


- 創建云主機時,登錄方式選擇密鑰對。


- 使用xshell登錄彈性云主機
通過彈性公網IP,執行以下命令,SSH遠程連接彈性云主機。
ssh 用戶名@彈性公網IP
選擇“Public Key”,并單擊“用戶密鑰(K)”欄的“瀏覽”。
在“用戶密鑰”窗口中,單擊“導入”。
選擇本地保存的密鑰文件,并單擊“打開”。
單擊“確定”,登錄彈性云主機。
配置SSH登錄限制
“/etc/hosts.allow”和“/etc/hosts.deny”是控制遠程訪問的文件,通過配置該文件可以允許或者拒絕某個IP或者IP段的客戶訪問Linux云服務器的某項服務。
比如SSH服務,通常只對管理員開放,那我們就可以禁用不必要的IP,而只開放管理員可能使用到的IP段。
因為云主機需要在不同地點登錄,建議編輯“/etc/hosts.allow”允許所有IP地址登錄,這樣不會影響正常使用。
vim /etc/hosts.allow
在最后一行增加“sshd:ALL”。


也可以通過一些方法識別云主機的安全風險,使用tail -f /var/log/secure打開SSH日志,查看疑似惡意登錄的IP。


然后在“/etc/hosts.deny”中將這些地址禁止。

