CentOS7.2增加和更换ssh端口

时间:2022-02-27 06:55:20

一般的增加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命令,相当于修改配置即可。