在服务器运维管理中,出于安全考虑或避免端口冲突,我们常常需要修改某些服务的默认监听端口,以广泛使用的CentOS 6.8系统为例,更改SSH(Secure Shell)服务的默认端口(22)是一项基础且重要的安全加固操作,通过将默认端口更改为一个不常见的端口,可以有效减少自动化脚本和恶意扫描器的攻击频率,本文将详细介绍在CentOS 6.8系统中安全、完整地更改SSH端口的整个流程。
准备工作与注意事项
在进行任何配置更改之前,充分的准备是避免意外情况(尤其是被锁在服务器门外)的关键。
您必须拥有服务器的root权限或具有sudo权限的用户账户,强烈建议在修改任何核心配置文件前进行备份,对于SSH配置文件,我们可以使用以下命令进行备份:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
这个备份文件将在出现问题时,允许我们快速恢复原始配置,请务必确保您有另一种方式访问服务器,例如物理控制台、VNC或服务商提供的Web终端,以防SSH服务配置错误导致连接中断。
修改SSH服务配置文件
SSH服务的核心配置文件位于/etc/ssh/sshd_config
,我们需要编辑这个文件来指定新的端口。
使用您喜欢的文本编辑器,如vi或vim,打开该文件:
vi /etc/ssh/sshd_config
在文件中,找到下面这一行:
#Port 22
这行默认是被注释掉的,表示SSH服务监听22端口,为了更改端口,我们有两种选择,一种更稳妥的方法是,先保留22端口,同时添加一个新端口,这样可以确保在新端口测试成功之前,旧的连接方式依然可用。
我们可以在#Port 22
下方添加一行新的端口配置,我们想将新端口设置为2222:
#Port 22
Port 2222
这样配置后,SSH服务将同时监听22和2222两个端口,完成修改后,保存并退出编辑器(在vi中,输入wq!
并回车)。
配置iptables防火墙规则
CentOS 6.8默认使用iptables作为防火墙管理工具,仅仅修改SSH配置文件是不够的,如果防火墙没有放行新的端口,所有外部连接请求都会被拦截,我们需要在iptables中添加一条规则,允许新的TCP端口(如2222)的流量进入。
执行以下命令来添加规则:
iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
这个命令的含义是:在INPUT链的起始位置(-I INPUT
)插入一条规则,允许(-j ACCEPT
)协议为tcp(-p tcp
)、目标端口为2222(--dport 2222
)的数据包。
仅仅在内存中添加规则是不够的,服务器重启后这些规则会丢失,我们需要将当前的iptables规则保存到配置文件中,使其永久生效:
service iptables save
执行后,系统会将当前的规则集保存到/etc/sysconfig/iptables
文件中。
为了更清晰地理解,下表小编总结了关键的iptables命令:
命令 | 说明 |
---|---|
iptables -I INPUT -p tcp --dport 2222 -j ACCEPT | 在规则链的开头插入一条规则,允许TCP流量进入新端口2222。 |
service iptables save | 将当前内存中的iptables规则保存到/etc/sysconfig/iptables 文件中,确保重启后依然有效。 |
重启SSH服务与测试连接
配置文件和防火墙规则都已更新,现在需要重启SSH服务以使新的端口配置生效。
service sshd restart
重要提示: 在执行此命令后,请不要立即关闭当前的SSH连接窗口,我们应该开启一个新的终端窗口,使用新的端口进行连接测试,以确保一切正常。
新的连接命令格式如下:
ssh username@your_server_ip -p 2222
将username
替换为您的用户名,your_server_ip
替换为服务器的IP地址。-p
参数用于指定连接的端口号,如果能够成功登录,说明新端口配置无误。
完成后续清理工作
在新端口连接测试成功后,我们就可以安全地移除旧的22端口配置,完成整个更改过程。
再次编辑/etc/ssh/sshd_config
文件,将Port 22
这一行删除或注释掉,只保留Port 2222
。
再次重启SSH服务:
service sshd restart
从iptables防火墙中移除22端口的规则:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT service iptables save
-D
参数表示删除一条规则,至此,整个端口更改流程已全部完成,您的SSH服务现在仅在新的、更安全的端口上提供服务。
相关问答FAQs
问题1:如果我修改端口后无法连接,并且被锁在服务器外面了,该怎么办?
解答: 如果您被锁在服务器外,唯一的恢复途径是通过非SSH的方式访问服务器,这通常指使用您的云服务提供商(如阿里云、腾讯云、AWS等)提供的Web VNC控制台,或者如果是物理服务器,通过KVM或iDRAC等远程管理卡登录,通过控制台登录后,您可以检查/etc/ssh/sshd_config
文件中的配置是否有语法错误(如端口号拼写错误、存在非法字符等),并检查/etc/sysconfig/iptables
文件,确认新端口的规则是否已正确添加和保存,修正错误后,重启sshd
和iptables
服务即可恢复。
问题2:我可以让SSH服务同时监听多个端口吗?
解答: 是的,完全可以,在/etc/ssh/sshd_config
文件中,您只需添加多行Port
指令即可,如果您想让SSH同时监听22、2222和8022端口,可以这样配置:
Port 22
Port 2222
Port 8022
保存文件并重启sshd
服务后,SSH服务就会在这三个端口上同时等待连接,这种配置在某些场景下非常有用,例如在进行端口迁移时,可以保持旧端口开放一段时间,以便通知所有用户更新连接信息,实现平稳过渡,也可以为不同网络环境或用户组分配不同的端口。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复