检查远程主机/端口是否打开 - 不能使用 GNU Netcat 或 NMap - RHEL 7

λ J*_*kas 17 netcat nmap rhel7

在工作中,基础架构团队正在推出以 RHEL7 作为基本操作系统的新虚拟机。这个特定的图像随nmap-ncatNetcat 版本一起提供,并且没有安装 NMap。我们不能在机器上安装任何东西。

以前,我们使用 GNU Netcat,它可以-z选择扫描远程主机/端口以检查它是否打开。像这样的东西:

nc -z -v -w 3 remote.host.name 1234
Run Code Online (Sandbox Code Playgroud)

我如何才能对无法安装的系统上ncat没有-z选项的新版本进行相同的检查nmap

HBr*_*ijn 16

Bash 允许您通过重定向到特殊文件来连接到 TCP 和/或 UDP 端口:

/dev/tcp/host/port 如果 host 是有效的主机名或 Internet 地址,并且 port 是整数端口号或服务名称,则 Bash 会尝试打开相应的 TCP 套接字。

/dev/udp/host/port 如果 host 是有效的主机名或 Internet 地址,并且 port 是整数端口号或服务名称,则 Bash 会尝试打开相应的 UDP 套接字。

打开或创建文件失败会导致重定向失败。

因此,要测试您是否可以连接到 www.example.com 上的端口 80,请执行以下操作:

echo -n > /dev/tcp/www.example.com/80
Run Code Online (Sandbox Code Playgroud)

如果端口被阻止,您将收到“连接被拒绝”消息或超时。

  • 真的吗?事情发生了怎样的变化。 (2认同)

bon*_*ing 9

尽管 Ncat 尚不支持-z,但您可以通过 shell 重定向获得相同的行为:

$ ncat google.com 80 </dev/null >/dev/null && echo "yes"
yes
$ ncat google.com 81 </dev/null >/dev/null && echo "yes"
Ncat: Connection timed out.
$ ncat scanme.nmap.org 1234 </dev/null >/dev/null && echo "yes"
Ncat: Connection refused.
Run Code Online (Sandbox Code Playgroud)

连接超时可以通过该-w选项进行调整。

编辑:Ncat 7.25BETA2引入了-z与 GNU netcat 一样工作的选项,但仅适用于单个端口。如果你需要扫描端口范围,你应该使用 Nmap。