CentOS7.2增加和更換ssh埠
一般的增加ssh埠配置,然後重啟生效就不提了,網上也有不少。我這裡遇到的問題是,伺服器在遠端的交換機背後,給了一個外部埠9000對映到伺服器上的9022(由於內網多個機器的原因,目前只能分配9022埠,而不能直接對映到22上),作為遠端ssh的連線通道。
系統初始部署時,為了方便,直接在伺服器上配置了rinetd的埠對映,將9022對映到22上,實現了遠端ssh連線。然而這種埠對映有個最大的問題在於,所有通過9022登入的操作,系統日誌的IP都是127.0.0.1,無法跟蹤登入來源,也就無法針對異常登入做相應的遮蔽等處理,在安全性上存在較大的隱患。
最近又要開大會了,網安查得也很嚴,要求保留較長時間的登入日誌,也需要對日誌內容進行調整,所以需要去掉埠對映的方式,直接增加ssh埠9022。但這個操作很大的問題是,如果操作不慎,埠配置不正確,遠端就連不上了,想想跑機房就是一個心酸的過程,所以要有完善的操作流程規劃,避免出現這種情況。
廢話說了一堆,以下是操作流程:
1、我的CentOS7是開啟了SELinux的,所以需要在其中加上ssh埠協議的配置,才能通過ssh協議連線ssh服務:
semanage port -a -t ssh_port_t -p tcp 9022
如果之前沒有安裝semanage,使用yum安裝之後再執行以上操作:
yum -y install policycoreutils-python
2、檢查配置是否成功:
semanage port -l | grep ssh
如果顯示 ssh_port_t tcp 9022, 22 則配置成功
3、配置ssh埠
vi /etc/ssh/sshd_config
開啟預設的Port 22註釋,同時增加一行 Port 9022即可
4、防火牆配置,我這裡使用的是iptables,所以增加一條:
/sbin/iptables -A INPUT -p tcp --dport 9022 -j ACCEPT
如果使用的是firewall則,先查詢是否已存在埠配置:
firewall-cmd --permanent --query-port=9022/tcp
如果返回 no,則增加配置項:
firewall-cmd --permanent --add-port=9022/tcp
返回 Success之後,重啟防火牆:
firewall-cmd –reload
5、重啟ssh服務,有防火牆的先重啟防火牆
systemctl restart firewalld.service
systemctl restart sshd.service
至此完成新增ssh埠的配置。
但是!!!!!!!重要的來了!!!!!!!
記得開篇的說明麼,之前是做了rinetd埠對映的,9022埠是已經被佔用了的,所以ssh的新埠起不來!!!!
如果是直接在伺服器本機上操作,不存在問題,直接停掉rinetd,重啟一下,即便是配置錯了,也還有改正的機會,但是,遠端怎麼辦?
我的解決方案是,借用其他對外服務的埠。這次是伺服器上剛好有一個對外的web埠,臨時的暫停web服務,將該web埠8081同樣的
按以上流程配置成ssh埠,讓9022和8081臨時共存,然後通過8081登入上伺服器,再停掉原rinetd的端對映,再重啟ssh服務即可,
成功後記得在去掉8081的配置,恢復web服務。
在配置semanage增加8081為ssh埠時,有個小問題,因為系統已經根據policy將8081埠加到了transproxy_port_t型別的埠中,
直接使用semanage port -a是加不進去的,所以要使用semange port -m命令,相當於修改配置即可。