跳转至

14. 端口与服务映射

本章节指导在 RHEL 9(主机名 LinuxDC)上使用 SecureCRT 配置和检查端口与服务映射,配合 SecureFX 传输日志文件。内容涵盖端口检查(ss, netstat, nmap)、服务与端口映射、防火墙配置,明确默认端口使用服务名方式(--add-service)和自定义端口使用端口开放方式(--add-port),以验证服务端口为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 LinuxDC 环境中测试,确保实验一致性。


14.1 前提条件

  • RHEL 9 已安装(参考第 1 章),主机名设置为 LinuxDC
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
  • 使用 SecureFX 传输文件(SFTP 协议)。
  • 具有 root 或 sudo 权限。
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 2 和第 5 章)。
  • 防火墙和 SELinux 启用(参考第 12 章)。
  • 网络连接正常,时间同步配置完成(参考第 4 章)。

💡 提示:端口管理是安全基线的一部分,确保仅开放必要端口。在 RHEL 10 中,防火墙工具 firewalld 支持更多动态规则和 nftables 增强,提升端口管理的灵活性。


14.2 端口与服务管理

14.2.1 检查端口映射

  • 安装检查工具:

    dnf install -y nmap net-tools  # 安装 nmap 和 net-tools
    

  • 检查本地端口:

    ss -tuln  # 显示 TCP/UDP 监听端口(推荐工具)
    netstat -tuln  # 备选:显示监听端口
    cat /etc/services | grep ssh  # 查看服务标准端口映射
    

  • 远程扫描:

    nmap -sT -p 1-65535 localhost  # TCP 扫描本地所有端口
    nmap -sU -p 1-1024 localhost  # UDP 扫描
    

🧠 知识点/etc/services 定义标准服务端口。ss 是 netstat 的现代替代,支持更快的查询。

检查点:输出显示端口(如 2222/tcp)和关联服务。

14.2.2 服务与端口映射

  • 默认端口使用服务名方式:

    firewall-cmd --permanent --add-service=http  # 开放 HTTP 服务(默认 80/tcp)
    firewall-cmd --permanent --add-service=https  # 开放 HTTPS 服务(默认 443/tcp)
    firewall-cmd --permanent --add-service=mysql  # 开放 MySQL 服务(默认 3306/tcp)
    firewall-cmd --permanent --add-service=postgresql  # 开放 PostgreSQL 服务(默认 5432/tcp)
    firewall-cmd --reload
    

  • 自定义端口使用端口开放方式:

    firewall-cmd --permanent --add-port=2222/tcp  # 开放自定义 SSH 端口
    firewall-cmd --reload
    

💡 提示:服务名方式自动处理端口变化,端口方式适合自定义。验证:firewall-cmd --list-all

14.2.3 SELinux 端口上下文

  • 为自定义端口添加 SELinux 标签:
    semanage port -a -t ssh_port_t -p tcp 2222  # 为 SSH 添加 2222 端口上下文
    restorecon -Rv /etc/ssh/sshd_config  # 恢复文件上下文
    systemctl restart sshd
    

🧠 知识点:SELinux 端口标签确保服务安全运行。查看:semanage port -l | grep ssh


14.3 常见问题与排查

🔍 故障排查

  • 问题 1:端口未监听
    解决ss -tuln | grep :2222 检查,确认服务运行(systemctl status sshd)。

  • 问题 2:防火墙阻挡
    解决firewall-cmd --list-ports 检查规则,添加端口或服务。

  • 问题 3:SELinux 拒绝
    解决ausearch -m avc -ts recent 查看拒绝日志,semanage port 修正。

  • 问题 4:远程扫描失败
    解决:检查 nmap 权限(sudo)或网络连通性(ping localhost)。

  • 生成 SOS 报告sos report --only-plugins=networking,firewalld 用于诊断。


14.4 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,检查 SSH 端口映射(2222/tcp)。
  2. 使用 ssnmap 扫描 HTTP 和 HTTPS 端口。
  3. 配置防火墙以支持 MySQL 和 PostgreSQL 服务(默认端口,服务名方式)。
  4. 为自定义 SSH 端口(2222/tcp)配置防火墙(端口开放方式)和 SELinux 上下文。

检查点:端口开放,服务可访问,SELinux 无拒绝。


14.5 自测问题

  • 问题 1:如何查找 SSH 标准端口?
    答案cat /etc/services | grep ssh

  • 问题 2:如何检查当前开放的 TCP 端口?
    答案ss -tuln

  • 问题 3:如何为自定义 SSH 端口(2222)配置防火墙和 SELinux?
    答案firewall-cmd --permanent --add-port=2222/tcpsemanage port -a -t ssh_port_t -p tcp 2222,然后 firewall-cmd --reload


🧾 总结
本章完整介绍了 RHEL 9 端口与服务映射的配置与检查,包括工具使用、防火墙规则和 SELinux 调整。正确管理端口可防止未授权访问,确保系统安全,为后续磁盘存储与网络文件系统提供可靠连接基础。