4种查找Linux监听端口的方法
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端口。
Learn Linux/Unix in-depth with real-world projects through our Linux/Unix certification course. Enroll and become a certified expert to boost your career.
使用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系统并确保其安全。