Linux

Linux 列出對外開放的埠

  • February 8, 2021

我找不到如何列出或“讀取 Linux 上打開的埠列表”。我有一個基於 Debian 的伺服器。我找到了一系列列出開放埠的命令,但我找不到任何僅列出可以從外部訪問的開放埠的命令。我知道 3309 是開放的,但我已將 mySQL 配置為僅回複本地主機,但埠仍列為開放。同樣,我只對對外開放的埠感興趣。

如果沒有這樣的命令,也許有一個 grep 來過濾掉內部唯一的埠?

您可能找不到一個簡單的答案,因為這是一個比您可能意識到的更複雜的問題。至少有 3 個可能的興趣點可供查看:

  1. 伺服器上正在偵聽的埠。netstat -an | grep LISTEN會給你一個大致的想法。查找 0.0.0.0 的源地址或特定的“外部”介面(如果適用,不要忘記 IPv6 地址)。
  2. 伺服器防火牆(通常是 iptables)。iptables -l將給出一些關於允許哪些流量的想法。而且,它應該向您顯示在伺服器級別完成的任何 NAT/埠重定向。例如,您的埠 3309 可能會重定向到 127.0.0.1:3309。因此,即使您的 mysql 可能只在本地主機上偵聽,它在技術上也可以從“外部”世界訪問。
  3. 您的邊緣防火牆。這是您的網際網路路由器/網關。在這裡做的最簡單的事情是去“外部世界”中的伺服器(無論是開放的網際網路,還是網路上的其他地方,等等 - 這在問題中沒有明確定義),然後執行nmap <your-external-ip>並查看它報告為打開。這樣做的缺點是如果您的伺服器沒有專用 IP,您可能會看到很多不適用於您的特定伺服器的東西。

這三件事會回答你的大部分問題,但我相信其他人會有更多的想法/建議。

引用自:https://serverfault.com/questions/1052768