我知道我可以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 9200
但lsof 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
使用的 T
CP 和U
DP 端口。
如果要禁用从端口号和 IP 地址到服务和主机名的转换,请添加-n
选项(对于ss
或netstat
)。
添加-p
选项以查看正在侦听的进程(如果有,某些端口可能像 NFS 一样被内核绑定)(如果您没有超级用户权限,则只会提供以您的名义运行的进程的信息)。
这将列出应用程序正在侦听的端口(对于 UDP,它有一个绑定到它的套接字)。请注意,有些可能仅侦听给定地址(IPv4 和/或 IPv6),这将显示在ss
/的输出中netstat
(0.0.0.0
表示侦听任何IPv4 地址、[::]
任何 IPv6 地址)。即便如此,这并不意味着网络上的给定其他主机可能会像任何防火墙一样通过该端口和该地址联系系统,包括主机防火墙可能会根据或多或少地阻止或屏蔽/重定向该端口上的传入连接复杂的规则(比如只允许来自这个或那个主机的连接,这个或那个源端口,在这个或那个时间,每分钟最多只能这个或那个时间,等等)。
对于主机防火墙配置,您可以查看iptables-save
.
另请注意,如果一个或多个进程正在侦听 TCP 套接字但不接受那里的连接,一旦未决传入连接的数量大于最大积压,连接将不再被接受,并且来自远程主机,它将显示好像端口被阻止了。观察/Recv-Q
输出中的列以发现这些情况(传入连接未被接受并填满队列)。ss
netstat