换句话说,当我无法访问另一台机器进行扫描时,我想看看服务器在外面是什么样子。让我举个例子:
情况1:当我通过 SSH 连接到我的 VPS(即 Ubuntu Server)时,端口扫描的结果如下:
[email protected]:~$ nmap -p 1-20000 77.77.77.70
Nmap scan report for 77.77.77.70
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
443/tcp open https
8142/tcp open unknown
11273/tcp open unknown
18142/tcp open unknown
18143/tcp open unknown
18144/tcp open unknown
18145/tcp open unknown
18146/tcp open unknown
18147/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds
案例 2:当我从我的 Ubuntu 桌面机器执行相同的命令时,结果会被 VPS 的防火墙过滤,如下所示:
user@Desktop:~$ sudo nmap -p 1-20000 77.77.77.70
Nmap scan report for 77.77.77.70
PORT STATE SERVICE
80/tcp open http
443/tcp open https
11273/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 4298.23 seconds
所以,我的问题是:有没有办法从 VPS 本身实现“案例 2”中的结果?使用nmap
不是强制性的。
答案1
简短的回答是:不,您无法通过从内部查看服务器的外观来了解服务器的外观。
长答案:正如您自己所写,外部扫描会受到防火墙以及其他可能介入的网络组件的影响。理论上,您可以通过在 VPS 上设置的虚拟网络来模拟这种影响。但这需要大量工作,您必须确切知道这些组件是什么以及它们是如何配置的。唯一可行的方法是找到可以从中进行扫描的外部主机。
答案2
如果你没有防火墙,你可以运行netstat -ln --inet --inet6
列出监听套接字。这将显示哪些接口监听哪些接口。
快速示例:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5298 0.0.0.0:* LISTEN
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
tcp 0 0 127.0.0.1:1080 0.0.0.0:* LISTEN
这里我们看到两种类型:
- 套接字监听 0.0.0.0(或 ::,如果您有 IPv6)
- 监听 127.0.0.1(或 IPv6 上的 ::1)的套接字
第一种,监听 0.0.0.0 或 ::(任意 IP)将可远程使用,除非防火墙保护。仅在本地主机(127.0.0.1 或 ::1)上监听的套接字只能通过环回接口访问,因此无法远程访问。
此外,您可以将套接字绑定到特定接口,在这种情况下,接口的 IP 将显示在第 3 列,例如 192.168.8.1 - 表示它们只能在该接口上访问。
这与端口扫描不同,因为它不考虑防火墙,但结合读取防火墙配置,这可能是进行设置的好方法,并且仅在配置防火墙后通过端口扫描进行验证。