是否可以将本地主机本身当作另一台主机进行端口扫描?

是否可以将本地主机本身当作另一台主机进行端口扫描?

换句话说,当我无法访问另一台机器进行扫描时,我想看看服务器在外面是什么样子。让我举个例子:

情况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     

这里我们看到两种类型:

  1. 套接字监听 0.0.0.0(或 ::,如果您有 IPv6)
  2. 监听 127.0.0.1(或 IPv6 上的 ::1)的套接字

第一种,监听 0.0.0.0 或 ::(任意 IP)将可远程使用,除非防火墙保护。仅在本地主机(127.0.0.1 或 ::1)上监听的套接字只能通过环回接口访问,因此无法远程访问。

此外,您可以将套接字绑定到特定接口,在这种情况下,接口的 IP 将显示在第 3 列,例如 192.168.8.1 - 表示它们只能在该接口上访问。

这与端口扫描不同,因为它不考虑防火墙,但结合读取防火墙配置,这可能是进行设置的好方法,并且仅在配置防火墙后通过端口扫描进行验证。

相关内容