グラフィカルなネットワーク・スキャナー、Umit
Umitは、ネットワーク・ポート・スキャナーNmapのための使いやすいグラフィカル・インタフェースで、特に、スキャン・プロファイルの保存や、保存しておいたスキャンの結果を検索したり比較したりする機能が便利だ。スキャンの方法を指定するプロファイルは、スキャンのソース情報を変更したり、スキャンするホストまたはスキャンしないホストを明示的に指定したりできるほか、さまざまな高度なオプションを設定することができる。
UmitのパッケージはUbuntu Intrepid用は提供されているが、Hardy用はない。また、FedoraやopenSUSE用もない。そこで、今回の試用では、Nmap 4.53がインストールされている64ビットFedora 9マシン上でUmit 0.9.5をソースからビルドした。
UmitはPythonで書かれており、グラフィカル・インタフェースにはGTK+ツールキットを利用している。したがって、Nmapのほかに、PythonとGTK+とGTK+ Pythonバインディングもインストールしておく必要がある。さらに、SQLiteに対するPySQLite2 Pythonバインディングもインストールしておかなければならない。このほか、プログラムの実行を高速化する特殊なPythonコンパイラーPsycoをインストールしておくことをお勧めする。いずれも、インストールは容易だ。Umitサイトでは、Debian/Ubuntuの場合、「apt-get install nmap python2.4 python2.4-gtk2 python2.4-pysqlite2 python2.4-psyco
」によるインストールが推奨されている。Fedora 9マシンの場合は、必要なパッケージはほとんどインストールされており、新たにインストールが必要なのはpython-sqlite2とpython-psycoぐらいだろう。インストールは「yum install pygtk2 python-sqlite2 nmap python-psyco
」を実行すればよい。
必要なソフトウェアが準備できたら、通常の方法でsetup.pyを実行する。これでUmitがインストールされる。
$ tar xjvf /.../umit-0.9.5.tar.bz2 $ cd umit* $ sudo python setup.py install
インストールができたらUmitを試用してみよう。umit
を実行してTargetフィールドにlocalhostと入力しScanボタンをクリックする。すると、右に示したようなウィンドウが表示されるはずだ。ツールバーの直下にはタブがあり、どのプロファイルでどのホスト(ターゲット)がスキャンされたかが表示されている。下の例では、プロファイルはOperating System Detection、スキャンのターゲットはlocalhostとなっている。ターゲットは明示的に指定したものだが、プロファイルはデフォルトだ。
別の方法でスキャンしたい場合は、まず、New Scanボタンを押すかホットキーのCtrl-Tで新しいタブを開く。フォーカスはTargetフィールドにあるため、マウスを使わなくても、そのまま新しいスキャンの設定に進むことができる。ターゲットをTargetフィールドに入力してEnterキーを押すと、Profileフィールドに移動する。ここでは、上下の矢印キーを使ってプロファイルを選ぶ。そして、Enterを押すとスキャンが始まる。プロファイルはマウスで選ぶこともできるが、キーボードだけで使えるように作られている点は好ましい。しかし、フォーカスが、Umitを最初に起動したときはNew Scanボタンにあり、Ctrl-Tで開いたタブではTargetフィールドにあるのはなぜだろう。
スキャンした結果はホストまたはサービスごとに表示することができる。今のようにlocalhostをスキャンした場合はホストごとに表示した方がわかりやすい。一方、ネットワーク全体をスキャンした場合はサービスごとに表示するとよい。この場合、ウィンドウの左側、中央当たりにあるServicesボタンをクリックする。すると、ウィンドウの左にあるリストビューにサービスの一覧が表示されるので、そのいずれかを選ぶと、ウィンドウの右側にあるPorts/Hostsにそのネットワークでそのサービスを提供しているホストが一覧表示される。
ほかのタブを見てみよう。画面の中央にあるNmap Outputタブを開くと、Nmapを直接実行すればコンソールに表示されたはずの出力を確認することができる。また、Host Detailsタブでは、そのホストでスキャンされたポートの数とその内訳(閉じているポート、フィルターされているポート、開いているポート)を見ることができる。Operating System Detectionを行った場合はオペレーティング・システムに関する情報もこのタブに表示される。Scan Detailsタブを開くと、スキャンに使われたNmapコマンドとNmapのバージョンがわかる。また、スキャンの開始時刻と終了時刻、スキャンされたホストの数、そのうち動作中だったホストの数、開いていたポートの総数(スキャン全体で)も表示される。
スキャンした結果は保存しておくことができる。保存されるのは、Host DetailsタブとScan Detailsタブの情報、スキャンで発見したホストとポートの一覧だ。最近保存されたスキャンはScanメニューに一覧表示されるので、ここから過去のスキャンに簡単に戻ることができる。
さて、そのほかのメニューを見てみよう。Profileメニューでは、現在Scanタブで選択されているプロファイルを対象にNew Profile with Selected、Edit Selected Profile、Delete Selected Profileが可能。中でも、既存のプロファイルを利用して新たなプロファイルを作る機能は、既存のプロファイルをカスタマイズするなど、少しだけ変更したいときに利用でき、きわめて便利だ。
Toolsメニューには、Command Wizard、Compare Results、Search Scan Resultsというメニュー項目がある。Command Wizardはツールバーからも起動できる。ウィザードとは言ってもProfileメニューのNew Profileと大差はないようだ。Command Wizardの場合、最初のページで初心者モードと熟練者モードのいずれかを選ぶ。主な違いは、初心者モードでは一部のオプションが省かれていること。また、熟練者モードでは1つのダイアログ・ウィンドウにすべてのオプションがタブ形式で並んでいるが、初心者モードでは同じタブがページとして1枚ずつ表示され、BackボタンとForwardボタンをクリックしてページを移動する形式になっている。
以下、熟練者モードの場合を見てみよう。Profileタブでは、Profileの名前などの説明的なデータを設定する。Scanタブでは、スキャンの方法、タイミングと再試行について設定する。Pingタブでは、Nmapがスキャン中にピングを使うかどうか、使うならどのように使うかを設定する。Targetタブでは、外部ファイルを使ってホストを明示的に指定したりホストまたはネットワークを除外したりすることができる。Umitでは、通常、スキャンするホストまたはネットワークは、プロファイルを使ってネットワークをスキャンするときに指示する。しかし、プロファイルの中で数台のホストを明示的に除外できれば便利だ。というのは、誤ってファイアウォールのマシンをスキャンしてしまい、ファイアウォールが警報を発するという事態が避けられるからだ。Otherタブには、ほかのタブには分類できないオプションがある。IPパケットを分割するかどうかや、パケット寿命の明示的な指定などだ。Advancedタブでは、タイムアウト、並行して実行するジョブの最大数を指定する。
ToolsメニューのCompare Resultsでは、保存されている2つのスキャン結果を比較し、違いをツリー状に表示することができる。ツリーは色分けされており、一方にはあるが他方にはない部分や両方にあるが異なっている部分が一目瞭然に表示される。localhostを2回スキャンした間にMySQLデーモンを起動した場合の例を右に示す。
ToolsメニューのSearch Scan Resultsでは、現在あるScanタブを検索することができる。プロファイル名/ホスト名/ネットワーク名、IPアドレス/MACアドレス、ポート番号とポートの状態(開いている、フィルターされている、閉じている)、そのマシンで動作しているオペレーティング・システムについて検索可能。保存してあるスキャン結果も検索できる。SSHデーモンを検索した例を左に示す。
Umitでは、ポート・スキャンの結果を保存でき、2つのスキャン結果の違いを色分けして表示できるため、ネットワークのポート・フィルタリングの変化を一目で知ることができる。また、保存したスキャン結果を多様なパラメーターで検索できるのも便利だ。さらに、既存のプロファイルから簡単に新しいプロファイルを作ったり、スキャン結果を保存したり呼び出したりできるため、ネットワークをスキャンするのも、その後に解析するのも容易だ。
Ben Martin 10年以上にわたってファイルシステムに携わっている。博士課程を修了し、現在、libferris、ファイルシステム、検索ソリューションを中心にコンサルティングをしている。