ネットワークの脆弱性診断や資産管理において、Nmapは最も信頼されるツールの一つとして広く活用されています。

しかし、大規模なネットワーク環境でNmapを実行した場合、標準出力に表示されるテキスト情報は膨大な量となり、重要な情報を見落とすリスクが生じます。

スキャン結果を単なるログとして残すのではなく、実務で活用可能な「レポート」として昇華させるためには、XML形式での保存と適切な変換プロセスが不可欠です。

本記事では、Nmapのスキャン結果をXMLで保存し、視認性の高いHTMLレポートへと変換する実務的な手順について詳しく解説します。

ネットワーク診断におけるレポート作成の重要性

セキュリティ診断の実務において、スキャン結果は診断者だけが理解できれば良いというものではありません。

診断結果は、チーム内での共有やクライアントへの報告、さらには将来的な比較のためのエビデンスとして機能する必要があります。

標準のテキスト出力は、コマンドライン上でのクイックな確認には適していますが、構造化されていないためデータの抽出や加工には向きません。

一方で、XML形式で出力されたデータは、プログラムによる解析や他ツールとの連携が容易であるという大きな利点を持っています。

特に、脆弱性管理プロセスにおいては、過去のスキャン結果との差分を自動で抽出することが求められます。

このような自動化を実現するためには、Nmapの出力を構造化データとして保持しておくことが出発点となります。

また、非エンジニアのステークホルダーに対して報告を行う場合、ターミナルの黒い画面をそのまま見せるわけにはいきません。

視認性の高いグラフやテーブル形式のレポートを作成することで、リスクの所在を直感的に伝えることが可能になります。

Nmapのスキャン結果をXML形式で出力する手法

Nmapには、スキャン結果を特定のファイル形式で保存するためのオプションが豊富に用意されています。

その中でも、実務で最も多用されるのがXML形式での出力です。

XML出力の基本コマンド

Nmapでスキャン結果をXMLとして保存するには、-oXオプションを使用します。

このオプションの後にファイル名を指定することで、スキャン完了後に指定した名前のXMLファイルが生成されます。

例えば、特定のターゲットに対してスキャンを行い、その結果をscan_result.xmlという名前で保存する場合は以下のコマンドを実行します。

Shell
# ターゲット192.168.1.0/24に対してサービス詳細スキャンを行い、XML出力する
nmap -sV -oX scan_result.xml 192.168.1.0/24
実行結果
Starting Nmap 7.92 ( https://nmap.org ) at 2026-05-14 10:00 JST
Nmap scan report for 192.168.1.1
Host is up (0.0020s latency).
...
Nmap done: 256 IP addresses (1 hosts up) scanned in 10.50 seconds

実行が完了すると、カレントディレクトリにXMLファイルが作成されていることが確認できます。

このファイルには、スキャンした日時、使用したコマンド引数、各ホストのステータス、ポート番号、サービス名、バージョン情報などがすべて構造化されて記述されています。

出力オプションの使い分けと比較

NmapにはXML以外にもいくつかの出力形式が存在します。

用途に応じてこれらを使い分けることが、効率的なセキュリティ運用への近道です。

オプション形式主な用途
-oN通常形式人間がテキストエディタで直接読むためのログ保存。
-oXXML形式レポート生成や他ツールとの連携、自動解析。
-oGGrep可能形式grepやawkなどのコマンドを用いた簡易的なフィルタリング。
-oA全形式同時出力上記3つの形式すべてを一括で出力。

実務においては、-oAオプションを使用してすべての形式を保存しておくことを推奨します。

後から「あの時XML形式で保存しておけばよかった」と後悔することを防ぐため、全形式のログを保持しておくのが一般的です。

XMLからHTMLレポートへの変換プロセス

保存されたXMLファイルは、そのままでもブラウザで開くことは可能ですが、タグが並んでいるだけで非常に読みづらい状態です。

これを人間にとって見やすいレポートに変換するには、XSLT(Extensible Stylesheet Language Transformations)という技術を利用します。

xsltprocツールの活用

Linux環境において、XMLをHTMLへ変換するための最も標準的なツールはxsltprocです。

Nmapをインストールすると、通常はnmap.xslというスタイルシートファイルがシステム内に同梱されています。

このスタイルシートをXMLファイルに適用することで、見栄えの良いHTMLファイルを生成できます。

まず、xsltprocがインストールされていない場合は、パッケージマネージャーからインストールを行ってください。

Shell
# Debian/Ubuntu系の場合
sudo apt-get install xsltproc

インストールの完了後、以下のコマンドを実行して変換を行います。

Shell
# XMLファイルをHTMLレポートに変換する
xsltproc scan_result.xml -o scan_report.html

このコマンドを実行すると、scan_report.htmlというファイルが生成されます。

これをWebブラウザで開くと、ホストごとの詳細情報や開いているポートが整理された、美しいレポートを確認することができます。

スタイルシートによるカスタマイズ

標準のnmap.xslでも十分な視認性が確保されていますが、より高度なレポートを求める場合は外部のスタイルシートを使用することも可能です。

GitHubなどでは、セキュリティエンジニアによって公開されているオープンソースのスタイルシートがいくつか存在します。

例えば、検索機能やソート機能を備えたよりインタラクティブなレポートを作成できるスタイルシートも人気があります。

変換時に指定するスタイルシートを変更するだけで、アウトプットの質を劇的に高めることができます。

ただし、外部のスタイルシートを使用する場合は、そのファイルの信頼性を事前に確認することを忘れないでください。

視認性を向上させるための応用テクニック

単にHTML化するだけでなく、さらに一工夫加えることでレポートの価値はさらに高まります。

例えば、Nmapのスクリプトエンジン(NSE)を活用したスキャン結果を含める方法です。

-sCオプションを併用してXML出力を行うと、NSEが検出した脆弱性情報や設定の不備がXML内に記録されます。

これをHTML化すると、リスクの高い項目が強調して表示されるため、優先的に対応すべき課題が明確になります。

また、複数のスキャン結果を一つのレポートにまとめたい場合もあります。

大規模な組織では、ネットワークセグメントごとにスキャンを行うことが多いからです。

そのような場合は、複数のXMLファイルをマージするツールや、Python等のスクリプトを用いてデータを集約する手法が有効です。

自社専用のテンプレートを作成し、ロゴや診断条件を追記することで、そのままクライアントへ提出可能なレベルのレポートを作成することも夢ではありません。

サードパーティ製ツールによる可視化の検討

コマンドライン操作に慣れていない場合や、より直感的な操作を求める場合は、サードパーティ製のツールを活用するのも一つの手です。

Zenmapの利用

Zenmapは、Nmapの公式GUIフロントエンドツールです。

Zenmapを使用すると、スキャン結果をトポロジー図として視覚化したり、ポートの状態をアイコンで把握したりすることが可能です。

Zenmap自体にスキャン結果をXMLとして読み込む機能が備わっているため、過去に取得したXMLデータを視覚的に再確認する際にも便利です。

ただし、サーバー環境などのヘッドレスな環境ではGUIツールは使用できないため、前述のxsltprocによる自動変換をメインのスキルとして身につけておくべきです。

Webベースのビューアー

最近では、ブラウザ上でNmapのXMLファイルをアップロードするだけで、ダッシュボード形式に変換してくれるWebサービスやオープンソースプロジェクトも存在します。

これらのツールは、複数のユーザーで結果を共有したい場合や、スキャン履歴をデータベース化して管理したい場合に適しています。

ただし、セキュリティスキャンの結果には機密情報が含まれるため、機密性の高いデータを外部のWebサービスにアップロードすることは避けるべきです。

自社内でホスティング可能なWebベースのビューアーを導入することを検討してください。

実務におけるXMLデータの活用シーン

レポート作成以外にも、XMLデータの活用範囲は多岐にわたります。

その一例が、CI/CDパイプラインへの統合です。

開発環境に対して定期的にNmapを実行し、そのXML結果をパースして、不必要なポートが開放されていないかを自動チェックする仕組みを構築できます。

もし異常が検知された場合、XML内の特定のタグを抽出してSlackやTeamsなどのチャットツールにアラートを飛ばすことも可能です。

このように、XMLは「報告のためのデータ」であると同時に、「自動運用のための燃料」としても機能します。

手作業でのレポート作成から脱却し、データの再利用性を高めることが、モダンなセキュリティ運用の第一歩となります。

日常のスキャン業務において、常にXML出力を習慣化しておくことで、将来的な自動化へのスムーズな移行が可能になるでしょう。

まとめ

Nmapのスキャン結果をXML形式で保存し、レポート化する工程は、単なる作業の記録以上の価値を持っています。

-oXオプションによるXML出力は、データの構造化を実現し、その後の解析や変換を容易にします。

また、xsltprocを用いたHTML変換は、特別なソフトウェアを必要とせず、標準的な環境で視認性の高いレポートを生成できる強力な手法です。

セキュリティエンジニアにとって、情報を正しく取得することはもちろん、その情報を正しく伝えることも極めて重要なスキルです。

今回解説したXMLの保存とHTMLレポートへの出力プロセスを習得し、より実効性の高いネットワーク診断に役立ててください。

視覚的に整理されたレポートは、組織全体のセキュリティ意識を高め、迅速な脆弱性対応を実現するための強力な武器となるはずです。