Nmap 为 运行 时服务终止

Service dies when Nmap is run

我有一个奇怪的问题。
我在集群中的众多服务器之一的端口 8888 上有一项服务 运行ning。
当我 运行 nmap 在我的网关上获取我网络内的所有 IP 时,该服务奇迹般地消失了。由于 nmap 也进行端口扫描,因此可能与它有关。我不知道。 我使用的 nmap 命令是这样的:

sudo nmap -oX ${FILE_NAME} ${IP_DOMAIN} -A -O --osscan-guess

有人能告诉我可能会发生什么吗?

虽然 Nmap 开发人员试图限制危险,Nmap scans can still crash services。导致服务崩溃(而不是使整个机器崩溃)的最有可能的罪魁祸首是服务版本检测扫描阶段(-sV,在您的命令中暗示为 -A)。此扫描向服务发送一系列数据包,以尝试引发可以与 Nmap 的已知服务数据库匹配的响应。当找到匹配时,Nmap 停止发送探测。这意味着未知服务可以获得 很多 发送给它的探测,其中包含二进制数据、命令字符串和您的服务不期望的其他数据。

编写良好的网络服务不会因任何输入而崩溃;您的服务有某种错误。避免这种崩溃通常意味着避免扫描该服务:

  • 您可以在 nmap-service-probes 数据文件中使用 the Exclude directive 来指示 Nmap 从不将这些服务探测发送到端口 8888。
  • 您可以通过更改使用 -p 扫描的端口来完全避免扫描端口 8888。更高版本的 Nmap 也将支持 --exclude-ports 选项。
  • 您可以确保您使用的是最新版本的Nmap。如果您的服务的指纹被添加到 nmap-service-probes 文件中,那么 Nmap 将在检测到它时停止发送探测器,这可能会避免发送导致它崩溃的稍后探测器。
  • 您可以使用 --version-intensity 选项降低服务扫描的强度。这可以防止 Nmap 发送如此多的服务探测,这可能会消除导致您的服务崩溃的探测。

最后,如果此服务是标准服务而不是您自己网络的自定义服务,您可以将其报告给 The Network Scanning Watch List,这样其他用户也可以避免崩溃。