四种方法查看 Linux 中正在监听的端口
Linux 是一款流行的操作系统,被系统管理员、开发人员和其他技术爱好者广泛使用。管理 Linux 系统的重要任务之一是识别哪些端口正在使用以及哪些端口可用。在本文中,我们将讨论四种方法查看 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 端口。
使用 fuser 命令
fuser 命令是一个简单的实用程序,用于识别使用特定文件、目录或套接字的进程。要使用 fuser 命令检查哪些端口正在监听,请使用以下命令 -
$ sudo fuser -n tcp -v 1-65535
此命令将显示使用 TCP 端口 1 至 65535 的所有进程。让我们分解一下命令中使用的选项 -
-n tcp 指示 fuser 仅显示 TCP 连接
-v 指示 fuser 显示更详细的输出
fuser 命令的输出将显示使用 TCP 端口的进程列表及其各自的 PID。
使用 lshw 命令
lshw 命令是一个硬件信息实用程序,也可用于显示网络信息,包括开放端口。要使用 lshw 命令检查哪些端口正在监听,请使用以下命令 -
$ sudo lshw -class network -short
此命令将显示系统上的网络设备列表,以及它们各自的驱动程序和开放端口。
使用 iptables 命令
iptables 命令是一个功能强大的防火墙实用程序,可用于显示和操作防火墙规则,包括开放端口。要使用 iptables 命令检查哪些端口正在监听,请使用以下命令 -
$ sudo iptables -L -n
此命令将显示系统上当前的防火墙规则,包括允许通过防火墙的任何开放端口。
结论
对于系统管理员、开发人员和安全专业人员来说,识别 Linux 系统上哪些端口正在监听是一项重要任务。在本文中,我们讨论了四种查看 Linux 中正在监听的端口的方法:使用 netstat 命令、使用 lsof 命令、使用 ss 命令和使用 nmap 命令。每种方法都有各自的优缺点,您应该选择最符合您需求的方法。有了这些工具,您可以更好地管理您的 Linux 系统并确保其安全。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

