1. 程式人生 > >CentOS7.2增加和更換ssh埠

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命令,相當於修改配置即可。