在CentOS 7.5系统中更改服务的默认端口是一项基础且重要的安全加固措施,通过修改端口,可以有效减少自动化扫描和暴力破解攻击的风险,本文将以最常用的SSH服务为例,详细阐述在CentOS 7.5中更换端口的完整流程,并辅以其他服务的参考信息。

准备工作:备份与规划
在进行任何核心配置修改之前,首要任务是备份相关的配置文件,这可以确保在操作失误时能够迅速恢复系统原状,对于SSH服务,其主配置文件为/etc/ssh/sshd_config,建议使用以下命令进行备份:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
请规划好您要使用的新端口号,建议选择一个大于1024且未被其他服务占用的端口号,例如2222,您可以使用netstat -tunlp或ss -tunlp命令来查看当前系统已被占用的端口列表。
核心步骤:以SSH服务为例
更换SSH端口主要涉及修改配置文件、调整防火墙规则以及更新SELinux策略三个核心环节。
修改SSH配置文件
使用文本编辑器(如vi或nano)打开SSH配置文件:
vi /etc/ssh/sshd_config
在文件中找到#Port 22这一行,默认情况下,该行被注释掉,您有两个选择:一是直接取消注释并将22修改为新端口号;二是保留22,同时在新的一行添加您的新端口,这样可以确保新端口配置生效前,旧端口依然可用,防止被锁在系统外。
推荐采用第二种方式,更为稳妥:
#Port 22
Port 2222 保存并退出编辑器。

配置防火墙
CentOS 7.5默认使用firewalld作为防火墙管理工具,必须将新端口添加到防火墙的允许规则中,否则外部无法访问。
# 添加新端口到public区域(永久生效) firewall-cmd --zone=public --add-port=2222/tcp --permanent # 重新加载防火墙配置,使规则生效 firewall-cmd --reload
执行完毕后,可以使用firewall-cmd --zone=public --list-ports来确认新端口是否已成功添加。
更新SELinux策略
如果系统的SELinux处于强制(Enforcing)模式,它同样会限制服务只能在其预定义的安全端口上运行,需要为SSH服务添加新的端口许可。
确保已安装semanage命令工具,该工具包含在policycoreutils-python包中:
yum install policycoreutils-python -y
使用semanage为新端口添加SSH服务上下文:
semanage port -a -t ssh_port_t -p tcp 2222
可以通过semanage port -l | grep ssh来查看当前SSH服务被允许使用的端口列表,确认2222已加入其中。
重启服务与验证
完成以上所有配置后,重启SSH服务以使更改生效:

systemctl restart sshd
关键验证步骤:在断开当前SSH连接之前,务必开启一个新的终端窗口,尝试使用新端口连接服务器:
ssh username@your_server_ip -p 2222
如果新端口连接成功,则说明所有配置均正确无误,您可以安全地断开旧连接,确认无误后,可以返回第一步的配置文件中,将Port 22这一行删除或注释掉,并再次从防火墙中移除22端口,完成彻底的端口切换。
常用服务端口与配置文件速查表
为了方便您对其他服务进行类似操作,下表列出了一些常见服务的默认端口及配置文件路径。
| 服务名称 | 默认端口 | 主配置文件路径 |
|---|---|---|
| SSH (远程登录) | 22 | /etc/ssh/sshd_config |
| HTTP (Apache/Nginx) | 80 | /etc/httpd/conf/httpd.conf 或 /etc/nginx/nginx.conf |
| HTTPS (Apache/Nginx) | 443 | 同上 |
| MySQL/MariaDB | 3306 | /etc/my.cnf 或 /etc/my.cnf.d/server.cnf |
| FTP (vsftpd) | 21 | /etc/vsftpd/vsftpd.conf |
相关问答 (FAQs)
问题1:修改端口后无法连接,被锁在门外怎么办?
解答: 首先不要慌张,如果您拥有服务器的物理控制台访问权限或虚拟化平台(如VNC、VMware Console)的远程控制台,可以通过它登录系统,依次排查:1)检查sshd_config文件中的端口号是否正确且语法无误;2)使用firewall-cmd --list-ports确认防火墙是否已放行新端口;3)使用semanage port -l | grep ssh确认SELinux是否允许新端口;4)使用systemctl status sshd检查SSH服务是否正常运行,找到问题并修正后,重启SSH服务即可。
问题2:修改端口后,是否需要禁用原来的默认端口(如22端口)?
解答: 是的,强烈建议禁用,保留默认端口会暴露服务信息,使得安全加固失去意义,在您通过新端口100%确认服务稳定运行后,应返回/etc/ssh/sshd_config文件中删除或注释掉Port 22这一行,并执行firewall-cmd --zone=public --remove-port=22/tcp --permanent和firewall-cmd --reload来从防火墙中移除22端口,从而彻底关闭攻击者最常扫描的入口。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复