ポートスキャンツール「Nmap」を使ったセキュリティチェック

ポートスキャンツール「Nmap」を使ったセキュリティチェック アイコン

 サーバーの基本的なセキュリティ対策の1つとして重要なのが、ネットワーク内のどのマシンがどのポートでサービスを提供しているのかを把握することだ。このために有用なのが、ポートスキャナと呼ばれるツールだ。本記事ではポートスキャナとして有名な「Nmap」というソフトウェアを使用し、ポートスキャンを行う方法について解説する。

定番のポートスキャナ「Nmap」とは

 対象として指定したホストに対してポート番号を変えながらIPパケットを送信し、その反応を調べることでどのポートが外部からアクセス可能なのかを調査する行為をポートスキャンと呼ぶ。Nmap(Network Mapperの略)は、オープンソース(GPLv2ライセンス)で開発・提供されているポートスキャンツール(ポートスキャナ)だ。NmapではOSが提供するソケット機能を利用するだけでなく、ポートスキャンに使用するパケットを独自に生成することで、高速なポートスキャンやファイアウォール/IPS(侵入検知システム)で保護されたサーバーに対するポートスキャンを可能にしているのが特徴だ。また、対象とするホストの挙動からそのOSやバージョンと行った情報を推測したり、稼働しているサーバーソフトウェアの種類やバージョンを取得する、いった機能も備えている。

 なお、Nmapには多くのスキャンオプションが用意されており、この中には特殊なパケットを送信して対象ホストの情報を取得するオプションや、発信元を隠してポートスキャンを実行することを可能にするオプション、侵入検知システムを回避することを可能にするオプションなどが用意されている。そのため、悪意のあるハッカーが攻撃対象のホストを調査する、といった用途にも利用できてしまう。他者が管理しているサーバーに対しポートスキャンを行うことは不正アクセスに該当する可能性もあるため、Nmapを利用する際は十分に注意してほしい。

Nmapのダウンロードとインストール

 Nmapはマルチプラットフォーム対応が行われており、LinuxだけでなくWindowsやMac OS X、FreeBSDなど各種BSD、Solaris、HP-UXなどの各種UNIXでも動作する。ソースコードだけでなく、WindowsやMac OS X向けバイナリも提供されている。

 Linux環境の場合、多くのLinuxディストリビューションで公式パッケージが提供されているので、それを利用するのが簡単だ。たとえばRed Hat Enterprise Linux(RHEL)やその互換OSであるCentOSなどでは「nmap」というパッケージでNmapのバイナリが提供されており、yumコマンドでインストールできる。

# yum install nmap

 また、Gtk+で実装されたGUIフロントエンド(Zenmap)もnmap-frontendというパッケージで提供されている。GUIフロントエンドを利用したい場合はこちらもインストールしておこう。

# yum install nmap-frontend

 なお、ディストリビューションの公式パッケージとして提供されているNmapは、そのバージョンがやや古いことがある。最新版のNmapを利用したいという場合やLinux以外のプラットフォームでNmapを利用したいという場合、NmapのWebサイト(http://nmap.org/)内のダウンロードページで公開されているバイナリやソースコード、ソースRPMを利用してインストールすれば良い。

 たとえばWindows環境の場合、ダウンロードページの中頃に「Microsoft Windows binaries」という項目があり、そこにインストーラおよびZIPアーカイブのダウンロードリンクが用意されている。インストーラにはNmapが使用するWinPcap(オープンソースのパケットキャプチャライブラリ)も含まれているので、通常はインストーラを使ったインストールをおすすめする(図1)。また、このインストーラにはNmap本体に加え、GUIフロントエンドの「Zenmap」や各種ツールも同梱されている。

図1 NmapのWindows向けインストーラ図1 NmapのWindows向けインストーラ

 そのほか、ダウンロードページではMac OS X(x86版)向けのバイナリも提供されている。Mac OS Xユーザーはこちらを利用すると良いだろう。