Nmapでよく使われるネットワークポートをスキャンする

NmapBeginner
オンラインで実践に進む

はじめに

この実験では、Nmapを使ってよく使われるネットワークポートをスキャンする方法を学びます。ポートスキャンはネットワークセキュリティにおける重要な手法です。対象システムで開いているポートを特定できるためです。開いているポートは攻撃者に侵入される経路となる可能性があるため、ネットワーク管理者やセキュリティ担当者にとって必須のスキルです。

強力なオープンソースのネットワークスキャンツールであるNmapを使いこなすと、ネットワーク上で稼働しているサービスを確認し、セキュリティ上の脆弱性を評価して、システムの完全性を保つことができます。

ネットワークポートを理解し、Webサーバーをインストールする

このステップでは、ネットワークポートとは何か、またサイバーセキュリティにおいてなぜ重要なのかを学びます。ネットワークポートは、コンピューターネットワーク内の異なるアプリケーションやサービスが通信するために欠かせません。ポートは、システムへのデータの出入りを可能にするゲートウェイの役割を果たします。ネットワークセキュリティに関心がある人にとって、理解しておくべき重要な概念です。

ネットワークポートとは

ネットワークポートは、コンピューターネットワーク上で通信するための仮想的なエンドポイントです。アプリケーションやサービスがデータを送受信するための「ドア」と考えることができます。複数のアプリケーションやサービスが、互いに干渉せずに同じシステムのネットワークリソースを共有できます。ポートは0から65535までの番号で識別され、番号の範囲ごとに用途が定められています。

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

スキャン用のWebサーバーをセットアップする

ポートスキャンを試すために、まずローカルマシンにWebサーバーをセットアップします。Webサーバーは、HTTP(Hypertext Transfer Protocol)を使ってWebページを構成するファイルをユーザーに提供するプログラムです。ユーザーがブラウザーにWebサイトのアドレスを入力すると、ブラウザーからWebサーバーにリクエストが送られます。サーバーは、対応するWebページを返します。Webサーバーはデフォルトでポート80を使用します。

LabExの仮想マシン環境でターミナルを開きます。ターミナルは、コマンドを入力してOSを操作するためのテキストベースのインターフェースです。作業ディレクトリは、デフォルトの /home/labex/project になっているはずです。現在のディレクトリを確認するには、次のコマンドを実行します。

pwd

pwd は「print working directory」の略です。このコマンドを実行すると、現在のディレクトリのパスが表示されます。次のように表示されることを確認してください。

/home/labex/project

Apache2 Webサーバーをインストールします。

sudo apt update && sudo apt install apache2 -y

sudo は、管理者権限でコマンドを実行します。apt update はシステムのパッケージ情報を更新し、apt install apache2 -y はApache2 Webサーバーをインストールします。-y オプションを指定すると、インストール時の確認に自動で「yes」と回答します。

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

sudo service apache2 start

service コマンドはシステムサービスを管理します。このコマンドはApache2を起動し、受信リクエストを処理できる状態にします。

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

sudo service apache2 status

status オプションは、Apache2サービスの現在の状態を表示します。次のような出力が表示されれば、Apache2は動作しています。

* apache2 is running

仮想環境に「Web Service」タブを追加して、Webサーバーにアクセスできることも確認できます。仮想環境の上部にあるタブの + をクリックし、「Web Service」を選択して、ポート 80 を入力します。セットアップが正しく完了していれば、Apache2のデフォルトのウェルカムページが表示されます。

これでシステム上でWebサーバーが動作し、通信に使うポート80が開きました。次のステップでは、Nmapを使ってこの開いているポートを確認します。

Nmapの概要とよく使われるポートのスキャン

このステップでは、設定したWebサーバーがあるシステムで、どのポートが開いているかをNmapで調べます。開いているポートを把握することは、ネットワークセキュリティにおいて重要です。開いているポートが攻撃者の侵入経路となる可能性があるためです。Nmapを使ってポートを特定し、適切なセキュリティ対策を講じましょう。

Nmapとは

Nmapは「Network Mapper」の略で、ネットワークの探索やセキュリティ監査に使われる、広く知られた無料のオープンソースツールです。ネットワークセキュリティの分野では、次のような幅広い用途があります。

  • ネットワーク上のホストやサービスを特定する:ネットワークに接続されているデバイスや、それらが提供するサービスを確認できます。たとえば、ネットワーク上にファイルサーバー、Webサーバー、メールサーバーがあるかどうかを調べられます。
  • ネットワーク上のシステム一覧を作成する:ネットワーク上のすべてのシステムについて、IPアドレスや稼働しているサービスを含む一覧を作成できます。この一覧は、ネットワークの管理や保守に役立ちます。
  • 対象ホストで開いているポートを確認する:コンピューターにとって、ポートはドアのようなものです。ポートが開いている場合、そのポートでサービスが接続を待ち受けています。Nmapで対象ホストをスキャンすると、開いているポートを確認できます。
  • ネットワークホストのOSやサービスのバージョンを特定する:ホストで稼働しているOSやサービスのバージョンがわかると、攻撃者に悪用される可能性のある既知の脆弱性がないか、セキュリティ担当者が確認しやすくなります。

Nmapでよく使われるポートをスキャンする

Nmapにはさまざまなスキャンオプションがあります。初めて使う場合は、高速スキャンオプション(-F)が便利です。Nmapはデフォルトで1000個のポートをスキャンするため、時間がかかることがあります。-F オプションを指定すると、スキャン対象がよく使われる100個のポートに絞られ、スキャンが速くなります。

先ほどセットアップしたWebサーバーを見つけるため、ローカルマシンを高速スキャンします。

ターミナルを開き、ローカルシステムに対して次の高速スキャンを実行します。

nmap -F localhost

このコマンドは、次の3つの要素で構成されています。

  • nmap:ネットワークスキャンツールを起動します。
  • -F:高速スキャンを有効にし、よく使われる100個のポートにスキャン対象を絞ります。
  • localhost:IPアドレス127.0.0.1でローカルマシンを指定します。

コマンドを実行すると、次のような出力が表示されます。

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 Webサーバーはデフォルトでポート80を待ち受けるため、これは想定どおりの結果です。
  • ほかの一般的なポートは閉じており、詳細は表示されていません。

開いているポートで稼働しているサービスのバージョンなど、より詳しい情報を確認するには、次のコマンドを実行します。

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 Webサーバーがポート80で動作していることと、そのバージョンを確認できます。

スキャン結果を理解する

スキャン結果には、ポート80が開いており、HTTPサービスが動作していると表示されています。インストールして起動したApache Webサーバーはデフォルトでポート80を待ち受けるため、想定どおりの結果です。実際の環境では、開いているポートを把握することがセキュリティ担当者にとって非常に重要です。

  • 潜在的なセキュリティ脆弱性を特定する:開いているポートで稼働するサービスには、既知の脆弱性がある場合があります。開いているポートと稼働中のサービスがわかれば、セキュリティ上のリスクがないか確認できます。
  • 必要なサービスだけが稼働していることを確認する:開いているポートで不要なサービスが稼働していると、攻撃対象領域が広がる可能性があります。開いているポートを特定し、必要なサービスだけが稼働していることを確認します。
  • ファイアウォールが想定どおりに動作していることを確認する:ファイアウォールは、ネットワーク通信の送受信を制御します。開いているポートをスキャンすると、ファイアウォールが意図したポートを許可またはブロックしているか確認できます。

スキャン結果の記録とセキュリティ上の影響

ネットワークセキュリティでは、調査結果を記録することが重要です。Nmapにはスキャン結果を効率よく記録するためのレポート出力機能があります。このステップでは、Nmapレポートの作成方法と結果の分析方法を学び、開いているポートがセキュリティに与える影響について考察します。最後に、この実験で起動したサービスを適切に停止し、システムの安全性を保ちます。

Nmapでレポートを作成する

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

出力オプションを指定してNmapスキャンを実行します。

nmap -F -sV localhost -oN /home/labex/project/nmap_report.txt

このコマンドでは、次のオプションを指定しています。

  • -F:高速スキャンを実行します(よく使われる100個のポートだけをスキャンします)。
  • -sV:開いているポートで稼働するサービスのバージョンを特定します。
  • -oN /home/labex/project/nmap_report.txt:スキャン結果をプレーンテキスト形式で、指定したファイルに保存します。

作成したレポートを表示します。

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サーバー)が動作していることがわかります。これには、次のようなセキュリティ上の影響があります。

  • 攻撃者の侵入経路となる可能性:開いているポートは、建物のドアのようなものです。それぞれのポートが、攻撃者のシステムへの侵入経路となる可能性があります。
  • サービスの脆弱性によるリスク:開いているポートで稼働するサービスには、攻撃者に悪用される可能性のあるセキュリティ上の欠陥が存在する場合があります。
  • 監視が必要な通信経路:開いているポートは通信に使われます。不審な動作を検知するために、これらのポートの通信を監視する必要があります。

ポートのセキュリティを保つため、次のベストプラクティスに従ってください。

  • 必要なポートだけを開きます。不要なポートを開いたままにすると、システムの攻撃対象領域が広がります。
  • それらのポートを使うサービスを定期的に更新します。アップデートには、脆弱性を修正するセキュリティパッチが含まれることがよくあります。
  • ファイアウォールルールを設定してアクセスを制限します。ファイアウォールを使うと、特定のポートを通じてシステムにアクセスできる相手を制御できます。
  • ポートの通信を監視し、不審なパターンがないか確認します。通信を監視すると、潜在的な脅威を適時に検知して対応できます。

実験環境の後片付け

スキャン演習が終わったので、Apache Webサーバーを停止します。必要のないサービスを起動したままにすると、セキュリティ上のリスクになる可能性があります。適切に後片付けを行いましょう。

Apacheサービスを停止します。

sudo service apache2 stop

サービスが停止したことを確認します。

sudo service apache2 status

次のように、Apache2が動作していないことを示す出力が表示されます。

* apache2 is not running

ポート80が閉じていることを確認します。

nmap -F localhost

出力でポート80が閉じていることを確認するか、開いているポートの一覧にポート80が表示されていないことを確認します。この後片付けは実際の環境でも重要です。不要になったサービスを起動したままにすると、セキュリティ上のリスクになる可能性があるためです。

まとめ

この実験では、ネットワークセキュリティに役立つ強力なオープンソースツールNmapを使って、ネットワークポートをスキャンする基礎を学びました。ネットワークポートの理解、ポートを開いた状態でのWebサーバーのセットアップ、Nmapによるよく使われるポートのスキャン、スキャン結果の読み取り、セキュリティレポートへの調査結果の記録、サービスの適切な停止を実際に経験しました。

これらのスキルは、ネットワークセキュリティ評価の基礎となります。ITセキュリティ、ネットワーク管理、システム管理に携わる人にとって重要です。ポートスキャンを使いこなすと、ネットワークの脆弱性を特定し、不正アクセスからシステムを保護できます。