ポートスキャンは正義の管理者には関係ない? いいえ、己の姿を客観的に見るためには、的確なポートスキャン術が必要なのです。
この記事が公開されるころは、年始ということでバタバタとしていることだろう。「長期休暇後」「新年を迎えて」といったように節目となり、心機一転という心境にもなるのではないだろうか。
そんな気持ちもあって今回は、自身が管理しているネットワークに対してポートスキャンを行い、開放しているサービスの確認・把握をいま一度行ってみようと思う。
※ご注意
オープンポートの確認とはいえ、自身の管理下にないネットワークに行った場合は、攻撃行為と判断される場合があり、最悪の場合、法的処置を取られる可能性もあります。このような調査を行う場合は、くれぐれも許可を取ったうえで、自身の管理下にあるネットワークやサーバに対してのみ行ってください。
また、本稿を利用した行為による問題に関しましては、筆者およびアイティメディア株式会社は一切責任を負いかねます。ご了承ください。
本題に入る前に、調査を行う経路についてお話ししたいと思う。
一般的な認識としては、「ペネトレーションテストはインターネット経由のみ」というものが少なからず残っているように思える。ペネトレーションという単語は「貫通」という意味を持っている。従って、ペネトレーションテストは、直訳すると(コンピュータに対する)「貫通検査(試験)」、意訳するならば「侵入検査(試験)」となるだろうか。
このようにペネトレーションテストというのは、特に経路も対象の種別(サーバ、ネットワーク機器、クライアントなど)も定められているわけではない。ペネトレーションテストは、外部からの侵入やサービス拒否などの攻撃に対して、どの程度耐えうるかを実際の攻撃を行いながら安全性を検証するものである。
ここでいう外部とは、前述したインターネット経由という意味ではなく、検査対象から見て外部、つまり、検査対象のネットワークカードから外という意味である。これらの意味を踏まえるとペネトレーションテストの経路というのは、大きく分けて以下のような3経路になるだろう。
この3経路について簡単に説明しよう。図1のような一般的なネットワーク構成を見てほしい。
「Audit PC」と名が付いているノートPCが3つある。これが、検査を行うPC、つまり、私のような検査を行う人間が使用するPCである。このPC別に経路の説明する。
インターネットからの攻撃を想定した検査パターンである。インターネットから「ルータ」「ファイアウォール」およびファイアウォールに守られている状態の「DMZ:サーバ 1、2」に対して検査を行う。
「ルータ」「ファイアウォール」自体のセキュリティレベル、フィルタリング状態は適切か否か、そのファイアウォールを経由した状態でDMZ内にあるサーバに対してどのような攻撃、情報取得が行えるかということを検査し、可能な場合は大きな被害を与えない程度に実際の攻撃行為を行う。
DMZ内から検査を行うので検査対象がファイアウォールに守られていない状態である。つまり、「DMZ:サーバ 1/2」単体でのセキュリティレベルの検査ということになる。
「ファイアウォール」でのパケットフィルタリングが行われていないため、検査対象のさまざまなポートと通信が可能である。従って、「Audit PC 1」と比べ侵入できる可能性や取得可能な情報量も大幅に増える場合が多い。
DMZ内のコンピュータが何らかの方法で侵入を許してしまった場合を想定した検査パターンともいえる。
通常はファイアウォールに守られているサーバが、設定変更時に設定ミスを起こしてしまい、サーバのすべてのオープンポートがインターネットに露出し、ほんの数分でワームに感染、被害が拡大していった事件のインシデントレスポンスを筆者は経験している。このようなケースでは、このパターンの検査を行い、対策を講じていたら被害は最小限にとどめられていただろう。
内部犯行やウイルスなどの悪意のあるプログラムの攻撃を想定したパターンである。
LAN内に設置された外部公開されていない「Internal:サーバ 1/2」(DBサーバやファイルサーバなどなど)や内部のエンドユーザーが使用している「クライアント 1/2/3」に対して検査を行う。「Internal:サーバ 1/2」に対しては一般のクライアントと同じ条件で接続し、どのような攻撃が有効、またはどのような情報を取得できるかということを検査する。「クライアント1/2/3」に対しても同様のことを行う。
それでは、今回の本題に入ろう。
「Nmap」(Network Mapper)というツールをご存じだろうか。まずはこのNmapの説明をしておこう。
コンピュータが通信を行う際にはポートという仮想的な送受信を行うためにTCP、UDPともに0番から65535番までのポートを利用している。TCPの80番であればHTTP(Webサーバ)、25番であればSMTP(メールサーバ)といった具合である【注1】。
【注1】
アプリケーションの中にはポート番号を変更できるものがあるため、必ずしもポート番号と動作しているアプリケーション、プロトコルが一致するとは限らない。
何らかのサービスを外部に提供している場合、いずれかのポートが開放されていることになる。このポートの開放を調べることができるツールがNmapである。また、ポートが開放されているかを調べる行為のことを「ポートスキャン」と呼ぶ。Nmapはポートスキャンにおいては「右に出るものはいない」ポートスキャン界(?)の王様であるといっても過言ではないだろう。
基本的に、Windows系OSではWinPcap、Linux系OSではlibpcapがインストールされている環境であれば動作可能であり、基本的にコマンドライン操作となる。コマンドライン初心者には、GUIで操作することのできるフロントエンドも開発されている。
今回は、Nmapの基本的な使い方を紹介するためコマンドラインでの使用を行う。また、Nmapはバージョンアップを繰り返し、多種多様なオプションが追加されてきている。そのため、すべてを紹介するにはスペースが足りないので、今回は重要と思われるオプションを紹介させていただく。
Nmapのコマンドラインの指定個所は大きく分けて7つの部分に分かれる。
これらを順に説明していこう。
Copyright © ITmedia, Inc. All Rights Reserved.