web-dev-qa-db-ja.com

UbuntuでNmapを実行する

特定のパラメーターセットでnmapを実行するpythonスクリプトを実行しています。ポイントはこれを自動化することですので、私は全くCLIと対話する必要はありません。スクリプトを実行するたびに、エラーメッセージが表示されます。

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

私はコマンドの前に「Sudo」を置くことができることを理解していますが、私のスクリプトの目標はcliとまったく対話しないことです。ユーザーにスクリプトの所有権を与えましたが、それでも同じエラーが発生します。 Sudoコマンドを実行しなくても、毎回スーパーユーザーとしてnmapを実行できる方法はありますか?すべての助けに感謝します!

3
John Wick

Nmapには、多くのことに対するルート権限が必要です(以下を参照)。このため、ユーザーがルートパスワードを指定せずに実行できるように、さまざまなスキーム(Sudo NOPASSWD、setuidなど)を使用するのは魅力的です。ただし、これは非常に危険です。これは、Nmapを使用して他のコマンドまたはシェルを起動するのは簡単だからです。例:nmap --script <(echo 'os.execute("/bin/sh")')

幸い、Nmapには Linux機能の実験的サポート があります。 NmapをCAP_NET_RAWCAP_NET_ADMIN、およびCAP_NET_BIND_SERVICEの機能とともにインストールすることにより、権限のないユーザーがより安全に実行できるようにすることができます。 Nmap自体はこれらの機能があることを検出できないため、UIDに関係なく--privilegedオプションを使用してそれらの使用を試みるよう通知する必要があります。詳細については、上記のリンクをご覧ください。


Nmapでは、以下を除くすべてに対してルート権限が必要です。

  • TCP接続スキャン(-sT
  • リバースDNS名前解決
  • TCP Connect(-PS)を除くホスト検出(「ping」)メソッド
  • サービスおよびアプリケーションのバージョン検出(-sV
  • ほとんどのNmap Scripting Engine(NSE)スクリプト
2
bonsaiviking

1つの解決策は、その特定のコマンドをsudoersファイルに追加することです。

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

username      ALL=(ALL:ALL) NOPASSWD: NMAP

この行に沿って何かを行うと、Sudoコマンドをスクリプト化できますが、そのコマンドのパスワードを特に入力する必要はありません。スクリプト内のすべてがルートとして実行されるように、そのスクリプト/ユーザーコンボに対してのみ行うことを選択できます。または、具体的にnmapコマンドに対して実行し、スクリプトに多くのSudoエントリを含めることができます。

あなたの毒を選ぶ...

0