Nmap でポートスキャン

はじめに

マトリックスのトリニティが使っていたツールでおなじみ Nmap の使い方を紹介します。

Nmap を使えば、ネットワーク機器のポートの状況を調べることができます。ルーターやサーバーのセキュリティチェックなどに使えます。

今回は自分で運用している Web サーバーの443ポートの状況をチェックしてみました。

このポートの状況を調べることをポートスキャンと言います。

Movies Featuring the Nmap Security Scanner

Nmap を Mac にインストール(Homebrew)

私は Mac でかつ Homebrew を使っているので、以下のコマンドで Nmap をインストールします。

brew install nmap

その他の人は公式サイトのダウンロードページでインストール方法を確認して下さい。

Download the Free Nmap Security Scanner for Linux/Mac/Windows

ポートスキャンコマンド

基本的なポートスキャンのコマンドです。

nmap -T4 -p 1-65535 [スキャンしたい IP アドレスやホスト名]
  • -T4: 0-5 の値でポートをスキャンしていく速さを指定する。5が一番早いがネットワーク、サーバーに負荷がかかる
  • -p: スキャンするポートの範囲を指定する。1-65535だと1から65535番ポートまでスキャンする。443のように1つのポートを指定することもできる

ちなみに0番のポートを含める場合は、0-65535とします。0番のポートはエニーポートと呼ばれている特殊なポートです。

0番のポートはエニーポート(any port)と呼ばれ、アプリケーションに対して、動的に別番号の空きポートを割り当てるために用意された特殊なポート番号である。

TCPやUDPにおけるポート番号の一覧 - Wikipedia

スキャンの速さについては、Nmap 公式サイトでは-T4がおすすめされていた。

タイミングとパフォーマンス | Nmap リファレンスガイド (Man Page)

試してみる

今回は私が運用しているこのサイトの443番ポートをスキャンしてみます。443番ポートは HTTPS のポートで Web サーバーであれば必ず開かれている必要があります。

nmap -T4 -p 443 hirameki.dev

以下のような結果が返ってきました。

PORT    STATE SERVICE
443/tcp open  https

結果の読み方

以下がポートのステータスのリストです。公式サイトより引用しました。

ステータス状態
openアプリケーションがTCPコネクションやUDPパケットをアクティブに受け入れている
closedアクセス可能だが、そこで受信待機しているアプリケーションはない。
filteredポートが開いているかどうかを判別できない。なぜなら、パケットフィルタのせいで、プローブがポートまで到達できないからである。
unfilteredポートにはアクセス可能だが、そのポートが開いているか閉じているかをNmapでは判別できないことを意味する。
open|filtered対象のポートが開いているかフィルタ処理されているかを判別できない場合である。
closed|filteredポートが閉じているかフィルタ処理されているかを、Nmapが判断できない場合に用いられる。

先ほどのスキャンした結果に443/tcp openとあったので、正常にポートが開かれていることがわかります。

まぁ、443番ポートが開かれてないとこのページを開けないですしね。

ポートスキャンの基本 | Nmap リファレンスガイド (Man Page)

さいごに

Nmap を使えば非常に簡単にポートの状況を確認できます。試してみて下さい。