1_本記事の全体像
本記事は、以下の流れで解説します。
ポートスキャンはネットワーク上でどのポートが公開されているかを調べる基本的な診断行為であり、正しく行えば防御強化に役立ち、無許可では法的リスクがある。
2_ポートスキャンとは(目的・仕組み・誰が行うのかなど)
ポートスキャンは、ネットワーク上のホストがどのTCP/UDPポートを開放しているかを調べる行為です。目的は、実施者の立場で大きく2つに分かれます。
攻撃者の場合 → 「脆弱なサービスを発見して侵入の足がかりにする」
管理者の場合 → 「サービスの公開状況を把握して不要なポートを閉じる」

すいません・・・そもそもポートって何でしたっけ?

ポートとは各情報機器(端末やサーバ等)におけるネットワーク通信の受付窓口を指しています。ポートは各種機器に複数存在し、利用する通信(アプリケーション)ごとに番号が振られているため、このポート番号を見ることでどのような通信をしているか判別することが出来ます。
2-1_Web通信(https通信)における、ポート番号を利用する流れ


補足として、IPアドレスが判明していれば、相手方の機器までに通信が届きます。ただし、実際の通信は機器の中で動いている特定のサービス(アプリケーション)と取る形になるので、各機器にIPアドレスで情報が届くだけでは通信が成立しません。機器は通常、複数のサービスが同時に稼働しているため、どのサービスと通信を取ろうとしているのか特定する必要があり、そのための識別子がポート番号だと思ってください。
なおポート番号に関する記事は、下記で解説しています。
2-2_スキャンの基本的な仕組み(ポートの状態:open/closed/filtered)
ポートスキャンは送信元から各ポートへパケットを送り、受け取る応答により状態を判定します。
各状態の意味は次のとおりです。

UDP通信はステートレスなため応答がない=openとは限らず、誤検知に注意してください。
2-3_なぜスキャンするのか(攻撃の足がかり、脆弱性把握、運用確認)
スキャンは攻撃者にとって侵入の第一歩である一方、運用者にとってはセキュリティ強化と健全性確認の有力手段です。
攻撃者 → openポートで稼働するサービスの脆弱性を発見し、サービスの権限を乗っ取る等の本命の攻撃に移行する。

管理者 → 定期的なスキャンで想定外の公開ポートを見つけ、不要なサービス停止、アクセス制御、パッチ適用を行い、攻撃者側に侵入されるリスクを減らす。

3_ポートスキャンの主な種類(手法比較・図表)
ポートスキャンは、TCPプロトコルの前提である「3ウェイハンドシェイク」の通信を利用して実施されます。
3-1_3ウェイハンドシェイクとは?

TCPは、信頼性や順序制御に重点を置いている通信方法だったと気がするのですが、3ウェイハンドシェイクって何でしたっけ?

3ウェイハンドシェイクは、通信を行える状態にあるかを事前に確認する通信のことを指します。送る側が「①SYN」という合図を送って接続を要求します。受け取った側は「②SYN+ACK」で受け取りと準備完了を伝えます。最後に送る側が「③ACK」で受け取りを確認すると接続が確立し、データの送受信が可能となります。

3-2_ポートスキャンの具体的な種類について
TCPを利用したポートスキャンについて、以下代表的な方法があります
| 種類 | 原理 | 検出性 |
|---|---|---|
| ❶TCPコネクトスキャン | 3ウェイハンドシェイクを最後まで実施し、ポートの状況を把握する。 ※3-1の図で説明すると、「③ACK」まで実施する | 3ウェイハンドシェイクによるコネクションが確立されるため、ログに記録が残る。 |
| ❷SYNスキャン (=ステルススキャン) | 3ウェイハンドシェイクの内、「①SYN」送信のみ行う。サーバからの通信が「②SYN/ACK」であればopen状態と判断し、「RST/ACK」であればclosed状態と判断する。 | コネクションが確立しないためログに残らない。 |
4_ポートスキャンの実例(代表的なツールと基本コマンド)
ポートスキャンもそうですが、ネットワークを学習するには、実際の設定画面を確認したり、コマンドを実行したりするのが一番です(百聞は一見に如かず!)。ただし、実際のネットワーク環境で実行するのは、リスクがあるため注意が必要です。本ブログでは、PC内に仮想環境をに作成して、安全に各種検証を行います。
※公開ネットワークや他者環境で実行には、法的・倫理的リスクが存在します。
4-1_本記事で使用する検証環境及びコマンド
本検証環境では、一台の物理WindowsPC上にLinuxのOS環境を作成し、さらにLinuxOS上で コンテナ型の仮想マシンを稼働させてネットワークを構築しています。(下記図参照)

【物理スペック】
PC CPU:Intel Core i5、メモリ16GB、SSD:256GB
【各種ソフトウェア】
WSL2 → WindowsOSの中でLinuxOSを動かすツール
Ubuntu24.04 → Linux系のオペレーティングシステム【OSS】
Docker → コンテナ型仮想ツール
使用するのはnmapコマンドになります。(Ubuntu VMを起動し内部のみでnmap実行)。
基本コマンド例:PC1からサーバ1にポートスキャンを実施
nmap -sS -p1-1024 192.168.1.2(SYNスキャン、ポート範囲指定)。
4-2_スキャン結果の読み方(open/closed/filtered の実務解釈)
Starting Nmap 7.80 ( https://nmap.org ) at 2025-11-03 11:00 JST
Nmap scan report for 192.168.1.2
Host is up (0.0012s latency).
Not shown: 1018 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
139/tcp filtered netbios-ssn
443/tcp open https
631/tcp open ipp
---------------------------------------------------
5_検出と防御(運用と技術)ポートスキャンやSPA
検出はログ収集とSIEM(ログ分析ツール)のアラートで行います。典型的なサインは短時間に多数ポートへ接続試行する行動で、閾値を設定してアラート化します。防御技術としては最小公開原則(必要最小限のポートだけ開放)で運用することが大事です。
5-1_よくある運用課題と対処例(ケーススタディ)
例1(攻撃)
外部からの大量スキャンでサーバ負荷が上がった場合は、まずトラフィックの緩和策(WAFの一時ルール等)を実施し、攻撃元IPをブラックリスト化して調査を進めます。
例2(管理)
社内サービスで不審なopenポートが見つかった場合は、該当サービスの正当性を確認し不要なら即時停止、必要であればアクセス制御と速やかなパッチ適用を行います。いずれも証跡(スキャンログ、タイムスタンプ、運用判断)を残し、対応手順をドキュメント化して再発防止に繋げることが重要です。
(参考)よくある質問
- Q1ポートスキャンは違法ですか?
- A1
権限のない相手のネットワークや公開サービスへのスキャンは法的・契約上問題になることがあるため、実施前に必ず権限確認や利用規約を確認してください。社内や自分の環境での検査は通常許容されます。
- Q2open と filtered の違いは何ですか?
- A2
openはサービスがポートでリッスンしている状態、filteredはファイアウォール等でパケットがブロックまたはフィルタされている可能性を示します。filteredは到達性が不確定なため追加確認が必要です。
- Q3ポートスキャンの検出方法は?
- A3
ログ監視、接続試行のレート監視で検出できます。特に複数IP/ポートへの短時間の接続試行はスキャンの典型的シグナルであり、閾値を設けてアラート化します。



コメント