在 Ubuntu 上运行 Nmap

在 Ubuntu 上运行 Nmap

我正在运行一个 python 脚本,该脚本根据给定的一组参数执行 nmap。目的是使此过程自动化,这样我就根本不需要与 cli 交互。每次运行脚本时,都会提示错误消息:

 'You requested a scan type which requires root priveleges.\nQUITTING!\n'

我知道我可以在命令前面加上“sudo”,但我的脚本的目的是根本不与 CLI 交互。我将脚本的所有权交给了我的用户,但仍然出现相同的错误。有没有办法让我每次都可以以超级用户的身份运行 nmap,而不必给出 sudo 命令?非常感谢大家的帮助!

答案1

Nmap 需要 root 权限才能执行许多操作(见下文)。因此,使用各种方案(sudo NOPASSWD、setuid 等)来允许用户在不提供 root 密码的情况下运行它是一种很诱人的做法。但这是极其危险,因为使用 Nmap 启动任何其他命令或 shell 都很简单。例如:nmap --script <(echo 'os.execute("/bin/sh")')

幸运的是,Nmap 有对 Linux 功能的实验性支持CAP_NET_RAW。通过安装具有、CAP_NET_ADMIN和功能的 Nmap CAP_NET_BIND_SERVICE,您可以更安全地允许非特权用户运行它。Nmap 本身无法检测到它具有这些功能,因此您必须使用 选项--privileged通知它尝试使用它们,而不管 UID 如何。上面的链接中提供了更多讨论。


Nmap 需要 root 权限才能执行除以下操作之外的操作:

  • TCP 连接扫描 ( -sT)
  • 反向 DNS 名称解析
  • 除 TCP 连接之外的主机发现 (“ping”) 方法 ( -PS)
  • 服务和应用程序版本检测(-sV
  • 大多数 Nmap 脚本引擎 (NSE) 脚本

答案2

一个解决方案是将该特定命令添加到sudoers文件中,

Cmnd_Alias    NMAP = /path/to/nmap, /path/to/script

username      ALL=(ALL:ALL) NOPASSWD: NMAP

类似这样的操作可以让你编写sudo命令脚本,但不需要专门为该命令输入密码。你可以选择只为该脚本/用户组合执行此操作,以便脚本中的所有内容都以 root 身份运行,或者你可以专门为命令执行此操作nmap,并sudo在脚本中包含许多条目。

选择你的毒药...

相关内容