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オプションを見て、-OOS検出が有効になっていることを確認しました。特に、このオプションを使用する権限があるのはなぜですかsudo? (注:現在Ubuntu 18.04および20.04を実行しています。)

(注:許可された回答はポートを調べるなど、私の基本的な問題を解決しましたが、コメントセクションの回答では問題が発生した理由を説明しましたnmapsnap

 $ sudo snap connect nmap:network-control

以前はnmap大丈夫だった。

答え1

コンピュータがどのポートを使用しているかを確認したい場合は、検索する必要はありません。ポートを直接一覧表示できます。

netstat -nap
ss -nap

ルートでない場合は、この-pフラグを無視してください。このLISTEN行はあなたにとって重要です。この行フィルタリングを使用できますawk。例えば

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

答え2

まず、「自分のコンピュータがどのポートを使用しているかを確認しようとしています。」次に、ローカルOSが何であるかを知る必要がないので、-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

関連情報