採用預設埠號(端口)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