Nmap (Network Mapper)
Nmap(Network Mapper)は、ネットワークの探索とセキュリティ監査のために設計された、非常に強力で広く使用されているオープンソースのユーティリティです。システム管理者、ネットワークエンジニア、セキュリティ専門家(ホワイトハットハッカー)によって、ネットワーク上のどのホストがアクティブであるか、それらのホストがどのようなサービス(アプリケーション名とバージョン)を提供しているか、どのオペレーティングシステム(OS)を実行しているか、どのようなパケットフィルタ/ファイアウォールが使用されているかなどを判断するために使用されます。
Nmapの主な機能
Nmapは多機能ですが、その中核となるのは以下の機能です。
ポートスキャン
最も基本的な機能です。対象のホスト(サーバーなど)に対してTCPやUDPのポートが「開いている (Open)」「閉じている (Closed)」、または「フィルタリングされている (Filtered)」状態かを調査します。ポートが開いていれば、何らかのサービスがそのポートで待機していることを意味します。
サービスとバージョンの検出
開いているポートで実行されているサービス(例: Webサーバー、FTPサーバー、SSHサーバー)の具体的な名前とそのバージョン情報を特定しようと試みます。例えば、単に「ポート80が開いている」だけでなく、「Apache httpd 2.4.58 が実行されている」といった詳細情報を取得できます。これは脆弱性診断において極めて重要です。
OS検出
対象ホストのTCP/IPスタックの実装の違いを分析し、実行されているオペレーティングシステム(例: Linux (特定のカーネルバージョン)、Windows 11、macOS)を推測します。
NSE (Nmap Scripting Engine)
Lua言語で書かれたスクリプト(NSEスクリプト)を使用して、Nmapの機能を大幅に拡張できます。これにより、より高度なサービス検出、脆弱性のスキャン、情報の収集、さらには特定の脆弱性の悪用(実験)まで自動化することが可能です。
基本的なスキャンコマンドの例
Nmapはコマンドライン(CUI)ツールとして使用するのが一般的です。(`example.com` の部分はスキャン対象のドメインやIPアドレスに置き換えます)
TCP SYNスキャン(ステルススキャン)
デフォルトで最もよく使われる高速なスキャン方法です。TCP接続を完全に確立せずにポートの状態を判断しようと試みます。
# -sS はSYNスキャンを指定 (ルート権限/管理者権限が必要)
nmap -sS example.com
TCP Connectスキャン
ルート権限がない場合に使用される、より単純なスキャン方法です。対象ポートに完全に接続(3ウェイハンドシェイク)を試みます。ログに残りやすい特徴があります。
# -sT はConnectスキャンを指定
nmap -sT example.com
サービスとバージョンの検出
ポートが開いている場合、そこで稼働しているサービスのバージョン情報を特定します。
# -sV はバージョン検出を有効にする
nmap -sV example.com
OS検出
対象ホストのOSを特定します(ルート権限が必要です)。
# -O はOS検出を有効にする
nmap -O example.com
アグレッシブスキャン
よく使われるオプション(OS検出 `-O`、バージョン検出 `-sV`、スクリプトスキャン `-sC`、トレースルート `--traceroute`)を一度に実行する便利なオプションです。ただし、非常に「目立つ」スキャンです。
# -A はアグレッシブスキャン
nmap -A example.com
使用上の注意
Nmapは強力なツールである一方、その使用には注意が必要です。管理権限を持たないネットワークや、許可を得ていない第三者のサーバーに対してポートスキャンを実行する行為は、**不正アクセス行為またはその準備行為(攻撃)**とみなされる可能性があります。
Nmapの使用は、自身が管理するネットワークの診断、または事前に明確な許可(書面による同意など)を得たセキュリティ監査(ペネトレーションテスト)の範囲内に限定する必要があります。