Linux/Unix 系統,很多人使用SSH + 密碼來登陸服務器,默認 22端口,這樣會有被暴力破解密碼的危險(除非密碼足夠複雜且長度很長),因此最好修改SSH默認的22端口爲其它隨機端口號。
爲了保險起見,推薦先添加一個SSH 隨機端口號並添加對應的防火牆規則,然後用這個新的端口連接服務器試試,如果沒問題了,我們再刪除默認的22端口。這樣做的好處,就是因爲如果新修改的端口號無法連接,可以仍然使用默認的22端口登錄,否則,可能無法連接或出現一些問題後會導致你無法通過SSH連接到服務器,那就慘了。
本文原文來自米撲博客:Linux 修改SSH 默認端口 22,防止被破解密碼
本文實例的系統環境
阿里雲 CentOS 7.4
一、修改配置文件
1. 修改配置文件 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
修改
#Port 22
#ListenAddress 0.0.0.0
#ListenAddress ::
爲
Port 22
Port 23456
#ListenAddress 0.0.0.0
#ListenAddress ::
如上,取消註釋 Port 22,並在其下方增加一行 Port 23456
說明:
SSH默認監聽端口是22,如果不強制說明,”Port 22”註釋或不註釋,都會默認開放端口22遠程登錄
上面取消註釋並保留了22端口,防止可能各種權限和配置問題,導致22端口不能訪問,那就尷尬了
增加了一行 Port 23456 端口,就是爲了來替換默認端口22的,大家在修改端口時候最好挑10000~65535之間的端口號,10000以下容易被系統或一些特殊軟件佔用,或是以後新安裝的應用可能佔用該端口,所以10000以下的端口號都不要使用。
二、使其 sshd 配置生效
1、執行如下命令,使 sshd 配置修改後生效
1)CentOS 7.x 以上系統,執行命令
systemctl restart sshd.service
2)CentOS 6.x 以下系統,執行命令
/etc/init.d/sshd restart
2、生效後,使用新端口號登錄
ssh [email protected] -p 23456
# ssh [email protected] -p 23456
[email protected]'s password:
輸入密碼即可成功登錄
注:此時 22 和 23456 兩個端口都可以成功登錄ssh
3、確認新端口可登錄,註釋掉22端口
vim /etc/ssh/sshd_config
註釋掉端口22,最後的配置內容如下
#Port 22
Port 23456
#ListenAddress 0.0.0.0
#ListenAddress ::
最後,別忘了修改配置文件後,使其生效
1)CentOS 7.x 以上系統,執行命令
systemctl restart sshd.service
2)CentOS 6.x 以下系統,執行命令
/etc/init.d/sshd restart
三、防火牆允許新端口號
阿里雲使用 CentOS 7 以前的版本並開啓默認防火牆 iptables 時,應注意 iptables 默認不攔截訪問
如果您配置了 iptables 規則,需要執行命令允許新端口:
iptables -A INPUT -p tcp --dport 23456 -j ACCEPT
然後執行重啓防火牆命令
service iptables restart
說明:
CentOS 7 以後版本默認安裝 Firewalld
首先,查看防火牆是否開啓了 23456 端口號
firewall-cmd --permanent --query-port=23456/tcp
若打印結果爲 no 表示沒有開放 23456 端口號,那麼添加允許新端口號,運行命令
firewall-cmd --permanent --add-port=23456/tcp
返回結果爲 success 即表示放行 TCP 23456 端口號
接着,重新加載防火牆策略,使配置生效
firewall-cmd --reload
最後,再次查詢是否開放了 23456 端口號
firewall-cmd --permanent --add-port=23456/tcp
若開放了新端口號,此時會打印 yes
四、策略組允許新端口號
阿里雲、騰訊雲等很多雲服務器商都有安全組策略,若防火牆開放了新端口號,但安全組沒有開放新端口號,也是無法ssh登錄的,因此還需要在安全組開放新端口號
登錄 ECS 管理控制檯,找到該實例,選擇 網絡和安全組
在安全組規則頁面,單擊添加安全組規則,根據實際的使用場景來定義安全規則,允許新配置的遠程端口進行連接。
關於如何設置安全組參見 添加安全組規則