Nmapって何?ネットワークを調査するツール

ネットワークの管理やセキュリティ診断をしていると、「Nmap」というツールの名前を聞くことがあります。
Nmap(Network Mapper:ネットワークマッパー)は、ネットワーク上のデバイスやサービスを調査するためのオープンソースツールです。
身近な例で理解しよう
Nmapを理解するために、建物の点検に例えてみましょう。
Nmapを使わない場合:
建物の中に何があるか分からない
↓
一部屋ずつ手作業で確認
↓
時間がかかる、見落としもある
Nmapを使う場合:
建物全体をスキャン
↓
すべての部屋と中身を自動で確認
↓
リストアップして報告
Nmapは、ネットワーク上の「誰がいるか」「何のサービスが動いているか」を自動的に調べてくれるツールなんです。
Nmapができること
ホストの検出
- ネットワーク上にどのデバイスがあるか発見
- アクティブなコンピューターを特定
- IPアドレスの一覧を取得
ポートスキャン
- 開いているポート(サービスの入口)を発見
- 閉じているポートと開いているポートを判別
- フィルタリングされているポートを検出
サービス・バージョンの検出
- 各ポートで動いているサービスを特定
- ソフトウェアのバージョン情報を取得
- OS(オペレーティングシステム)の推測
セキュリティ診断
- 脆弱性の有無をチェック
- 設定ミスの発見
- セキュリティ監査
ネットワークマッピング
- ネットワーク構成の可視化
- デバイス間の関係を把握
- トポロジーの理解
Nmapが使われる場面
システム管理者
- 自社ネットワークの管理
- 新しいデバイスの検出
- サービスの稼働確認
セキュリティエンジニア
- ペネトレーションテスト(侵入テスト)
- 脆弱性診断
- セキュリティ監査
ネットワークエンジニア
- ネットワーク構成の把握
- トラブルシューティング
- 性能監視
Nmapの歴史と特徴
Nmapがどのように生まれ、なぜ広く使われているのか見ていきましょう。
誕生と発展
1997年:
- Gordon Lyon(Fyodor)によって開発開始
- 当初は単純なポートスキャナー
現在:
- 世界中で使われるセキュリティツール
- オープンソースで無料
- 継続的にアップデート
映画での登場:
実は、Nmapは「マトリックス リローデッド」などのハリウッド映画にも登場しています。
ハッキングシーンでよく使われるリアルなツールなんです。
Nmapの主な特徴
クロスプラットフォーム
- Linux、Windows、macOS対応
- 同じコマンドが使える
- 幅広い環境で利用可能
柔軟なスキャン方法
- TCPスキャン、UDPスキャン
- SYNスキャン、FINスキャンなど
- 様々な技術に対応
高速なスキャン
- 並列処理で高速スキャン
- 大規模ネットワークにも対応
- パフォーマンスチューニング可能
拡張性
- Nmap Scripting Engine (NSE)
- 600以上のスクリプト
- カスタムスクリプトも作成可能
詳細な情報収集
- OSの検出
- バージョン情報
- サービスの特定
Nmapのインストール方法
それでは、実際にNmapをインストールしてみましょう。
Linux(Ubuntu/Debian)
コマンドでのインストール:
# パッケージリストの更新
sudo apt update
# Nmapのインストール
sudo apt install nmap
# バージョン確認
nmap --version
実行結果の例:
Nmap version 7.93 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.6 openssl-3.0.2 libssh2-1.10.0 libz-1.2.11 libpcre-8.39 libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select
Linux(CentOS/RHEL/AlmaLinux)
# Nmapのインストール
sudo dnf install nmap
# または
sudo yum install nmap
# バージョン確認
nmap --version
macOS
Homebrewを使う方法:
# Homebrewがなければインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Nmapのインストール
brew install nmap
# バージョン確認
nmap --version
公式インストーラーを使う方法:
- Nmap公式サイトにアクセス
- macOS用のインストーラーをダウンロード
- .dmgファイルを開いてインストール
Windows
公式インストーラーでのインストール:
- Nmap公式サイトにアクセス
- Windows用のインストーラー(.exe)をダウンロード
- ダウンロードしたファイルを実行
- インストールウィザードに従う
インストール時の選択肢:
- Nmap本体:必須
- Zenmap(GUI版):グラフィカルインターフェース
- Npcap:パケットキャプチャドライバ(推奨)
- Ndiff:スキャン結果の比較ツール
コマンドプロンプトから確認:
nmap --version
Zenmap(GUI版)
コマンドラインが苦手な方向けに、グラフィカルインターフェース版もあります。
特徴:
- マウスで操作できる
- スキャン結果を視覚化
- 初心者に優しい
WindowsとmacOSでは、Nmapと一緒にインストールされます。
Nmapの基本的な使い方
それでは、実際にNmapを使ってみましょう。
最もシンプルなスキャン
単一ホストのスキャン:
nmap 192.168.1.1
実行結果の例:
Starting Nmap 7.93 ( https://nmap.org ) at 2024-11-04 10:30 JST
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
表示される情報:
- Host is up:ホストが稼働中
- PORT:ポート番号
- STATE:ポートの状態(open、closed、filtered)
- SERVICE:そのポートで一般的に使われるサービス名
ホストの生存確認(Ping Scan)
ネットワーク上でアクティブなホストを見つける:
# 単一ホスト
nmap -sn 192.168.1.1
# IPアドレス範囲
nmap -sn 192.168.1.0/24
# 複数のホスト
nmap -sn 192.168.1.1 192.168.1.10 192.168.1.20
-snオプション:
- ポートスキャンをスキップ
- ホストが稼働中かだけ確認
- 高速
実行結果の例:
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Nmap scan report for 192.168.1.5
Host is up (0.0020s latency).
Nmap scan report for 192.168.1.10
Host is up (0.0015s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.50 seconds
特定のポートをスキャン
# 単一ポート
nmap -p 80 192.168.1.1
# 複数ポート
nmap -p 22,80,443 192.168.1.1
# ポート範囲
nmap -p 1-1000 192.168.1.1
# すべてのポート(1-65535)
nmap -p- 192.168.1.1
# よく使われるポート
nmap --top-ports 100 192.168.1.1
TCPとUDPのスキャン
TCPスキャン(デフォルト):
nmap -sT 192.168.1.1
SYNスキャン(ステルススキャン):
sudo nmap -sS 192.168.1.1
root権限が必要ですが、より隠密にスキャンできます。
UDPスキャン:
sudo nmap -sU 192.168.1.1
DNSやDHCPなど、UDPを使うサービスを検出します。
TCPとUDPの両方:
sudo nmap -sS -sU -p T:80,U:53 192.168.1.1
よく使うオプションとその組み合わせ

Nmapの真価は、様々なオプションの組み合わせにあります。
サービスバージョン検出
nmap -sV 192.168.1.1
実行結果の例:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
443/tcp open ssl/http Apache httpd 2.4.52 ((Ubuntu))
詳細レベルの指定:
# レベル0(軽い)~レベル9(徹底的)
nmap -sV --version-intensity 9 192.168.1.1
OS検出
sudo nmap -O 192.168.1.1
実行結果の例:
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.4 - 5.10
より詳細な検出:
sudo nmap -O --osscan-guess 192.168.1.1
アグレッシブスキャン
すべてを有効にする包括的なスキャン:
sudo nmap -A 192.168.1.1
-Aに含まれるもの:
- OS検出(-O)
- バージョン検出(-sV)
- スクリプトスキャン(-sC)
- トレースルート(–traceroute)
スキャン速度の調整
# 遅い(ステルス重視)
nmap -T0 192.168.1.1 # Paranoid
nmap -T1 192.168.1.1 # Sneaky
# 通常
nmap -T2 192.168.1.1 # Polite
nmap -T3 192.168.1.1 # Normal(デフォルト)
# 速い
nmap -T4 192.168.1.1 # Aggressive
nmap -T5 192.168.1.1 # Insane
使い分け:
- T0-T1:IDSに検出されにくい(非常に遅い)
- T2-T3:通常の診断
- T4:内部ネットワークの高速スキャン
- T5:最速だが精度が落ちる可能性
出力形式の指定
標準出力:
nmap 192.168.1.1 -oN output.txt
XML形式:
nmap 192.168.1.1 -oX output.xml
grepしやすい形式:
nmap 192.168.1.1 -oG output.gnmap
すべての形式で出力:
nmap 192.168.1.1 -oA output_prefix
これで、output_prefix.nmap、output_prefix.xml、output_prefix.gnmapが作成されます。
Nmap Scripting Engine (NSE)
NSEを使うと、高度な診断が可能になります。
NSEとは
特徴:
- Luaスクリプトで書かれた拡張機能
- 600以上のスクリプトが標準搭載
- 脆弱性診断、サービス検出、攻撃シミュレーションなど
スクリプトのカテゴリ:
- auth:認証関連
- broadcast:ブロードキャスト発見
- brute:ブルートフォース攻撃
- default:デフォルトスクリプト
- discovery:追加情報の発見
- dos:サービス拒否テスト
- exploit:既知の脆弱性の悪用
- fuzzer:ファジング
- intrusive:侵入的なテスト
- malware:マルウェア検出
- safe:安全なスクリプト
- version:バージョン検出
- vuln:脆弱性チェック
デフォルトスクリプトの実行
nmap -sC 192.168.1.1
または:
nmap --script=default 192.168.1.1
特定のスクリプトを実行
単一スクリプト:
nmap --script=http-title 192.168.1.1
複数スクリプト:
nmap --script=http-title,http-headers 192.168.1.1
カテゴリ全体:
nmap --script=vuln 192.168.1.1
よく使うスクリプトの例
HTTPサーバーの情報収集:
nmap --script=http-enum 192.168.1.1 -p 80
隠しディレクトリや一般的なファイルを探します。
SSL/TLS脆弱性チェック:
nmap --script=ssl-heartbleed 192.168.1.1 -p 443
Heartbleed脆弱性の有無を確認します。
SMB脆弱性診断:
nmap --script=smb-vuln-* 192.168.1.1
Windowsファイル共有の脆弱性をチェックします。
データベースのデフォルトアカウント:
nmap --script=mysql-empty-password 192.168.1.1 -p 3306
MySQLの空パスワードアカウントを検出します。
DNSゾーン転送:
nmap --script=dns-zone-transfer --script-args dns-zone-transfer.domain=example.com ns1.example.com
DNS情報の漏洩をチェックします。
スクリプトの引数
一部のスクリプトは、引数を受け取ります。
nmap --script=http-brute --script-args http-brute.path=/admin 192.168.1.1
利用可能なスクリプトの確認
# すべてのスクリプト一覧
nmap --script-help all
# 特定のカテゴリ
nmap --script-help vuln
# キーワード検索
nmap --script-help "*http*"
# スクリプトの詳細
nmap --script-help http-enum
実践的なスキャン例
実際の使用場面での具体例を見ていきましょう。
ネットワーク全体の調査
シナリオ: 社内ネットワーク(192.168.1.0/24)の全体像を把握したい
# ステップ1:アクティブなホストを発見
nmap -sn 192.168.1.0/24 -oG active_hosts.txt
# ステップ2:発見したホストのポートスキャン
nmap -p 1-1000 -iL active_hosts.txt -oA network_scan
# ステップ3:詳細情報の取得
sudo nmap -A -p 1-1000 192.168.1.0/24 -oA detailed_scan
Webサーバーのセキュリティ診断
シナリオ: 自社のWebサーバーの脆弱性をチェック
# 基本スキャン
sudo nmap -sS -sV -p 80,443 example.com
# HTTP関連の詳細情報
nmap --script=http-* -p 80,443 example.com
# SSL/TLS診断
nmap --script=ssl-enum-ciphers,ssl-cert -p 443 example.com
# 脆弱性チェック
nmap --script=vuln -p 80,443 example.com
データベースサーバーの診断
シナリオ: MySQLサーバーのセキュリティ確認
# ポート確認
nmap -p 3306 database.example.com
# バージョン検出
nmap -sV -p 3306 database.example.com
# MySQL関連のスクリプト実行
nmap --script=mysql-* -p 3306 database.example.com
ファイアウォールの確認
シナリオ: ファイアウォールが正しく機能しているか確認
# 基本的なスキャン
nmap -sS 192.168.1.1
# ファイアウォールの挙動確認
nmap -sA 192.168.1.1
# フラグメンテーションを使った回避テスト
sudo nmap -f 192.168.1.1
# デコイスキャン(ノイズを混ぜる)
sudo nmap -D RND:10 192.168.1.1
大規模ネットワークの高速スキャン
シナリオ: 1000台以上のホストを短時間でスキャン
# 高速スキャン設定
sudo nmap -T4 -p 22,80,443,3389 --open 10.0.0.0/16 -oA large_scan
# より詳細だが時間がかかる
sudo nmap -T4 --top-ports 1000 10.0.0.0/16 -oA large_detailed_scan
IPv6ネットワークのスキャン
# IPv6ホストの検出
nmap -6 fe80::1
# IPv6でのポートスキャン
nmap -6 -p 1-100 2001:db8::1
スキャン結果の読み方
Nmapの出力を正しく理解しましょう。
ポートの状態
open(開いている):
22/tcp open ssh
- サービスが接続を受け付けている
- TCPの3ウェイハンドシェイクが完了
- 潜在的なエントリポイント
closed(閉じている):
23/tcp closed telnet
- ポートは到達可能だが、サービスが動いていない
- ファイアウォールではブロックされていない
filtered(フィルタされている):
25/tcp filtered smtp
- ファイアウォールやフィルタで保護されている
- パケットが到達しない
- 応答がない
unfiltered(フィルタされていない):
80/tcp unfiltered http
- ACKスキャンでのみ表示
- ポートに到達可能だが、状態は不明
open|filtered(開いているかフィルタされている):
53/udp open|filtered domain
- 主にUDPスキャンで表示
- 応答がないため判別不能
closed|filtered(閉じているかフィルタされている):
135/tcp closed|filtered msrpc
- IPIDスキャンで表示
- 状態が判別できない
レイテンシの意味
Host is up (0.0010s latency).
- 0.001秒未満:ローカルネットワーク
- 0.001~0.010秒:同じ地域
- 0.010~0.100秒:国内
- 0.100秒以上:海外または遅い接続
MACアドレスの情報
MAC Address: 00:11:22:33:44:55 (Cisco Systems)
- デバイスメーカーが分かる
- ネットワーク機器の特定に役立つ
Nmapのパフォーマンスチューニング

大規模スキャンを効率的に行う方法です。
並列処理の調整
# 並列ホスト数を指定
nmap --min-hostgroup 50 --max-hostgroup 100 192.168.1.0/24
# 並列プローブ数
nmap --min-parallelism 100 --max-parallelism 300 192.168.1.0/24
タイムアウトの調整
# ホストのタイムアウト
nmap --host-timeout 30s 192.168.1.0/24
# RTT(往復時間)のタイムアウト
nmap --min-rtt-timeout 10ms --max-rtt-timeout 500ms 192.168.1.1
スキャン遅延
# 各プローブ間の遅延
nmap --scan-delay 1s 192.168.1.1
# 最大遅延
nmap --max-scan-delay 10s 192.168.1.1
再試行回数
# ポートスキャンの再試行
nmap --max-retries 2 192.168.1.1
Nmapを使う上での注意点
安全かつ合法的に使用するための重要な注意事項です。
法的・倫理的な注意点
⚠️ 重要:許可なくスキャンしてはいけません
合法的な使用:
- 自分が所有・管理するネットワーク
- 明示的な許可を得たシステム
- ペネトレーションテストの契約がある場合
違法になる可能性がある行為:
- 他人のネットワークを無断でスキャン
- 会社のネットワークを許可なくスキャン
- ISPのポリシーに違反するスキャン
日本の法律:
- 不正アクセス禁止法に抵触する可能性
- 業務妨害罪に問われる可能性
- 民事責任も発生し得る
ペネトレーションテストの場合:
- 書面での許可を取得
- スコープ(範囲)を明確に定義
- 実施時間を合意
- 緊急連絡先を共有
- 結果を適切に報告
技術的な注意点
IDS/IPSの検知:
- 侵入検知システム(IDS)に検出される可能性
- 過剰なスキャンはアラートを発生させる
- ブラックリストに登録されることも
ネットワークへの影響:
- 大規模スキャンは帯域を消費
- サービスに負荷をかける可能性
- 業務時間外に実施するのが望ましい
誤検知:
- すべての結果が正確とは限らない
- バージョン検出の精度は100%ではない
- 必ず手動で確認を
よくあるトラブルと解決方法
Nmapを使っていて困った時の対処法です。
問題1:「Permission denied」エラー
症状:
pcap_open_live: Permission denied
原因:
一部のスキャンタイプは管理者権限が必要
解決方法:
# Linuxの場合
sudo nmap -sS 192.168.1.1
# Windowsの場合
# 管理者としてコマンドプロンプトを実行
問題2:スキャンが非常に遅い
原因:
- デフォルトのタイミング設定
- ファイアウォールによる遅延
- ネットワークの遅延
解決方法:
# 速度を上げる(T4)
nmap -T4 192.168.1.1
# ポート範囲を制限
nmap -p 1-1000 192.168.1.1
# よく使うポートだけ
nmap --top-ports 100 192.168.1.1
問題3:「No route to host」
症状:
ホストに到達できない
原因:
- ホストがダウンしている
- ファイアウォールでブロック
- ルーティングの問題
解決方法:
# pingで確認
ping 192.168.1.1
# トレースルート
traceroute 192.168.1.1
# Nmapのトレースルート
nmap --traceroute 192.168.1.1
問題4:結果が不正確
原因:
- パケットロス
- ファイアウォールの影響
- タイムアウトが短すぎる
解決方法:
# 再試行回数を増やす
nmap --max-retries 5 192.168.1.1
# タイムアウトを延長
nmap --host-timeout 5m 192.168.1.1
# より徹底的なスキャン
sudo nmap -A -T2 192.168.1.1
問題5:UDPスキャンが終わらない
原因:
UDPスキャンは本質的に遅い
解決方法:
# 速度を上げる
sudo nmap -sU -T4 192.168.1.1
# 重要なポートだけ
sudo nmap -sU -p 53,67,68,161,162 192.168.1.1
# 並列処理を増やす
sudo nmap -sU --min-hostgroup 100 192.168.1.0/24
Nmapの代替ツールと組み合わせ
Nmapと一緒に使うと便利なツールです。
Masscan
特徴:
- 非常に高速
- インターネット全体をスキャン可能
- Nmapと似たインターフェース
使用例:
# 高速スキャン
sudo masscan -p80,443 10.0.0.0/8 --rate=10000
Nessus
特徴:
- 商用の脆弱性スキャナー
- 詳細なレポート
- Nmapと連携可能
Wireshark
特徴:
- パケットキャプチャツール
- Nmapのトラフィックを分析
- トラブルシューティングに有効
Metasploit
特徴:
- ペネトレーションテストフレームワーク
- Nmapの結果を活用
- エクスプロイトの実行
コマンドのチートシート
よく使うNmapコマンドをまとめました。
基本的なスキャン
# 基本スキャン
nmap 192.168.1.1
# ホスト発見のみ
nmap -sn 192.168.1.0/24
# すべてのポート
nmap -p- 192.168.1.1
# よく使うポート
nmap --top-ports 100 192.168.1.1
# 特定のポート
nmap -p 22,80,443 192.168.1.1
高度なスキャン
# SYNスキャン
sudo nmap -sS 192.168.1.1
# UDPスキャン
sudo nmap -sU 192.168.1.1
# バージョン検出
nmap -sV 192.168.1.1
# OS検出
sudo nmap -O 192.168.1.1
# アグレッシブスキャン
sudo nmap -A 192.168.1.1
スクリプトスキャン
# デフォルトスクリプト
nmap -sC 192.168.1.1
# 特定スクリプト
nmap --script=http-title 192.168.1.1
# 脆弱性スキャン
nmap --script=vuln 192.168.1.1
# カテゴリ全体
nmap --script=auth,brute 192.168.1.1
出力と速度
# 標準出力
nmap 192.168.1.1 -oN output.txt
# すべての形式
nmap 192.168.1.1 -oA output
# 高速スキャン
nmap -T4 192.168.1.1
# ステルススキャン
nmap -T1 192.168.1.1
複合例
# 包括的なネットワークスキャン
sudo nmap -sS -sV -O -A --top-ports 1000 192.168.1.0/24 -T4 -oA network_audit
# Webサーバー診断
nmap -sV --script=http-enum,http-headers,http-methods,ssl-cert -p 80,443 example.com -oA web_audit
# 高速ポートスキャン
nmap -sS -T4 --top-ports 100 --open 192.168.1.0/24 -oG quick_scan.txt
まとめ:Nmapを正しく活用しよう
この記事では、Nmapの基礎から実践的な使い方まで解説してきました。
重要なポイントのおさらい:
- Nmapはネットワークスキャンの定番ツール
- ホスト検出、ポートスキャン、サービス検出が可能
- NSEで高度な脆弱性診断もできる
- 様々なオプションで柔軟なスキャンが可能
- 出力形式を選べるため、結果の活用が容易
- 速度とステルス性のバランスを調整できる
必ず守るべきルール:
- 許可を得てからスキャン
- 自分が管理するシステムのみ
- または明示的な許可がある場合のみ
- 業務時間外に実施
- ネットワークへの影響を最小化
- サービス停止のリスクを避ける
- 結果を適切に管理
- セキュリティ情報の取り扱いに注意
- 不要になったら安全に削除
- 目的を明確に
- セキュリティ診断
- ネットワーク管理
- トラブルシューティング
Nmapが活躍する場面:
- 自社ネットワークのセキュリティ監査
- 新規導入サーバーの設定確認
- ファイアウォールルールの検証
- インシデント対応時の調査
- システム管理の日常業務
Nmapは非常に強力なツールですが、責任を持って使用することが大切です。
正しく活用すれば、ネットワークのセキュリティを大幅に向上させることができます。
まずは自分のテスト環境で練習して、基本的なコマンドに慣れることから始めましょう!

コメント