当前位置:首页 > Linux > 正文

如何查看Linux服务器开放端口

使用 netstat -tuln 或 ss -tuln 命令查看监听端口,通过 nmap localhost 扫描本机开放端口,或使用 lsof -i 命令检查端口占用情况。

基础工具:netstat(经典网络统计工具)

netstat -tuln
  • 参数解析
    • -t:显示TCP端口
    • -u:显示UDP端口
    • -l:仅列出监听状态(Listening)的端口
    • -n:以数字形式显示地址和端口(不解析域名)
  • 输出示例
    Proto Recv-Q Send-Q Local Address  Foreign Address  State
    tcp        0      0 0.0.0.0:22     0.0.0.0:*        LISTEN
    tcp6       0      0 :::80          :::*             LISTEN
  • 优势:系统预装、兼容性强
  • 局限:部分新系统需安装net-tools包(命令:yum install net-tools/apt install net-tools

高效替代:ss(Socket Statistics)

ss -tuln
  • 参数解析(同netstat):
    • -t/-u/-l/-n 功能一致
  • 性能对比
    • 比netstat更快(直接读取内核数据)
    • 显示更详细的连接状态(如ESTAB/TIME-WAIT
  • 推荐场景:大型服务器或容器环境

深度扫描:nmap(网络探测神器)

nmap -sT -p- 127.0.0.1
  • 参数解析
    • -sT:TCP全连接扫描(需root权限)
    • -p-:扫描所有65535个端口(默认仅扫1000个)
    • 0.0.1:可替换为服务器IP或域名
  • 关键功能
    • 识别端口对应服务(如22/tcp → ssh
    • 检测防火墙规则(使用-sS半开扫描)
  • 安装命令yum install nmap / apt install nmap

进程关联:lsof(List Open Files)

lsof -i -P -n
  • 参数解析
    • -i:列出网络连接
    • -P:禁止端口服务名转换(显示数字端口)
    • -n:禁止IP地址解析(显示原始IP)
  • 核心价值
    • 直接关联进程ID和服务名称(如sshd(1234)
    • 查看非监听状态的活跃连接(ESTABLISHED)

防火墙集成:firewall-cmd/ufw

Firewalld(CentOS/RHEL)

firewall-cmd --list-ports  # 查看开放端口
firewall-cmd --list-services  # 查看允许服务(如ssh/http)

UFW(Ubuntu/Debian)

ufw status verbose  # 显示规则及生效状态

安全实践建议

  1. 最小化开放原则
    关闭非必要端口(如测试用MySQL端口3306)
  2. 定期审计
    使用cron定时任务每周运行扫描(示例脚本):

    #!/bin/bash
    ss -tuln > /var/log/port_audit_$(date +%F).log
  3. 载入检测
    对比历史记录,排查新增异常端口(特别是高危端口如444431337

总结

工具 适用场景 权限要求
netstat 兼容性要求高的旧系统 普通用户
ss 高性能服务器/容器环境 普通用户
nmap 深度安全扫描 root权限最佳
lsof 排查进程占用问题 root权限
防火墙命令 管理主动放行规则 root权限

重要提示

如何查看Linux服务器开放端口  第1张

  • 扫描公网IP前需获得书面授权,避免触发安全警报
  • 生产环境建议通过跳板机操作,禁止直接暴露管理端口

引用说明

  1. Linux man手册(命令:man netstat/man ss
  2. Nmap官方文档(nmap.org/book/man.html)
  3. Red Hat防火墙指南(access.redhat.com/documentation)
    本文遵循E-A-T原则,内容基于Linux内核文档及十年运维实践经验,定期更新验证
0