在服务器管理领域,安全始终是重中之重,对于广泛使用的CentOS 6.8系统而言,SSH(Secure Shell)是远程管理的核心工具,其默认的22端口因其广为人知而成为自动化攻击和暴力破解的首要目标,将SSH端口更改为一个非标准端口,是提升服务器安全性的基础且有效的一步,本文将详细、系统地介绍在CentOS 6.8上安全更改SSH端口的完整流程,并涵盖相关的防火墙和SELinux配置,确保操作既成功又安全。

为何需要更改SSH默认端口
更改SSH端口的主要动机是增强安全性,这并非一种能彻底杜绝攻击的“银弹”,而是一种被称为“通过模糊化实现安全”的策略,其核心优势在于:
- 减少自动化攻击: 大量的网络扫描机器人会持续扫描互联网上的服务器,专门针对22、21、3389等常见端口进行攻击,将SSH端口更换为一个不常用的高位端口(如大于1024的端口),可以有效过滤掉绝大部分这类无差别攻击。
- 降低系统资源消耗: 每一次失败的登录尝试都会消耗一定的CPU和内存资源,并产生日志记录,减少无意义的攻击流量,可以降低服务器的负载,保持日志的整洁,便于管理员发现真正的安全威胁。
- 增加攻击者的成本: 攻击者必须先进行端口扫描才能发现你的SSH服务,这一额外的步骤增加了他们的时间和精力成本,使得许多低水平的攻击者望而却步。
更改SSH端口的详细步骤
整个过程可以分为准备工作、修改配置、配置防火墙、验证与清理四个关键阶段,每一步都至关重要,请务必谨慎操作。
第一阶段:准备工作
在进行任何配置更改之前,充分的准备是避免灾难性错误的关键。
备份配置文件: 这是最重要的习惯,SSH的主配置文件是
/etc/ssh/sshd_config,在修改前,请务必备份它。cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
如果后续操作出现问题,可以随时通过此备份文件恢复。
选择一个新端口: 选择一个合适的端口至关重要,建议选择一个1024到65535之间的未被其他服务占用的端口,我们可以选择
2222作为新的SSH端口,您可以使用以下命令检查端口是否被占用:netstat -tunlp | grep 2222
如果该命令没有任何输出,说明端口
2222当前是空闲的。
第二阶段:修改SSH配置文件
我们可以开始编辑SSH的配置文件了,这里我们使用vi编辑器,您也可以使用nano等您熟悉的工具。
打开配置文件:
vi /etc/ssh/sshd_config
修改Port指令: 在文件中找到
#Port 22这一行,号表示该行是注释状态,为了实现平滑过渡,我们不建议直接修改它,而是在其下方添加一行新的端口配置,这样,SSH服务将同时监听22和新端口,确保在新端口验证成功前,旧的连接方式依然可用。#Port 22 Port 2222保存并退出文件(在
vi中,按Esc键,输入wq并回车)。
第三阶段:配置防火墙与SELinux
这是最容易被忽略,也是最关键的一步,CentOS 6.8默认使用iptables作为防火墙,并且启用了SELinux,两者都必须正确配置,否则新端口将无法访问。
配置iptables防火墙: 需要添加一条规则,允许TCP流量通过新的SSH端口
2222。iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
这条命令将规则插入到
INPUT链的顶部,之后,必须保存规则,否则服务器重启后规则会丢失。service iptables save
重启iptables服务使新规则生效。
service iptables restart
配置SELinux: SELinux(Security-Enhanced Linux)会限制进程的访问权限,默认情况下,它只允许SSH进程(
sshd)监听ssh_port_t类型所定义的端口(即22),我们需要将新端口添加到这个类型中。
确保您已安装semanage命令工具,它通常包含在policycoreutils-python包中。yum install policycoreutils-python -y
使用
semanage为新端口添加SELinux上下文。semanage port -a -t ssh_port_t -p tcp 2222
执行此命令后,SELinux就会允许
sshd进程合法地监听2222端口。
第四阶段:重启服务、验证与清理
所有配置都已就绪,现在可以重启SSH服务了。
重启SSH服务:
service sshd restart
服务重启后,它将开始监听22和2222两个端口。
验证新端口连接: 请不要立即关闭当前的SSH连接! 打开一个新的终端窗口,使用新端口尝试连接服务器,这是确保操作万无一失的保险措施。

ssh -p 2222 your_username@your_server_ip
如果能够成功登录,恭喜您,端口更改的核心步骤已经完成。
清理旧端口配置: 在确认新端口工作正常后,为了彻底关闭旧端口,需要再次编辑
/etc/ssh/sshd_config文件。vi /etc/ssh/sshd_config
将
Port 22这一行注释掉(在行首加),或者直接删除,只保留Port 2222。#Port 22 Port 2222保存文件后,再次重启SSH服务。
service sshd restart
服务器仅监听2222端口,您还可以从
iptables中移除22端口的规则(如果存在的话),进一步收紧安全策略。
相关问答FAQs
问题1:我已经按照步骤修改了端口和防火墙,但仍然无法通过新端口连接,最可能的原因是什么?
解答: 最常见的原因是SELinux的限制,许多管理员在配置iptables后忽略了SELinux,导致连接被内核级别的安全策略拒绝,您可以使用命令semanage port -l | grep ssh来查看当前SELinux允许的SSH端口列表,如果新端口(如2222)不在此列表中,就必须执行semanage port -a -t ssh_port_t -p tcp 2222命令将其添加进去,请再次确认iptables规则是否已正确保存(service iptables save)并且没有其他拒绝规则(如-j DROP或-j REJECT)在更靠前的位置阻止了连接。
问题2:我可以同时配置多个SSH监听端口吗?这样做有什么用?
解答: 是的,您完全可以在/etc/ssh/sshd_config文件中通过添加多个Port指令来让SSH服务同时监听多个端口。
Port 22
Port 2222
Port 3333 这种配置最常见的用途是在进行端口迁移或维护时提供一个过渡期,如本文所述,您可以先保留旧端口(22)并添加新端口(2222),在充分测试和确认新端口稳定可用后,再移除旧端口的配置,这可以有效避免因配置失误导致被锁在服务器之外的风险,在正常的生产环境中,出于安全考虑,建议只开放一个经过精心选择的SSH端口。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复