问题描述
我想看看我的机器上有哪些端口是打开的,例如我的机器正在监听哪些端口。例如。端口80,如果我已经安装了一个Web服务器,依此类推。
有没有这方面的命令?
最佳解决思路
nmap
Nmap(“Network Mapper”)是一款免费的开源工具,用于网络探索或安全审计
nmap 192.168.1.33
内部PC或nmap external ip address
更多信息man nmap
次佳解决思路
我一直使用这个:
netstat -ntlp | grep LISTEN
第三种解决思路
其他好的方法来找出哪些端口是监听和你的防火墙规则是什么:
-
sudo netstat -tulpn
-
sudo ufw status
第四种思路
这足以表明有一个进程在端口80(标准Web服务器端口号)上侦听IP地址0.0.0.0
(需要它以回复任何请求)。在我的情况下,这表明它是Web服务器lighttpd
$ sudo netstat -ntlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2495/lighttpd
如果您以后想要确保您通过防火墙允许的唯一功能是端口80,我经常使用www.grc.com上的ShieldsUp执行防火墙测试。
第五种思路
要列出打开的端口,请使用netstat
命令。
例如:
$ sudo netstat -tulpn | grep LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5452/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1037/cupsd
tcp6 0 0 ::1:631 :::* LISTEN 1037/cupsd
在上面的例子中,三个服务被绑定到回送地址。
绑定到回送地址”127.0.0.1″的IPv4服务仅在本地计算机上可用。 IPv6的等效回送地址是”::1″。 IPv4地址”0.0.0.0″表示“任何IP地址”,这意味着其他机器可能会连接到特定端口上的任何本地配置的网络接口。
另一种方法是使用lsof
命令:
$ sudo lsof -nP -i | grep LISTEN
cupsd 1037 root 9u IPv6 11276 0t0 TCP [::1]:631 (LISTEN)
cupsd 1037 root 10u IPv4 11277 0t0 TCP 127.0.0.1:631 (LISTEN)
dnsmasq 5452 nobody 5u IPv4 212707 0t0 TCP 127.0.0.1:53 (LISTEN)
欲了解更多详情,请参阅man netstat
或man lsof
。
第六种思路
sudo iptables -L
将列出您的电脑的端口规则。请注意,如果您使用ufw或shorewall防火墙,输出可能难以阅读。在这种情况下,请使用sudo ufw status
。
这并不是非常有用,因为即使端口是开放的,如果在该端口上没有进程侦听,访问仍将被拒绝。
第七种思路
如果您正在寻找对服务器机器或本地端口的持续监控,我认为您还可以使用nmap的图形版本,例如Zenmap获取更详细的版本
Zenmap是Nmap Security Scanner的官方图形用户界面(GUI)。
支持可用的(Linux,Windows,Mac OS X,BSD等)
看看这个工具视图: