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

The*_*bM8 3 linux nmap

我知道我可以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
Run Code Online (Sandbox Code Playgroud)

有没有办法在主机上做到这一点?不是从远程机器到特定主机。

我知道我能做到

nmap localhost 
Run Code Online (Sandbox Code Playgroud)

但这不是我想要做的,因为我会将命令放入通过所有机器的脚本中。

编辑:

这样,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

Sté*_*las 22

在 Linux 上,您可以使用:

ss -ltu
Run Code Online (Sandbox Code Playgroud)

或者

netstat -ltu
Run Code Online (Sandbox Code Playgroud)

列出正在l使用的 TCP 和UDP 端口。

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

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

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

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

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


ton*_*ioc 6

你也可以使用

sudo lsof -i |grep LISTEN
Run Code Online (Sandbox Code Playgroud)

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