はじめに
この実験では、強力なネットワークスキャンツールである Nmap を使用して、ネットワーク上で実行されているサービスを発見し分析する方法を学びます。Nmap は、ネットワーク管理者やセキュリティ専門家にとって重要なツールで、ネットワークの探索やセキュリティ監査に一般的に使用されています。
習得するスキルには、基本的な Web サーバーのセットアップ、Nmap を使用したサービスのスキャンと検出、スキャン結果の解釈、および調査結果の効果的な文書化が含まれます。この知識は、ネットワークセキュリティ評価の基礎であり、潜在的なシステムの脆弱性を特定するために実際のシナリオで広く適用されています。
ウェブサーバーのセットアップ
このステップでは、ローカルマシンに基本的な Web サーバーをセットアップします。なぜこれを行う必要があるのでしょうか?この Web サーバーは、後で Nmap のスキャン練習の対象として機能します。Nmap はネットワーク探索とセキュリティ監査に強力なツールであり、スキャンするローカル Web サーバーを用意することで、安全で管理しやすい環境でその動作を理解するのに役立ちます。
Web サーバーとは何ですか?
Web サーバーは、Web 上で重要な役割を果たすソフトウェアです。ブラウザで Web サイトを開くとき、あなたの要求に応じて HTML ページ、画像、ビデオなどの Web コンテンツをブラウザに送信するのが Web サーバーです。この実験では、Python の組み込み機能を利用して簡単な HTTP サーバーを作成します。HTTP (Hypertext Transfer Protocol) は Web 上のデータ通信の基礎であり、Python の組み込みサーバーを使用することで、迅速かつ簡単に Web サーバーを起動して実行できます。
Web ディレクトリとコンテンツの作成
まず、ターミナルを開く必要があります。ターミナルは、コマンドを入力することでコンピュータのオペレーティングシステムと対話できるテキストベースのインターフェイスです。ターミナルを開いたら、プロジェクトディレクトリに移動します。ターミナルでの移動とは、コンピュータのファイルシステムを移動することを意味します。次のコマンドを使用してプロジェクトディレクトリに移動します。
cd /home/labex/project次に、Web サーバーのコンテンツ用の新しいディレクトリを作成します。ディレクトリは、コンピュータ上のフォルダのようなもので、ファイルを格納できます。
mkdirコマンドを使用して新しいディレクトリを作成します。ここで-pフラグが重要です。これは、親ディレクトリ(作成するディレクトリを含むディレクトリ)が存在しない場合、それらを自動的に作成することを保証します。次のコマンドを実行します。mkdir -p servicesディレクトリを作成した後、その中に移動する必要があります。デスクトップ上のフォルダを開くのと同じように、
cdコマンドを使用して新しく作成したディレクトリに入ります。cd services次に、簡単な HTML ファイルを作成します。HTML (Hypertext Markup Language) は、Web ページを作成するための標準言語です。このファイルは、Web サーバーによって提供されます。次のコマンドは、
index.htmlという名前のファイルを作成し、その中に「Welcome to the mini fortress」というテキストを入れます。echo "Welcome to the mini fortress" > index.html最後に、ポート 8000 で Python HTTP サーバーを起動します。ポートは、コンピュータ上のドアのようなもので、ネットワークトラフィックが出入りできます。ポート 8000 は、Web サーバーのテストに一般的に使用されるポートです。次のコマンドは、Python の組み込み HTTP サーバーモジュールを使用して Web サーバーを起動します。
python3 -m http.server 8000このコマンドを実行すると、次のような出力が表示されるはずです。
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...これは、Web サーバーが起動して実行中で、要求を受け付ける準備ができていることを意味します。
Web サーバーの検証
Web サーバーが正しく動作していることを確認するには、新しいターミナルウィンドウを開く必要があります。最初のターミナルウィンドウは Web サーバープロセスによって占有されているため、そのまま実行しておきます。これを閉じると、Web サーバーが停止します。
新しいターミナルウィンドウを開きます。
次に、
curlコマンドを使用して Web サーバーにアクセスします。curlは、サーバーとの間でデータを転送できるコマンドラインツールです。次のコマンドを実行します。curl http://localhost:8000すべてが正常に動作している場合、
Welcome to the mini fortressというメッセージが表示されるはずです。これにより、Web サーバーが実行中でアクセス可能であることが確認されます。
先ほどセットアップした Web サーバーは、最初のターミナルウィンドウで引き続き実行されます。このウィンドウを開いたまま、サーバーを実行したまま次のステップに進みます。以降のすべてのコマンドは、新しく開いたターミナルウィンドウで実行してください。
Nmap を使用したサービスのスキャン
このステップでは、強力なツールである Nmap を使用して、前のステップでセットアップした Web サーバーサービスをスキャンして検出します。サービスのスキャンはサイバーセキュリティの重要な部分です。なぜなら、ネットワーク上で実行されているサービスが何であるか、そして攻撃に対して脆弱である可能性があるかを理解するのに役立つからです。
Nmap の理解
Nmap は Network Mapper の略で、無料のオープンソースユーティリティです。ネットワーク探索とセキュリティ監査に広く使用されています。Nmap は、ネットワーク上のターゲットホストに生の IP パケットを送信することで動作します。受け取った応答に基づいて、いくつかの重要な情報を把握することができます。
- まず、ネットワーク上で利用可能なホストが何であるかを教えてくれます。ホストは、コンピュータ、サーバー、またはネットワークに接続された任意のデバイスです。
- 次に、それらのホストが提供しているサービスを判断することができます。サービスには、Web サーバー、メールサーバー、またはファイル共有サービスなどが含まれます。
- さらに、ホストが実行しているオペレーティングシステムを特定することもできます。これは、異なるオペレーティングシステムが異なるセキュリティ脆弱性を持つ可能性があるため、有用です。
- そして、Nmap はネットワーク上のホストに関する他の多くの特性を発見することができます。
基本的なサービススキャンの実行
スキャンを開始する前に、プロジェクトディレクトリにいることを確認する必要があります。プロジェクトディレクトリは、この実験に関連するすべてのファイルが保存されている場所です。プロジェクトディレクトリに移動するには、ターミナルで
cdコマンドを使用します。cd /home/labex/project次に、ローカル Web サーバーに対して Nmap サービススキャンを実行します。ローカル Web サーバーは自分のマシン上で実行されており、Nmap を使用してポート 8000 で実行されているサービスを調べます。
sudo nmap -sV localhost -p 8000このコマンドを分解して、各部分が何をするかを理解しましょう。
sudo: これは、管理者権限でコマンドを実行するために使用されます。システム内の一部の操作には管理者権限が必要であり、Nmap は適切なスキャンを実行するためにこれらの権限を必要とする場合があります。nmap: これは、これまで話してきたネットワークマッピングツールです。スキャンを実行するために使用する主要なコマンドです。-sV: このオプションは、バージョン検出を有効にします。これにより、Nmap はターゲットポートで実行されている具体的なサービスを識別することができます。localhost: これは、スキャンするターゲットです。この場合、自分のローカルマシンです。-p 8000: このオプションは、ポート 8000 をスキャンすることを指定します。ポートはコンピュータ上のドアのようなもので、異なるサービスは異なるポートを使用して通信します。
コマンドを実行した後、次のような出力が表示されるはずです。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:00 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.000094s latency). PORT STATE SERVICE VERSION 8000/tcp open http Python/3.10 http.server Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 6.31 secondsこの出力は、Nmap がポート 8000 で実行されている HTTP サービスを検出したことを示しています。具体的には、このサービスが Python 3.10 HTTP サーバーであると識別されています。
スキャン結果を記録してさらなる分析を行うために、出力をファイルに保存します。こうすることで、後で結果を参照し、潜在的なセキュリティ問題を探すことができます。
sudo nmap -sV localhost -p 8000 > /home/labex/project/nmap_service_detection.txtこのコマンドは、前と同じ Nmap スキャンを実行しますが、出力をターミナルに表示する代わりに、
nmap_service_detection.txtという名前のファイルにリダイレクトします。次に、保存したファイルの内容を表示して、結果が正しく保存されていることを確認します。
catコマンドを使用して、ファイルの内容をターミナルに表示します。cat /home/labex/project/nmap_service_detection.txt表示される内容は、直接 Nmap コマンドを実行したときに見た出力と一致するはずです。
Nmap 出力の理解
Nmap スキャンの出力を詳しく見て、各部分の意味を理解しましょう。
- Starting Nmap 7.80: この行は、使用されている Nmap のバージョンを示しています。異なるバージョンの Nmap は、異なる機能と能力を持つ場合があります。
- Host is up: これは、ターゲット(この場合、自分のローカルマシン)がネットワーク要求に応答していることを示しています。ホストがダウンしている場合、Nmap はそこから何の情報も取得できません。
- PORT: この列は、スキャンされたポート番号をリストしています。この場合、ポート 8000 です。
- STATE: これは、ポートの状態を示しています。open、closed、または filtered のいずれかになります。open ポートは、そのポートでサービスが待機しており、接続を受け付けていることを意味します。
- SERVICE: これは、ポートで実行されているサービスを識別しています。この出力では、HTTP サービスです。
- VERSION: これは、サービスのバージョンに関する詳細を示しています。ここでは、HTTP サービスが Python 3.10 http.server であることがわかります。
この情報は、セキュリティ評価において重要です。ネットワーク上で公開されているサービスが何であるかを知ることで、それらに既知の脆弱性があるかどうかを確認することができます。これらのサービスが適切にセキュリティ保護されていない場合、攻撃者によって悪用される可能性があります。
調査結果の文書化
このステップでは、Nmap を使用して発見したサービス情報を文書化することに焦点を当てます。文書化は、セキュリティ作業の世界における地図のようなものです。スキャン中に見つけたすべての重要な詳細を記録できるため、非常に重要です。この記録は、後で分析のために参照したり、時間の経過に伴う変化を確認したり、特定のコンプライアンス要件を満たすために使用することができます。
文書化の重要性
専門的なセキュリティ評価やネットワーク監査では、詳細な文書化がいくつかの重要な役割を果たします。
- システムとサービスのスナップショット:特定の時点で存在していたシステムとサービスの記録を作成します。これは、特定の瞬間におけるネットワークの状態を理解するのに役立ちます。
- 変更の追跡:ネットワークインフラストラクチャの変更を追跡するのに役立ちます。異なる時点の文書を比較することで、新しいサービス、削除されたシステム、またはその他の変更を簡単に見つけることができます。
- コンプライアンスの証拠:適切なセキュリティチェックを実施したことの証拠を提供します。これは、さまざまな規制や標準でしばしば要求されます。
- 改善策の計画:セキュリティの改善策を計画する際の参考として機能します。文書化された調査結果を見ることで、注意が必要な領域を特定することができます。
文書化ファイルの作成
ステップ 1: プロジェクトディレクトリに移動する
まず、プロジェクトディレクトリにいることを確認する必要があります。ここが、文書化ファイルを作成して保存する場所です。これを行うには、「change directory」の略である cd コマンドを使用します。
cd /home/labex/project
ステップ 2: 新しいファイルを作成する
次に、調査結果を文書化するための新しいファイルを作成します。touch コマンドを使用します。ファイルが存在しない場合、touch は指定された名前の空のファイルを作成します。
touch nmap_findings.txt
ステップ 3: 説明的なヘッダーを追加する
次に、文書化ファイルに説明的なヘッダーを追加します。このヘッダーは、追加するスキャン結果にいくらかの文脈を与えます。echo コマンドを使用してテキストを印刷し、>> 演算子を使用してファイルに追加します。>> 演算子は、既存の内容を上書きせずにテキストをファイルの末尾に追加するため、重要です。
echo "Nmap has detected the following service running on localhost, port 8000:" >> nmap_findings.txt
ステップ 4: 詳細なスキャン結果を追加する
次に、詳細な Nmap スキャン結果を文書化に追加します。再度 Nmap スキャンを実行し、>> 演算子を使用して結果をファイルに追加します。
nmap -sV localhost -p 8000 >> nmap_findings.txt
ステップ 5: 文書化を確認する
最後に、完成した文書化を確認しましょう。「concatenate」の略である cat コマンドを使用して、ファイルの内容を表示します。
cat nmap_findings.txt
あなたのファイルには、次のようなヘッダーと完全な Nmap スキャン結果が含まれているはずです。
Nmap has detected the following service running on localhost, port 8000:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
PORT STATE SERVICE VERSION
8000/tcp open http Python/3.10 http.server
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds
セキュリティ文書化のベストプラクティス
実際のシナリオでセキュリティ調査結果を文書化する際には、いくつかの重要な要素を含めることを検討する必要があります。
- 評価の日付と時間:これは、スキャンがいつ実施されたかを追跡するのに役立ち、ネットワークの変化のタイムラインを理解するのに役立ちます。
- 使用したツール(バージョン番号を含む):どのツールが使用され、そのバージョンが何であるかを知ることは、再現性とスキャンの機能を理解するために重要です。
- 評価の範囲:テスト対象を明確に定義します。これには、特定の IP アドレス、ポート、またはシステムが含まれる場合があります。
- 証拠付きの詳細な調査結果:調査結果についてできるだけ詳細に記述し、それを支持する証拠を提供します。
- 潜在的なセキュリティ影響:調査結果を分析し、潜在的なセキュリティリスクや脆弱性を特定します。
- 改善策の推奨事項:調査結果に基づいて、ネットワークのセキュリティを改善するための手順を提案します。
この実験では、スキャン結果を含む簡単な文書を作成しましたが、専門的な文脈では、文書化は通常、より包括的なものになります。
まとめ
この実験では、Nmap を使用したネットワークサービスの発見と文書化に必要な基本的なスキルを学びました。これらのスキルは、世界中の専門家が使用するネットワークセキュリティ評価の基礎となるものです。
主な要点は、基本的な Web サーバーのセットアップ、実行中のサービスを検出するための Nmap の使用、スキャン結果の解釈、および調査結果の文書化です。これらのスキルは、ネットワークインベントリ管理、セキュリティ評価、システム管理、およびコンプライアンス検証などの実際のシナリオで適用できます。ネットワーキングとセキュリティの分野で進歩するにつれて、Nmap は非常に価値のあるツールになります。Nmap の高度な機能を探索して、ネットワーク発見能力を向上させることを検討してください。



