一种查找主机上开放端口的方法

一种查找主机上开放端口的方法

我知道我可以用来nmap查看特定机器上打开了哪些端口。但我需要的是一种从主机端本身获取它的方法。

目前,如果我nmap在一台机器上使用来检查另一台机器,我会得到一个示例:

smb:~# nmap 192.168.1.4

PORT    STATE  SERVICE
25/tcp  open   smtp
80/tcp  open   http
113/tcp closed ident
143/tcp open   imap
443/tcp open   https
465/tcp open   smtps
587/tcp open   submission
993/tcp open   imaps

有没有办法在主机本身上执行此操作?不是从远程机器到特定主机。

我知道我能做到

nmap localhost 

但这不是我想要做的,因为我将把命令放入一个遍历所有机器的脚本中。

编辑:

这样,nmap展示了22 5000 5001 5432 6002 7103 7106 7201 9200lsof command展示了我22 5000 5001 5432 5601 6002 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7201 7210 11211 27017

答案1

在 Linux 上,您可以使用:

ss -ltu

或者

netstat -ltu

列出l伊斯泰宁 TCP 和UDP 端口。

如果您想要禁用从端口号和 IP 地址到服务和主机名的转换,请添加该-n选项(对于ss或)。netstat

添加-p选项以查看正在侦听的进程(如果有,某些端口可能由内核绑定,如 NFS)(如果您没有超级用户权限,则只会提供以您的名义运行的进程的信息)。

这将列出应用程序正在侦听的端口(对于 UDP,它有一个绑定到它的套接字)。请注意,有些可能仅侦听给定地址(IPv4 和/或 IPv6),这将显示在ss/的输出中netstat0.0.0.0表示侦听任何IPv4 地址,[::]在任何 IPv6 地址上)。即使如此,这并不意味着网络上的给定其他主机可以在该端口和该地址上联系系统,因为任何防火墙(包括主机防火墙)可能会根据或多或少的情况阻止或屏蔽/重定向该端口上的传入连接复杂的规则(例如只允许在这个或那个时间来自这个或那个主机、这个或那个源端口的连接以及每分钟最多这个或那个次数等)。

对于主机防火墙配置,您可以查看 的输出iptables-save

另请注意,如果一个或多个进程正在侦听 TCP 套接字,但没有接受连接数,一旦待处理的传入连接数大于最大积压量,将不再接受连接,并且来自远程主机的连接将显示为好像该端口被阻止。观察/Recv-Q输出中的列以发现这些情况(传入连接不被接受并填满队列)。ssnetstat

答案2

您还可以使用

sudo lsof -i |grep LISTEN

这将显示当前正在侦听的所有端口。

答案3

只需做nmap localhostnmap 127.0.0.1

编辑:

还有ss -lntu来自https://superuser.com/questions/529830/get-a-list-of-open-ports-in-linux#529844

答案4

查看应用程序/端口组合使用的列表

cat /etc/services

要查看打开的 TCP/UDP 端口,请在终端中键入:

netstat -lntu

或者

ss -lntu

相关内容