Linux 列出对外开放的端口

Geo*_*ian 2 security linux linux-networking

我找不到如何列出或“读取 Linux 上打开的端口列表”。我有一个基于 Debian 的服务器。我找到了一系列列出开放端口的命令,但我找不到任何仅列出可以从外部访问的开放端口的命令。我知道 3309 是开放的,但我已将 mySQL 配置为仅回复本地主机,但该端口仍列为开放。再说一遍,我只对对外开放的端口感兴趣。

如果没有这样的命令,也许有一个 grep 来过滤掉仅限内部的端口?

fue*_*ero 6

您好,欢迎来到 ServerFault。

这个怎么样?

ss -tulpen | grep -vEe "\s+127[.]|::1"
Run Code Online (Sandbox Code Playgroud)

这会从输出中删除 127.0.0.0/8 和 ::1 地址。

虽然这确实列出了侦听此框上可到达的地址的所有 TCP 和 UDP 端口,但它并没有告诉您它们是否实际上可以到达。防火墙(IPTables/Netfilter、外部设备)或安全策略(SELinux、SystemD、tcpwrappers)可能仍会阻止访问。

编辑 如果您想知道端口确实可以从外部世界访问,请将主机放置在所述“外部世界”(例如互联网)中,并在针对您的服务器的该主机上运行端口扫描仪(如nmap)。

nmap 示例:

sudo nmap -sS -p1-65535 <your_server's_ip>
Run Code Online (Sandbox Code Playgroud)