找出 Linux 中正在监听的端口的 4 种方法
Linux 是一种流行的操作系统,被系统管理员、开发人员和其他技术爱好者广泛使用。管理 Linux 系统的重要任务之一是确定哪些端口正在使用以及哪些端口可用。在本文中,我们将讨论 4 种方法来找出 Linux 中正在侦听的端口。
使用netstat命令
netstat 命令是一个功能强大的工具,它提供有关网络连接、路由表和其他相关统计信息的详细信息。要检查哪些端口正在侦听,您可以使用以下命令 -
$ netstat -ltn
此命令将显示当前正在侦听系统的所有端口的列表。 “-l”选项告诉 netstat 仅显示侦听套接字,“-t”指定 TCP 连接,“-n”显示端口号而不是将其解析为名称。
这是一个示例输出 -
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
输出显示 SSH 守护程序正在侦听端口 22,CUPS 打印服务正在侦听端口 631。
使用 lsof 命令
lsof 命令(“list open files”的缩写)是一个功能强大的工具,可用于列出 Linux 系统上所有打开的文件和网络连接。要找出哪些端口正在侦听,您可以使用以下命令 -
$ sudo lsof -i -P -n | grep LISTEN
此命令将显示系统上处于侦听状态的所有打开的网络连接的列表。 “-i”选项指定我们对网络连接感兴趣,“-P”告诉 lsof 使用端口号而不是服务名称,“-n”禁用主机名解析。
这是一个示例输出 -
sshd 2269 root 3u IPv4 11758 0t0 TCP *:22 (LISTEN)
cupsd 2889 root 7u IPv4 16314 0t0 TCP 127.0.0.1:631 (LISTEN)
输出显示 SSH 守护程序正在侦听端口 22,CUPS 打印服务正在侦听端口 631。
使用 ss 命令
ss 命令是 netstat 命令的现代替代品,并提供类似的功能。要检查哪些端口正在侦听,您可以使用以下命令 -
$ sudo ss -ltn
此命令将显示当前正在侦听系统的所有 TCP 端口的列表。 “-l”选项告诉 ss 仅显示侦听套接字,“-t”指定 TCP 连接,“-n”显示端口号而不是将其解析为名称。
这是一个示例输出 -
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 5 127.0.0.1:631 *:*
输出显示 SSH 守护程序正在侦听端口 22,CUPS 打印服务正在侦听端口 631。
使用 nmap 命令
nmap命令是一个功能强大的工具,可用于网络探索、安全扫描和端口扫描。要检查哪些端口正在远程系统上侦听,您可以使用以下命令 -
$ sudo nmap -sS -p- <remote_ip>
此命令将对远程系统上的所有端口执行 TCP SYN 扫描,并报告哪些端口已打开并正在侦听。 “-sS”选项告诉nmap使用SYN扫描,这是一种隐秘的扫描技术,可以逃避一些网络入侵检测系统。 “-p-”选项告诉 nmap 扫描系统上的所有 65535 端口。
这是一个示例输出 -
Starting Nmap 7.60 ( https://nmap.org ) at 2023-03-23 10:00 PDT
Nmap scan report for <remote_ip>
Host is up (0.035s latency).
Not shown: 65534 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
输出显示远程系统已打开并侦听端口 22、80 和 443。
使用 fusion 命令
fusion 命令是一个简单的实用程序,它使用特定文件、目录或套接字来识别进程。要使用 fusion 命令检查哪些端口正在侦听,请使用以下命令 -
$ sudo fuser -n tcp -v 1-65535
此命令将显示使用 TCP 端口 1 到 65535 的所有进程。让我们分解一下命令中使用的选项 -
-n tcp 告诉 fusionr 仅显示 TCP 连接
-v 告诉 fusionr 显示更详细的输出
fusion 命令的输出将显示使用 TCP 端口的进程列表及其各自的 PID。
使用 lshw 命令
lshw 命令是一个硬件信息实用程序,也可用于显示网络信息,包括打开的端口。要使用 lshw 命令检查哪些端口正在侦听,请使用以下命令 -
$ sudo lshw -class network -short
此命令将显示系统上的网络设备列表,以及它们各自的驱动程序和开放端口。
使用 iptables 命令
iptables 命令是一个功能强大的防火墙实用程序,可用于显示和操作防火墙规则,包括开放端口。要使用 iptables 命令检查哪些端口正在侦听,请使用以下命令 -
$ sudo iptables -L -n
此命令将显示系统上当前的防火墙规则,包括允许通过防火墙的任何开放端口。
结论
对于系统管理员、开发人员和安全专业人员来说,识别 Linux 系统上正在侦听的端口是一项重要任务。在本文中,我们讨论了在 Linux 中查找端口正在侦听的 4 种方法:使用 netstat 命令、使用 lsof 命令、使用 ss 命令和使用 nmap 命令。这些方法中的每一种都有其自身的优点和缺点,您应该选择最适合您的需求的一种。有了这些工具,您可以更好地管理您的 Linux 系统并保证其安全。