Nmap えぬまっぷ
簡単に言うとこんな感じ!
Nmapはネットワーク上のコンピューターを「ドアをノックして回る」ツールだよ!「どのポート(玄関)が開いてる?」「どんなOSが動いてる?」を自動で調べてくれるんだ。セキュリティ診断の定番中の定番ツールってこと!
Nmapとは
Nmap(Network Mapper) は、ネットワーク上のホスト(機器)を発見し、開放されているポートやサービス・OSの種類を調査するオープンソースのネットワーク探索・セキュリティ監査ツールです。1997年にGordon Lyon(Fyodor)によって開発され、現在も活発にメンテナンスが続けられています。
セキュリティ担当者がシステムの「現状把握」をするときの第一歩として使われることが多く、「どのサーバーが何のサービスを公開しているか」「意図せず開放されているポートはないか」を素早く確認できます。たとえばシステムを新しくリリースする前の セキュリティチェックリスト の中で、「Nmapでスキャンして不要なポートが開いていないことを確認する」という手順が含まれることは珍しくありません。
Nmapはセキュリティ診断(ペネトレーションテスト)の現場で使われる一方、ネットワーク管理者が社内インフラの棚卸しをする目的でも広く使われています。無断で他人のネットワークにスキャンをかけると不正アクセスになる可能性があるため、必ず自分が管理権限を持つ環境・または明示的に許可を得た環境でのみ使用する ことが大前提です。
Nmapの主な機能と使い方
Nmapは非常に多機能ですが、実務でよく使われる機能は以下の通りです。
| 機能 | 概要 | 主なオプション |
|---|---|---|
| ホスト検出 | ネットワーク上で稼働している機器を探す | -sn(Ping スキャン) |
| ポートスキャン | 開いているポート番号を特定する | -sS(SYNスキャン)-sT(TCPスキャン) |
| サービス検出 | ポートで動いているソフトウェアとバージョンを調べる | -sV |
| OS検出 | 対象機器のOSの種類とバージョンを推測する | -O |
| スクリプト実行 | NSEスクリプトで脆弱性チェックを自動化する | --script |
| 出力保存 | 結果をXML・テキスト・grepable形式で保存 | -oX -oN -oG |
よく使うコマンド例
# 基本的なポートスキャン(対象ホストの開放ポートを確認)
nmap 192.168.1.1
# よく使われる1000ポートをSYNスキャン+サービスバージョン検出
nmap -sS -sV 192.168.1.1
# ネットワーク全体のホスト一覧を取得(Pingスキャン)
nmap -sn 192.168.1.0/24
# OS検出+サービス検出+デフォルトスクリプト実行(定番の組み合わせ)
nmap -A 192.168.1.1
# 結果をXMLファイルに保存
nmap -oX result.xml 192.168.1.1
ポートの状態(スキャン結果の読み方)
Nmapはポートの状態を6種類に分類します。
| 状態 | 意味 |
|---|---|
| open(開放) | サービスが動いており接続可能 |
| closed(閉鎖) | ポートはアクセス可能だがサービスが動いていない |
| filtered(フィルター) | ファイアウォールなどにより応答がない |
| unfiltered(非フィルター) | アクセス可能だが状態不明 |
| open|filtered | 開放かフィルター済みか判断できない |
| closed|filtered | 閉鎖かフィルター済みか判断できない |
歴史と背景
- 1997年 — Gordon Lyon(ハンドルネーム:Fyodor)がNmapを開発・公開。Phrack誌に論文として掲載されたのが起源
- 1998年 — OS検出機能が追加され、単なるポートスキャナーを超えた総合ツールへ進化
- 2003年 — NSE(Nmap Scripting Engine) の前身となるスクリプト機能の実験が始まる
- 2006年 — NSEが正式実装され、スクリプトによる脆弱性チェックが可能に
- 2009年 — 映画「マトリックス リローデッド」などでも使用シーンが登場し、一般知名度が向上
- 2012年 | IPv6対応が強化され、現代のネットワーク環境に対応
- 現在 | GitHub上で継続的にメンテナンスされ、数百のNSEスクリプトが公式配布されている
Nmapと関連ツールの比較・位置づけ
Nmapはセキュリティテストの「偵察フェーズ」を担うツールです。他のツールと組み合わせることで、より深い診断が可能になります。
NSE(Nmap Scripting Engine)について
NSEはNmapに内蔵されたスクリプトエンジンで、Lua言語で書かれたスクリプトを実行できます。公式で提供される 600以上のスクリプト を使うと、以下のような診断が自動化できます。
# HTTPサーバーのヘッダー情報を取得
nmap --script http-headers 192.168.1.1
# SSHの認証方式を確認
nmap --script ssh-auth-methods 192.168.1.1
# よく知られた脆弱性チェック(SMBの脆弱性など)
nmap --script vuln 192.168.1.1
# デフォルトスクリプト群を実行(安全なものだけ)
nmap -sC 192.168.1.1
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 793 | TCP(Transmission Control Protocol)の仕様。Nmapのポートスキャンの基礎 |
| RFC 792 | ICMP(Internet Control Message Protocol)。Pingスキャンで使用 |
| RFC 768 | UDP(User Datagram Protocol)。UDPスキャン(-sU)の基礎プロトコル |
| RFC 9293 | TCPの更新版仕様(RFC 793の廃止・置き換え) |
関連用語
- ポート番号 — TCP/UDP通信の「入口」を識別する番号。Nmapが調査する対象
- ファイアウォール — 不正なポートアクセスをブロックするセキュリティ機構
- ペネトレーションテスト — 攻撃者視点でシステムの脆弱性を検証するセキュリティ診断
- 脆弱性スキャン — CVEなどの既知脆弱性を自動で検出するツール・手法
- TCP/IP — Nmapがスキャンに使う通信プロトコルの基盤
- ICMP — Pingスキャンで使用するネットワーク診断プロトコル
- CVE — 脆弱性の共通識別番号。NmapのNSEスクリプトが参照する情報源
- Kali Linux — Nmapをはじめセキュリティツールを多数収録したペネトレーションテスト向けLinuxディストリビューション