为什么即使我使用 sudo 也无法使用 -O 选项运行 nmap

为什么即使我使用 sudo 也无法使用 -O 选项运行 nmap

我正在尝试确定我的机器正在使用哪些端口。我在网上找到一篇文章,列出了一种方法,如下:

$ sudo nmap -sT -O localhost

我相信这会给我一个监听 TCP 数据包的所有端口的列表。但是,当我输入此命令时,我得到以下结果:

Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-02 21:07 EDT
socket troubles in HostOsScan: Permission denied (13)

如果我以 sudo 身份运行,我怎么可能缺少在我的机器上运行某些东西的权限?

我尝试运行:

$ sudo nmap -sT  localhost

并得到:

Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-02 21:28 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
631/tcp open  ipp

只是没有争论地尝试nmap,再次被拒绝许可!?

$ sudo nmap localhost
Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-03 11:05 EDT
Couldn't open a raw socket. Error: Permission denied (13)

查看nmap's --help选项,我发现它-O启用了操作系统检测。为什么我不应该有使用此选项的权限 - 特别是与sudo? (注:我目前运行的是 Ubuntu 18.04 和 20.04)

(注意:接受的答案解决了我的根本问题 - 查看端口,但评论部分的答案解释了为什么我遇到问题nmap。显然,因为我安装了snap,所以我还需要执行:

 $ sudo snap connect nmap:network-control

之前nmap可以正常工作

答案1

如果您试图确定您的计算机正在使用哪些端口,则无需扫描。您可以直接列出端口

netstat -nap
ss -nap

如果您不是 root,请忽略该-p标志。这些LISTEN行对您来说很重要,您可以使用 过滤这些行awk。例如

netstat -nap | awk 'NR==1 || /LISTEN/'

答案2

首先,“我正在尝试确定我的机器正在使用哪些端口。”然后删除 -O,因为您不需要知道您的本地操作系统是什么。

可能需要更多信息。

  1. 你运行什么操作系统?也许包括哪个内核
  2. 您运行防火墙吗?或 Fail2ban 或任何相关的安全服务?
  3. 可以安装旧版本吗?我从 Ubuntu 存储库安装的 Nmap v7.80 没有显示同样的问题。
  4. 您使用的是虚拟机、VPS 还是托管系统?
  5. 这是一个干净的安装,几乎没有安装程序吗?如果是这样,您就有一个安静的系统,没有太多噪音,也没有太多可检测的内容。
  6. 尝试过其他操作系统检测 Nmap 选项吗? --osscan-limit --osscan-guess --max-os-tries关联

缺少检测到的 TCP 端口会使操作系统检测变得困难。操作系统检测的工作原理是回复 TCP 请求。这里有更好的解释https://nmap.org/book/osdetect-methods.html

相关内容