CentOS 修改登入埠號

最後更新 2022-02-20 作者 Roy

採用預設埠號(端口)22很容易被人家try登入口,作者曾經嘗試用預設的方式搭配英文大小寫和數字

結果,一個月內就被破解當成肉雞了…

如果不想更改port可以參考這篇 設定 Linux SSH 使用金鑰登入,將安全性提高。

CentOS 7以上預載的防火牆是 Firewalld ,以下範例防火牆設定請依照原預載另做調整。

Setp 1 取消# 22 在下方增加要登入的新端口

[root@xxx ~]$ nano  etc/ssh/sshd_config 

Setp 2 重啟 sshd

 [root@xxx ~]$ systemctl restart   sshd

Setp 3 安装semanage

[root@xxx ~]$ yum provides   semanage
[root@xxx ~]$ yum -y install policycoreutils-python

Setp 4 新增端口,我們這裡選擇用1024當新的

[root@xxx ~]$ semanage port -a -t ssh_port_t -p tcp 1024   

如果不小心輸入錯的端口,可以用以下這個指令刪除

[root@xxx ~]$ semanage   port --delete -t http_port_t -p tcp 1024 

Setp 5 檢查是否成功

[root@xxx ~]$ semanage port -l | grep ssh

Setp 6 設定防火牆FirewallD ,首先測試防火牆是否已啟用,啟用返回值為 runing,反之為not running

[root@xxx ~]$ firewall-cmd   --state    

Setp 7 啟用防火牆,第二條指令是讓它開機時就自行開啟防火牆

[root@xxx ~]$ systemctl start   firewalld
[root@xxx ~]$ systemctl enable firewalld

Setp 8 查看防火牆的預設、活躍區域(zones)

[root@xxx ~]$ firewall-cmd   --get-default-zone 
[root@xxx ~]$ firewall-cmd --get-active-zones

Setp 9 為了預防出問題所以同時開啟22和1024永久端口,臨時端口和永久端口差別在於多了 permanent,臨時端口在重開機後就會失效

[root@xxx ~]$ firewall-cmd   --permanent --zone=public --add-port=22/tcp
[root@xxx ~]$ firewall-cmd --permanent --zone=public --add-port=1024/tcp

Setp 10 防火牆重新載入設定檔

[root@xxx ~]$ firewall-cmd   --reload  

Setp 11 查看已暴露端口

[root@xxx ~]$ firewall-cmd   --permanent --list-port   firewall-cmd   --zone=public --list-all    

Setp 12 重啟SSH 之後使用Putty或Xshell等軟體換成1024的端口,看是否能正常登入

[root@xxx ~]$ systemctl restart   sshd.service  

Setp 13 1024端口可以用之後,接下來關閉預設的22端口。在Port 22前面加上#成為#Port 22後保存退出

[root@xxx ~]$ nano etc/ssh/sshd_config

Setp 14 把防火牆中的22端口刪除

 [root@xxx ~]$ firewall-cmd   --permanent --zone=public --remove-port=22/tcp    

Setp 15 重新啟動並查看是否移除,若無看到則為成功

[root@xxx ~]$ firewall-cmd   --reload   
[root@xxx ~]$ firewall-cmd --permanent --list-port
Roy
關於作者 Roy

曾經北漂的工程師,現在專注於WordPress、.Net Core開發


發佈留言