【国产信创】openEuler 22.03 安全加固:SSH 端口修改完整指南(含防火墙/SELinux 配置)

openEuler 22.03 安全加固:SSH 端口修改完整指南(含防火墙/SELinux 配置)

    • [一、为什么要修改 SSH 默认端口?](#一、为什么要修改 SSH 默认端口?)
    • 二、操作前提
    • 三、分步操作指南(全程实操无坑)
      • [步骤 1:备份 SSH 配置文件(关键!防止配置出错)](#步骤 1:备份 SSH 配置文件(关键!防止配置出错))
      • [步骤 2:修改 SSH 配置文件(sshd_config)](#步骤 2:修改 SSH 配置文件(sshd_config))
        • [核心配置修改(3 处关键):](#核心配置修改(3 处关键):)
        • 保存退出:
      • [步骤 3:配置防火墙放行新端口(openEuler 22.03 默认用 firewalld)](#步骤 3:配置防火墙放行新端口(openEuler 22.03 默认用 firewalld))
      • [步骤 4:处理 SELinux(openEuler 22.03 默认开启,关键坑点!)](#步骤 4:处理 SELinux(openEuler 22.03 默认开启,关键坑点!))
        • [方法 1:临时关闭 SELinux(测试用,不推荐生产环境)](#方法 1:临时关闭 SELinux(测试用,不推荐生产环境))
        • [方法 2:永久配置 SELinux 允许新端口(推荐生产环境)](#方法 2:永久配置 SELinux 允许新端口(推荐生产环境))
      • [步骤 5:重启 SSH 服务,使配置生效](#步骤 5:重启 SSH 服务,使配置生效)
      • [步骤 6:测试新端口连接(关键验证步骤)](#步骤 6:测试新端口连接(关键验证步骤))
      • [步骤 7:关闭默认 22 端口(测试成功后执行)](#步骤 7:关闭默认 22 端口(测试成功后执行))
    • 四、常见问题排查(避坑指南)
      • [问题 1:修改后无法连接新端口?](#问题 1:修改后无法连接新端口?)
      • [问题 2:SELinux 配置报错「ValueError: Port tcp/23456 already defined」?](#问题 2:SELinux 配置报错「ValueError: Port tcp/23456 already defined」?)
      • [问题 3:重启 SSH 服务报错「Job for sshd.service failed because the control process exited with error code」?](#问题 3:重启 SSH 服务报错「Job for sshd.service failed because the control process exited with error code」?)
    • 五、安全加固进阶建议
    • 六、总结

一、为什么要修改 SSH 默认端口?

作为服务器远程管理的核心服务,SSH 默认 22 端口是黑客暴力破解的重灾区。根据云厂商安全报告显示:

  • 未修改默认端口的服务器,日均遭受 1000+ 次暴力扫描(来源:阿里云 2024 安全白皮书)
  • 修改非标准端口后,暴力破解攻击量可下降 99% 以上(来源:华为云安全中心数据)

对于 openEuler 服务器(尤其生产环境),修改 SSH 端口是最基础且高效的安全加固手段,配合防火墙和密钥登录,可大幅提升服务器安全性。

二、操作前提

  1. 环境要求:openEuler 22.03 LTS(确认系统版本:cat /etc/openEuler-release
  2. 权限要求:必须以 root 用户或 sudo 权限执行(普通用户无配置文件修改权限)
  3. 准备工作:
    • 选择未被占用的端口(建议 10000-65535 之间,避免与常用服务端口冲突,如 8080、3306 等)
    • 提前测试目标端口可用性:netstat -tuln | grep 目标端口(无输出则未被占用)

三、分步操作指南(全程实操无坑)

步骤 1:备份 SSH 配置文件(关键!防止配置出错)

修改前务必备份原始配置文件,以便后续回滚:

bash 复制代码
# 备份 sshd_config 到 /etc/ssh 目录下,保留原始权限
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%Y%m%d)
  • 验证备份:ls /etc/ssh/sshd_config.bak_*(显示备份文件即为成功)

步骤 2:修改 SSH 配置文件(sshd_config)

使用 vim 编辑配置文件(openEuler 22.03 默认预装 vim,若未安装可执行 dnf install -y vim):

bash 复制代码
vim /etc/ssh/sshd_config
核心配置修改(3 处关键):
  1. 修改端口号

    • 找到 #Port 22 行(默认注释状态),删除开头的 #,并改为目标端口(示例:Port 23456
    • 注意:可同时保留 22 端口(暂时),避免配置错误导致无法连接,测试成功后再关闭
  2. 禁用密码登录(可选但推荐)

    • 找到 PasswordAuthentication yes,改为 PasswordAuthentication no(强制使用密钥登录,彻底杜绝暴力破解)
    • 前提:已配置 SSH 密钥登录(若未配置,先完成密钥配置再禁用密码,否则会锁死服务器)
  3. 限制 root 直接登录(可选)

    • 找到 PermitRootLogin yes,改为 PermitRootLogin no(通过普通用户 + sudo 登录,提升安全性)
保存退出:
  • Esc 键,输入 :wq(保存并退出);若需放弃修改,输入 :q!

步骤 3:配置防火墙放行新端口(openEuler 22.03 默认用 firewalld)

openEuler 22.03 自带 firewalld 防火墙,必须放行新 SSH 端口,否则无法远程连接:

bash 复制代码
# 1. 永久放行新端口(示例:23456)
firewall-cmd --permanent --add-port=23456/tcp

# 2. 重新加载防火墙规则(使配置生效)
firewall-cmd --reload

# 3. 验证端口是否放行成功
firewall-cmd --list-ports | grep 23456
  • 输出 23456/tcp 即为放行成功

步骤 4:处理 SELinux(openEuler 22.03 默认开启,关键坑点!)

SELinux 会限制 SSH 服务使用非标准端口,若不配置,即使防火墙放行,也会连接失败:

方法 1:临时关闭 SELinux(测试用,不推荐生产环境)
bash 复制代码
setenforce 0
  • 验证:getenforce 输出 Permissive 即为成功(重启后失效)
方法 2:永久配置 SELinux 允许新端口(推荐生产环境)
bash 复制代码
# 1. 安装 SELinux 管理工具(若未安装)
dnf install -y policycoreutils-python-utils

# 2. 添加新端口到 SELinux 的 SSH 端口列表
semanage port -a -t ssh_port_t -p tcp 23456

# 3. 验证配置是否生效
semanage port -l | grep ssh_port_t
  • 输出包含 23456/tcp 即为配置成功

步骤 5:重启 SSH 服务,使配置生效

bash 复制代码
# 重启 sshd 服务
systemctl restart sshd

# 验证服务状态(确保重启成功)
systemctl status sshd
  • 显示 active (running) 即为重启成功

步骤 6:测试新端口连接(关键验证步骤)

本地测试(服务器自身测试):
bash 复制代码
ssh localhost -p 23456
  • 能正常登录即为本地连接成功
远程测试(客户端测试,如 Windows/Mac):
  • Windows(使用 Xshell/putty):主机填写服务器 IP,端口填写 23456
  • Mac/Linux(终端):ssh 用户名@服务器IP -p 23456
  • 若能正常登录,说明配置全部生效!

步骤 7:关闭默认 22 端口(测试成功后执行)

确认新端口可用后,删除 22 端口配置,彻底关闭默认端口:

bash 复制代码
# 1. 编辑 sshd_config,注释或删除 Port 22 行
vim /etc/ssh/sshd_config
# 找到 Port 22,添加 # 注释:#Port 22

# 2. 重启 SSH 服务
systemctl restart sshd

# 3. 防火墙移除 22 端口放行规则
firewall-cmd --permanent --remove-port=22/tcp
firewall-cmd --reload

# 4. SELinux 移除 22 端口(可选,若需彻底禁用)
semanage port -d -t ssh_port_t -p tcp 22

四、常见问题排查(避坑指南)

问题 1:修改后无法连接新端口?

  • 排查步骤:
    1. 检查 SSH 服务状态:systemctl status sshd(是否有报错,如端口被占用)
    2. 检查防火墙端口:firewall-cmd --list-ports | grep 新端口(是否放行)
    3. 检查 SELinux 配置:semanage port -l | grep ssh_port_t(是否包含新端口)
    4. 检查端口是否被占用:netstat -tuln | grep 新端口(若被占用,更换其他端口)

问题 2:SELinux 配置报错「ValueError: Port tcp/23456 already defined」?

  • 原因:该端口已被其他 SELinux 类型占用
  • 解决:更换新的端口,或查看端口占用类型:semanage port -l | grep 23456

问题 3:重启 SSH 服务报错「Job for sshd.service failed because the control process exited with error code」?

  • 原因:sshd_config 配置文件语法错误(如端口号格式错误、关键字拼写错误)
  • 解决:检查配置文件语法:sshd -t(会提示具体错误行,如 Bad configuration option: Portt

五、安全加固进阶建议

  1. 强制使用 SSH 密钥登录

    • 生成密钥对:ssh-keygen -t ed25519(ed25519 算法比 RSA 更安全高效)
    • 上传公钥到服务器:ssh-copy-id -p 新端口 用户名@服务器IP
    • 禁用密码登录:PasswordAuthentication no(已在步骤 2 中提及)
  2. 限制登录 IP

    • 在 sshd_config 中添加:AllowUsers 用户名@允许的IP(如 AllowUsers root@192.168.1.0/24
    • 或通过防火墙限制:firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="允许的IP" port protocol="tcp" port="新端口" accept"
  3. 定期更新 SSH 服务

    bash 复制代码
    dnf update -y openssh-server openssh-clients

六、总结

修改 openEuler 22.03 的 SSH 端口核心步骤:备份配置 → 修改端口 → 防火墙放行 → SELinux 配置 → 重启验证。关键在于不要遗漏 SELinux 配置(openEuler 默认开启,很多人踩坑),且测试新端口可用后再关闭 22 端口。

通过这一简单操作,可大幅降低服务器被暴力破解的风险,配合密钥登录和 IP 限制,能构建更安全的远程管理环境。

如果操作过程中遇到问题,欢迎在评论区留言!

相关推荐
JY.yuyu3 小时前
NET地址转换
运维·服务器·网络
乾元3 小时前
把 SLA / SLO 放到网络可观测的核心:从指标到证据链的工程化路径
运维·开发语言·网络·人工智能·网络协议·架构
不吃鱼的羊3 小时前
调试能收到CAN报文,不调试不能收到
网络
广东大榕树信息科技有限公司3 小时前
如何在国产化动环系统中实现智能调控与节能?
运维·网络·物联网·国产动环监控系统·动环监控系统
濊繵3 小时前
Linux网络--数据链路层
linux·运维·网络
南京周全安全3 小时前
安全,在聆听与回答之间生长:威尔德定理赋能智慧安全新生态
安全
speop3 小时前
【datawhale组队学习】|TASK02|结构化输入
网络·人工智能·学习
BullSmall3 小时前
Redis 安全加固终极指南
redis·安全
LCG米3 小时前
时间敏感网络(TSN)交换机在嵌入式实时系统中的实现与应用教程
网络