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