如何在CentOS系统中安全地修改SSH默认端口?

在服务器管理和运维工作中,安全始终是第一要务,SSH(Secure Shell)作为远程管理 Linux 服务器的核心工具,其默认的 22 端口是自动化扫描和暴力破解攻击的首要目标,将 SSH 服务端口修改为一个非标准端口,是提升服务器安全性的基础且有效的手段之一,本文将以 CentOS 系统为例,详细、清晰地介绍修改 SSH 端口的完整流程,包括配置文件修改、防火墙设置以及至关重要的 SELinux 策略更新,确保整个过程安全、无误。

如何在CentOS系统中安全地修改SSH默认端口?

准备工作:防患于未然

在进行任何系统关键配置的修改之前,做好准备工作可以避免很多不必要的麻烦,甚至是灾难性的后果。

  1. 备份配置文件:这是最重要的第一步,任何修改都有可能出错,拥有原始配置文件的备份意味着你随时可以恢复到初始状态,使用 cp 命令备份 SSH 的主配置文件。

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  2. 确保拥有 root 权限:修改系统配置和服务需要管理员权限,你可以直接以 root 用户登录,或者在普通用户下使用 sudo 命令来执行操作。

  3. 了解 SELinux:CentOS 系统默认启用了 SELinux(Security-Enhanced Linux),它是一个强制访问控制(MAC)系统,这意味着,即使你修改了配置文件和防火墙,SELinux 策略不允许,SSH 服务依然无法在新的端口上监听,这是很多新手在修改端口时失败并导致无法连接的主要原因,必须予以重视。

第一步:修改 SSH 配置文件

SSH 服务的所有配置都集中在 /etc/ssh/sshd_config 文件中,我们需要使用文本编辑器(如 vinano)来打开并修改它。

sudo vi /etc/ssh/sshd_config

在文件中,找到 #Port 22 这一行,开头的 表示该行是注释,当前生效的是默认的 22 端口,为了实现平滑过渡,避免因配置错误而立即被锁在服务器之外,最佳实践是先添加一个新端口,同时保留旧端口

#Port 22 修改为如下形式,这里我们以 2222 作为新端口为例:

#Port 22
Port 22
Port 2222

这样配置后,SSH 服务将同时在 22 和 2222 这两个端口上监听,当你确认可以通过新端口正常连接后,再回来移除 Port 22 这一行。

修改完成后,保存并退出编辑器(在 vi 中,按 Esc 键,输入 wq 并回车)。

第二步:更新防火墙规则

修改了服务端口,必须相应地在防火墙中开放新的端口,否则外部流量将无法到达 SSH 服务,CentOS 7 及以上版本默认使用 firewalld 作为防火墙管理工具。

  1. 永久添加新端口到防火墙

    sudo firewall-cmd --permanent --add-port=2222/tcp

    --permanent 参数表示这个规则是永久生效的,否则它会在防火墙重启后失效。

  2. 重新加载防火墙配置

    如何在CentOS系统中安全地修改SSH默认端口?

    sudo firewall-cmd --reload

    此命令会使刚才添加的永久规则立即生效。

  3. 验证端口是否已开放

    sudo firewall-cmd --list-all

    在输出的 ports 列表中,你应该能看到 2222/tcp

第三步:配置 SELinux 策略

这是在 CentOS 上修改端口最关键也最容易被忽略的一步,我们需要告诉 SELinux,允许 SSH 服务使用新的 TCP 端口。

  1. 安装必要的管理工具(如果尚未安装):
    semanage 命令来自于 policycoreutils-python 包。

    sudo yum install policycoreutils-python -y

    对于 CentOS 8/Stream 等使用 dnf 的系统,命令为:

    sudo dnf install policycoreutils-python-utils -y
  2. 为 SSH 服务添加新端口
    使用 semanage 命令将 2222 端口添加到 SSH 端口类型中。

    sudo semanage port -a -t ssh_port_t -p tcp 2222

    参数解释:

    • -a: 表示添加(add)。
    • -t ssh_port_t: 指定类型为 SSH 端口类型。
    • -p tcp: 指定协议为 TCP。
    • 2222: 你要添加的端口号。
  3. 验证 SELinux 端口规则
    你可以查看当前所有被允许用于 SSH 的端口。

    sudo semanage port -l | grep ssh

    输出结果应该包含 ssh_port_t tcp 2222, 22,表示 22 和 2222 端口都已成功关联到 SSH 服务。

第四步:重启 SSH 服务并验证

所有配置都已完成,现在需要重启 SSH 服务以使更改生效。

sudo systemctl restart sshd

验证是至关重要的一步,请务必在断开当前连接前完成!

  1. 检查服务监听状态
    使用 ssnetstat 命令查看 sshd 进程是否正在监听新的端口。

    如何在CentOS系统中安全地修改SSH默认端口?

    sudo ss -tnlp | grep sshd

    你应该能看到类似以下的输出,表明服务正在 22 和 2222 端口上监听:

    LISTEN  0      128            0.0.0.0:22            0.0.0.0:*    users:(("sshd",pid=1234,fd=3))
    LISTEN  0      128            0.0.0.0:2222          0.0.0.0:*    users:(("sshd",pid=1234,fd=4))
  2. 测试新端口连接
    不要关闭当前的终端窗口! 新开一个本地终端窗口,尝试使用新端口连接到服务器。

    ssh username@your_server_ip -p 2222

    如果能够成功登录,恭喜你,端口修改已经成功。

第五步:移除旧端口(可选但推荐)

在确认新端口工作正常一段时间后(例如一两天),为了彻底关闭自动化攻击的入口,你应该回到 SSH 配置文件中,移除旧的 22 端口。

  1. 再次编辑 /etc/ssh/sshd_config
    sudo vi /etc/ssh/sshd_config
  2. 删除或注释掉 Port 22 这一行,只保留 Port 2222
  3. 重启 SSH 服务:
    sudo systemctl restart sshd
  4. (可选)从防火墙中移除 22 端口:
    sudo firewall-cmd --permanent --remove-service=ssh
    sudo firewall-cmd --reload

    注意:ssh 是一个预定义的服务,它指向 22 端口,直接移除服务比移除端口更规范。

至此,你已经成功地将 CentOS 服务器的 SSH 端口从默认的 22 修改为了自定义的 2222,并完成了所有相关的安全策略配置,服务器的安全性得到了显著提升。


相关问答 FAQs

Q1: 修改端口后,我无法通过新端口连接到服务器,被锁在外面了,该怎么办?

A: 这是修改端口时最常见的问题,通常由以下三个原因之一导致,需要有控制台(VNC、KVM等)访问权限来解决:

  1. 防火墙问题:登录服务器控制台,检查防火墙规则是否正确添加,运行 sudo firewall-cmd --list-all,确认新端口(如 2222/tcp)在 ports 列表中,如果没有,重新运行 sudo firewall-cmd --permanent --add-port=2222/tcpsudo firewall-cmd --reload
  2. SELinux 问题:这是 CentOS 上最可能的原因,在控制台中运行 sudo semanage port -l | grep ssh,查看新端口是否已关联到 ssh_port_t,如果没有,说明上一步的 semanage 命令执行失败或有误,请重新执行 sudo semanage port -a -t ssh_port_t -p tcp 2222,你也可以通过 sudo journalctl -xesudo ausearch -m avc -ts recent 查看 SELinux 的拒绝日志。
  3. SSH 服务问题:检查 sshd 服务状态:sudo systemctl status sshd,如果服务异常,可以根据输出的错误信息进行排查,最常见的错误是配置文件语法错误,可以通过 sudo sshd -t 命令来测试配置文件。

Q2: 为什么教程中建议先同时保留新旧端口,而不是直接修改?

A: 这是一种“安全网”策略,强烈推荐给所有管理员,尤其是在生产环境中操作时,直接修改端口意味着一旦配置(无论是 sshd_config、防火墙还是 SELinux)有任何一环出错,你的 SSH 连接会立即中断,且无法通过任何端口重新连接,只能通过服务器提供商的控制台救援,过程繁琐且耗时,通过先添加新端口,你保留了一个“退路”,你可以用新连接测试所有功能,确认万无一失后,再从容地移除旧端口,这个小小的步骤可以极大地降低操作风险,避免因小失大。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-04 05:51
下一篇 2025-10-04 05:52

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信