Nmap を使用して一般的なネットワークポートをスキャンする

CybersecurityCybersecurityBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、一般的なネットワークポートをスキャンするために Nmap を使用する方法を学びます。ポートスキャンは、ネットワークセキュリティにおける重要な技術であり、ターゲットシステム上の開いているポートを特定するのに役立ちます。これらの開いているポートは攻撃者にとって潜在的な侵入ポイントとなる可能性があるため、ネットワーク管理者やセキュリティ専門家にとっては必須のスキルです。

強力なオープンソースのネットワークスキャンツールである Nmap を習得することで、ネットワーク上のアクティブなサービスを発見し、セキュリティバ ulnerability(脆弱性)を評価し、システムの整合性を維持することができます。

ネットワークポートの理解とウェブサーバーのインストール

ポートスキャンを開始する前に、ネットワークポートが何であるか、およびサイバーセキュリティの分野においてなぜ重要であるかを理解することが重要です。ネットワークポートは、コンピュータネットワーク内の異なるアプリケーションやサービス間の通信を可能にする上で重要な役割を果たします。ネットワークポートは、システムにデータを流入および流出させるゲートウェイとして機能し、ネットワークセキュリティに興味のある人にとっては理解すべき重要な概念です。

ネットワークポートとは何か?

ネットワークポートは、コンピュータネットワークにおける通信の仮想的なエンドポイントです。異なるアプリケーションやサービスがデータを送受信できるドアのようなものと考えてください。これにより、複数のアプリケーションやサービスが同じシステム上のネットワークリソースを相互に干渉することなく共有できます。ポートは 0 から 65535 までの番号で識別され、これらの番号の異なる範囲は特定の目的に割り当てられています。

  • ポート 0 - 1023: これらは標準サービス用に予約された一般的なポートです。たとえば、HTTP(ウェブブラウジングに使用)は通常ポート 80 を使用し、FTP(ファイル転送用)はポート 21 を使用し、SSH(安全なリモートアクセス用)はポート 22 を使用します。
  • ポート 1024 - 49151: これらは特定のアプリケーション用の登録済みポートです。ソフトウェア開発者は、自分たちのアプリケーションが使用する特定のポート番号を登録できます。
  • ポート 49152 - 65535: これらは動的またはプライベートポートです。アプリケーションが一時的な接続を確立する必要があるときに使用されます。

スキャン用のウェブサーバーのセットアップ

ポートスキャンの練習をするために、まずローカルマシン上にウェブサーバーをセットアップします。ウェブサーバーは、HTTP(ハイパーテキスト転送プロトコル)を使用して、ウェブページを構成するファイルをユーザーに提供するプログラムです。ユーザーがブラウザにウェブサイトのアドレスを入力すると、ブラウザはウェブサーバーにリクエストを送信し、サーバーは適切なウェブページを送信して応答します。デフォルトでは、ウェブサーバーはポート 80 で動作します。

  1. LabEx VM 環境でターミナルウィンドウを開きます。ターミナルは、コマンドを入力することでオペレーティングシステムと対話できるテキストベースのインターフェイスです。デフォルトのディレクトリ /home/labex/project にいるはずです。現在のディレクトリを確認するには、次のコマンドを使用できます。

    pwd

    pwd コマンドは「print working directory」(作業ディレクトリを表示)の略です。このコマンドを実行すると、現在いるディレクトリのパスが表示されます。次のような出力が表示されるはずです。

    /home/labex/project
  2. 次のコマンドを使用して Apache2 ウェブサーバーをインストールします。

    sudo apt update && sudo apt install apache2 -y

    sudo コマンドは、管理者特権でコマンドを実行するために使用されます。apt update はシステム上のパッケージ情報を更新し、利用可能なソフトウェアパッケージに関する最新の情報を持っていることを保証します。apt install apache2 -y は Apache2 ウェブサーバーをインストールします。-y オプションは、インストールプロセス中のすべてのプロンプトに自動的に「yes」と答えます。インストールが進行するにつれて、システムがソフトウェアをインストールするために行っている手順を示す多くの出力が表示されます。

  3. Apache2 サービスを起動します。

    sudo service apache2 start

    Apache2 ウェブサーバーをインストールした後、そのサービスを起動する必要があります。service コマンドは、システムサービスを管理するために使用されます。この場合、Apache2 サービスを起動して、着信リクエストを受け入れるようにします。

  4. Apache2 が正常に動作していることを確認します。

    sudo service apache2 status

    Apache2 サービスが期待通りに動作していることを確認するには、service コマンドに status オプションを使用できます。これにより、Apache2 サービスの現在の状態が表示されます。次のように、Apache2 がアクティブ(実行中)であることを示す出力が表示されるはずです。

    * apache2 is running
  5. 新しい「Web Service」タブを作成することで、ウェブサーバーにアクセスできることも確認できます。仮想環境の上部タブの + 記号をクリックし、「Web Service」オプションを選択して、ポート 80 を入力します。これにより、ポート 80 で実行されているウェブサーバーに接続しようとします。すべてが正しく設定されていれば、デフォルトの Apache2 ウェルカムページが表示されるはずです。

これでシステム上でウェブサーバーが動作しており、通信のためにポート 80 が開かれています。次のステップでは、Nmap を使用してこの開いているポートを発見します。

Nmap の紹介と一般的なポートスキャンの実行

ウェブサーバーのセットアップが成功したので、次は Nmap を使ってシステム上で開いているポートを特定する方法を学びましょう。開いているポートを把握することは、ネットワークセキュリティにおいて非常に重要です。なぜなら、開いているポートは攻撃者にとって潜在的な侵入ポイントとなり得るからです。Nmap を使うことで、これらのポートを特定し、適切なセキュリティ対策を講じることができます。

Nmap とは何か?

Nmap は Network Mapper の略で、ネットワーク探索とセキュリティ監査に使用される有名な無料のオープンソースツールです。ネットワークセキュリティの分野では様々な用途があります。

  • ネットワーク上のホストとサービスの発見:Nmap を使うと、ネットワークに接続されているデバイスとそれらが提供しているサービスを特定できます。たとえば、ネットワーク上にファイルサーバー、ウェブサーバー、またはメールサーバーがあるかどうかを検出できます。
  • ネットワーク上で動作しているシステムのインベントリ作成:Nmap を使って、ネットワーク上のすべてのシステムのリストを作成できます。このリストには、システムの IP アドレスと動作しているサービスが含まれます。このインベントリは、ネットワーク管理者がネットワークを管理および保守するのに役立ちます。
  • ターゲットホストで開いているポートの確認:ポートはコンピュータへの「ドア」のようなものです。開いているポートは、サービスが接続を待機していることを意味します。Nmap はターゲットホストをスキャンして、どのポートが開いているかを特定できます。
  • ネットワークホストのオペレーティングシステムとサービスのバージョンの特定:ホストで動作しているオペレーティングシステムとサービスのバージョンを知ることで、セキュリティ専門家は攻撃者が利用できる既知の脆弱性があるかどうかを判断できます。

Nmap を使った一般的なポートスキャン

Nmap は様々なスキャンオプションを提供しています。初心者には、高速スキャンオプション (-F) が非常に便利です。デフォルトでは、Nmap は 1000 個のポートをスキャンするため、時間がかかることがあります。-F オプションを使うと、スキャンするポートの数が最も一般的な 100 個に減少し、スキャンが大幅に高速化されます。

先ほどセットアップしたウェブサーバーを見つけるために、ローカルマシンで高速スキャンを実行しましょう。

  1. ターミナルを開きます。ターミナルでは、オペレーティングシステムと対話するためのコマンドを入力します。次のコマンドを入力して Enter キーを押します。

    nmap -F localhost

    このコマンドを分解してみましょう。

    • nmap:これは使用するスキャンツールです。システムにネットワークスキャンを開始するよう指示する主要なコマンドです。
    • -F:このオプションは高速スキャンモードを有効にします。スキャンを最も一般的な 100 個のポートに制限し、時間を節約します。
    • localhost:これはスキャンするターゲットです。localhost はローカルマシンを指し、IP アドレスは 127.0.0.1 です。
  2. コマンドを実行すると、次のような出力が表示されます。

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000097s latency).
    Not shown: 96 closed ports
    PORT   STATE SERVICE
    80/tcp open  http
    
    Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

    この出力には重要な情報が含まれています。

    • スキャンは IP アドレスが 127.0.0.1 のローカルマシンで実行されました。
    • ポート 80 が開いており、HTTP サービスが動作しています。これは先ほどインストールした Apache ウェブサーバーで、デフォルトでは Apache はポート 80 で待機します。
    • 他の 96 個の一般的なポートは閉じています。出力では詳細に表示されていません。
  3. 開いているポートで動作しているサービスのバージョンなど、より詳細な情報が必要な場合は、より詳細なスキャンを実行できます。次のコマンドを使用します。

    nmap -sV -F localhost

    このコマンドの -sV オプションは、開いているポートで動作しているサービスのバージョンを特定しようとします。出力はより詳細になります。

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000097s latency).
    Not shown: 96 closed ports
    PORT   STATE SERVICE VERSION
    80/tcp open  http    Apache httpd 2.4.X
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

    この出力から、Apache ウェブサーバーがポート 80 で動作していることが確認でき、また Apache HTTP サーバーのバージョンもわかります。

結果の理解

スキャン結果から、ポート 80 が開いており、HTTP サービスが動作していることがわかります。これは、デフォルトでポート 80 で待機する Apache ウェブサーバーをインストールして起動したため、予想される結果です。実際のシチュエーションでは、どのポートが開いているかを知ることは、セキュリティ専門家にとって非常に重要です。

  1. 潜在的なセキュリティ脆弱性の特定:開いているポートで動作している異なるサービスには、既知の脆弱性がある場合があります。どのポートが開いていて、それらのポートでどのサービスが動作しているかを知ることで、セキュリティ専門家はセキュリティリスクがあるかどうかを確認できます。
  2. 必要なサービスのみが動作していることを確認:開いているポートで不要なサービスが動作していると、攻撃の対象範囲が広がる可能性があります。開いているポートを特定することで、セキュリティ専門家は実際に必要なサービスのみが動作していることを確認できます。
  3. ファイアウォールの設定が期待通りに機能していることを検証:ファイアウォールは、ネットワークの入出力トラフィックを制御するために使用されます。開いているポートをスキャンすることで、セキュリティ専門家はファイアウォールがブロックすべきポートをブロックし、開放すべきポートを開放しているかどうかを確認できます。

Nmap スキャンレポートの生成とセキュリティへの影響の理解

ネットワークセキュリティの分野では、調査結果を文書化することは重要なステップです。Nmap は組み込みのレポート機能を提供しており、スキャン結果をより効果的に記録するのに役立ちます。このステップでは、Nmap レポートの生成方法、結果の分析方法、および開放ポートのセキュリティへの影響について学びます。最後に、この実験のために起動したサービスを適切に停止して、システムのセキュリティを確保します。

Nmap を使用したレポートの生成

Nmap は、スキャン結果をテキスト、XML、JSON などのさまざまなレポート形式で直接出力することができます。これは、手動でレポートを作成するよりも効率的で正確です。Nmap の出力オプションを使用してレポートを生成しましょう。

  1. 出力オプションを指定して Nmap スキャンを実行します。
nmap -F -sV localhost -oN /home/labex/project/nmap_report.txt

このコマンドでは、以下のオプションが使用されています。

  • -F オプションは高速スキャンを実行します(最も一般的な 100 のポートのみをスキャン)。
  • -sV は、開放されているポートで実行されているサービスのバージョンを判定しようとします。
  • -oN /home/labex/project/nmap_report.txt は、出力をテキスト形式で指定されたファイルに保存します。
  1. 生成されたレポートを表示します。
cat /home/labex/project/nmap_report.txt

スキャン日時、ターゲット情報、開放されているポートのリスト、各開放ポートで実行されているサービスとバージョンなど、完全なスキャン情報を含むレポートが表示されます。

その他のレポート形式オプション

Nmap は、さまざまな目的に適した複数の出力形式をサポートしています。

  • -oX filename - XML 形式で出力します。自動処理に適しています。
  • -oG filename - Grepable 形式で出力します。grep で検索するのに便利です。
  • -oJ filename - JSON 形式で出力します。最新のアプリケーションに適しています。
  • -oA filename - すべての形式(通常、XML、および Grepable)で同時に出力します。

たとえば、XML 形式のレポートを生成するには、次のコマンドを実行します。

nmap -F -sV localhost -oX /home/labex/project/nmap_report.xml

スキャン結果のセキュリティへの影響の理解

スキャンレポートから、ポート 80/tcp が開放されており、HTTP サービス(Apache Web サーバー)が実行されていることがわかります。これにはいくつかの重要なセキュリティ上の影響があります。

  1. 潜在的な攻撃の入口:開放されているポートは、建物のドアのようなものです。各開放ポートは、攻撃者がシステムに侵入する可能性のある経路となります。
  2. サービスの脆弱性リスク:開放されているポートで実行されているサービスには、攻撃者が悪用する可能性のあるセキュリティ上の欠陥がある場合があります。
  3. 監視が必要な通信チャネル:開放されているポートは通信に使用されるため、これらのポートのアクティビティを監視して、異常な動作を検出する必要があります。

ポートのセキュリティを確保するには、以下のベストプラクティスに従う必要があります。

  • 必要なポートのみを開放する:不要な開放ポートは、システムの攻撃対象範囲を拡大します。
  • これらのポートを使用するサービスを定期的に更新する:更新には、脆弱性を修正するセキュリティパッチが含まれることが多いです。
  • ファイアウォールルールを実装してアクセスを制限する:ファイアウォールは、特定のポートを介してシステムにアクセスできるユーザーを制御するのに役立ちます。
  • ポートのアクティビティを監視して異常なパターンを検出する:アクティビティを監視することで、潜在的な脅威を早期に検出して対応することができます。

実験のクリーンアップ

スキャンの演習が完了したので、Apache Web サーバーを停止する時期です。必要のないときにサービスを実行し続けると、セキュリティリスクが生じる可能性があるため、適切なクリーンアップは重要です。

  1. Apache サービスを停止します。
sudo service apache2 stop
  1. サービスが停止したことを確認します。
sudo service apache2 status

次のように、Apache2 が実行されていないことを示す出力が表示されるはずです。

* apache2 is not running
  1. ポート 80 が閉じていることを確認します。
nmap -F localhost

出力には、ポート 80 が閉じていること、または開放ポートのリストに含まれていないことが表示されるはずです。このクリーンアッププロセスは、実際のシナリオでは、必要のないときにサービスが実行され続けることによるセキュリティリスクを防ぐために重要です。

まとめ

この実験では、ネットワークセキュリティにおける強力なオープンソースツールである Nmap を使用したネットワークポートスキャンの基本を学びました。ネットワークポートの理解、開いたポートを持つウェブサーバーのセットアップ、Nmap を使用した一般的なポートスキャン、スキャン結果の解釈、セキュリティレポートへの調査結果の文書化、およびサービスの適切な停止に関する実践的な経験を積みました。

これらのスキルは、ネットワークセキュリティ評価の基礎です。IT セキュリティ、ネットワーク管理、およびシステム管理の専門家にとって非常に重要です。ポートスキャンを習得することで、ネットワークの脆弱性を特定し、システムを不正アクセスから保護することができます。