〝ポートスキャン〟って、結局何をしているの?
この記事では、「ポートスキャンとは何か」を初心者にも分かりやすく整理し、ポートスキャンの概要や目的、実際のツール使用例、対策方法を丁寧に解説しています。
ポートスキャンとは
ポートスキャン(Port Scan)とは、ネットワーク上のサーバーやデバイスに対して、通信に使用されるポートが開いているか、閉じているかを確認する手法のことです。ポートスキャンは、脆弱性診断やペネトレーションテストにおいて、システムの弱点を発見するための手段として活用されます。
ポートスキャンの目的
ポートスキャンの目的は、セキュリティエンジニアやネットワーク管理者がシステムの脆弱性を評価し、潜在的なセキュリティリスクを早期に発見することです。例えば、意図しないポートが開放されていると、不正アクセスやサイバー攻撃の経路として利用される可能性があるため、定期的なポートスキャンによってリスクを検出し、適切な対策を講じる必要があります。
- 開放ポートの確認 : 不要なポートが開放されていないか確認する。
- サービスの稼働状況の確認 : 指定したポートで稼働しているサービスやバージョンを確認する。
一般に使用されるポートスキャンツールは、サーバーで稼働しているサービスの種類やバージョン情報を収集する機能も備えており、これにより脆弱なバージョンのサービスや未更新のソフトウェアを特定することができます。
ポートスキャンで得られる情報
開放されているポート
ポートスキャンを行うことで、対象システムで開放されているポート番号が分かります。開いているポートは、サービスやアプリケーションが外部との通信を許可していることを示します。
稼働中のサービスやアプリケーションの種類とバージョン情報
開放ポートが分かると、そのポートで稼働している具体的なサービス(例:Webサーバー、メールサーバーなど)を判別することができます。サービスの特定には、バナー情報を収集することが多く、これによりどのサービスがどのバージョンで動作しているかを確認できます。
OS情報
ポートスキャンの一部として行われるOSフィンガープリンティングにより、対象システムのOSを特定することができます。これにより、LinuxやWindowsといったOS種別や、場合によってはそのバージョンも判別することが可能です。
ネットワーク構成
各ポートの状態や応答を分析することで、Webサーバー、ルーター、データベースサーバー、ファイアウォールなど、デバイスの特性が明らかになり、内部ネットワークのトポロジー(構造)を把握することができます。
代表的なポート
| ポート番号 | プロトコル | サービス | 説明 |
|---|---|---|---|
| 20 | TCP | FTP (データ転送) | ファイル転送プロトコルのデータポート |
| 21 | TCP | FTP (制御) | ファイル転送プロトコルの制御ポート |
| 22 | TCP/UDP | SSH | セキュアなリモートログイン |
| 23 | TCP | Telnet | テキストベースのリモートログイン |
| 25 | TCP | SMTP | メール送信プロトコル |
| 53 | TCP/UDP | DNS | ドメインネームサービス |
| 67 | UDP | DHCP (サーバー側) | IPアドレスの自動割り当て (サーバー) |
| 68 | UDP | DHCP (クライアント側) | IPアドレスの自動割り当て (クライアント) |
| 80 | TCP | HTTP | ウェブページの標準通信プロトコル |
| 110 | TCP | POP3 | メール受信プロトコル |
| 119 | TCP | NNTP | ニュースグループ用プロトコル |
| 123 | UDP | NTP | 時刻同期プロトコル |
| 143 | TCP | IMAP | メール受信プロトコル (POP3の代替) |
| 161 | UDP | SNMP | ネットワーク管理プロトコル |
| 194 | TCP | IRC | インターネットリレーチャット |
| 443 | TCP | HTTPS | SSL/TLSによるセキュアなHTTP通信 |
| 465 | TCP | SMTPS | セキュアなSMTP (メール送信) |
| 993 | TCP | IMAPS | セキュアなIMAP (メール受信) |
| 995 | TCP | POP3S | セキュアなPOP3 (メール受信) |
ポートスキャンの種類
ポートスキャンにはさまざまな種類があり、それぞれ異なる目的や特性を持っています。以下では、代表的なポートスキャンの種類を詳しく解説します。
- TCPスキャン
- SYNスキャン
- FINスキャン
- Xmasスキャン(クリスマスツリースキャン)
- NULLスキャン
- UDPスキャン
TCPスキャン
TCPスキャンは、ポートスキャンの基本的な手法の一つで、ネットワーク上のデバイスにおけるTCPポートの開閉状態を確認するために用いられます。この手法では、標準的なTCP接続の手順に従ってスキャンを実行し、ターゲットホストがどのポートを開放しているかを特定することを目的としています。具体的には、TCPの「3ウェイハンドシェイク」を利用して、通信を確立するプロセスを踏むことで、ターゲットのポートが応答可能かを確認します。
SYNスキャン
SYNスキャンは、ハーフオープンスキャンとも呼ばれ、TCP通信の初期接続における「3ウェイハンドシェイク」の一部を利用して、対象ホストのポートの開閉状態を調べる手法です。
SYNスキャンでは、3ウェイハンドシェイクを最後まで完了させず、接続確立前にスキャンを終了させます。
この手法は、高速かつ効率的にポート状態を把握できるため、Nmapなどのスキャンツールのデフォルトスキャンに採用されています。
FINスキャン
通常のTCP接続では、通信を開始する際にSYNパケットを送信し、サーバーからの応答によって接続が確立されます。しかし、FINスキャンではこの手順を踏まず、いきなり終了信号であるFINパケットを送信します。
Xmasスキャン(クリスマスツリースキャン)
Xmasスキャン(クリスマスツリースキャン)は、TCPパケットにおいて通常とは異なるフラグを複数設定することでターゲットシステムの反応を引き出す方法です。Xmasスキャンでは、TCPヘッダの複数のフラグ(FIN、PSH、URG)を同時に設定することで「点灯している」状態を作り出します。
NULLスキャン
NULLスキャンは、TCPフラグが一切設定されていない状態(フラグがNULLの状態)でパケットを送信し、ポートの状態を判断するスキャン手法です。通常、TCPパケットにはフラグが設定され、通信の目的や状態を示しますが、NULLスキャンではフラグが何も指定されていない異常なパケットを利用します。
UDPスキャン
UDPスキャンは、ターゲットのUDPポートの開放状況を確認するスキャン手法です。UDPは接続確立のハンドシェイクが不要で、送信先からの応答が期待できない非接続型のプロトコルです。こうしたコネクションレスな特性により、スキャン精度が低くなりやすい特徴があります。
ポートスキャンの実行方法
ポートスキャンの流れ
- ターゲット選定
- まず、調査対象のデバイスのIPアドレス、またはネットワーク範囲を選定する。
- ポート番号の選定
- どのポートをスキャンするかを選ぶ。
- パケット送信
- 指定したポートにパケットを送信し、応答を待つ。
- 応答解析
- ターゲットからの応答を解析し、各ポートの状態を判断する。
この流れに従って、以下に記載しているツールを用いて、ポートスキャンを実施します。
ポートスキャンができるツール
最も一般的で多機能なツールとして「Nmap」が挙げられます。Nmap(Network Mapper)は、ネットワークスキャンやポートスキャンに特化した強力なツールであり、世界中のセキュリティエンジニアに広く利用されています。このツールは、TCPやUDPのポートスキャン、OSの特定、さらにはサービス検出やバージョン検出も可能です。Nmapの高度な機能により、スキャン方法や検出精度を細かく調整できるため、セキュリティ診断の現場で非常に重宝されています。
- Nmap
- Netcat (nc)
- hping3
- RustScan
- Angry IP Scanner
- Advanced Port Scanner
- Masscan
- ZMap
- Amap
- Unicornscan
- GVM(旧称:OpenVAS) ※脆弱性スキャナ
ポートスキャンの実行例(Nmapの場合)
Nmapは、CLI(コマンドライン・インタフェース)のため、ターミナルからnmapコマンドを実行します。
Nmapの実行コマンドの一例
nmap -sT -p 1-1024 -sV -O -oN output.txt 192.168.1.0/24-sT:スキャン手法(TCPスキャン)-p 1-1024:対象ポート-sV:サービス・バージョン検出を行う-O:OS識別を行う-oN output.txt:スキャン結果をファイル出力する192.168.1.0/24:対象ホスト
Nmapの特徴や使い方は、以下の記事で詳しく解説しています。

ポートスキャンで検出された脆弱性の対策
不要なポートやサービスを停止したり、OS・ミドルウェアを常に最新バージョンに保つことで、セキュリティリスクを最小限に抑えることができます。
不要なポートを閉じる
不要なポートを閉じることは、サーバーやネットワーク機器を外部からの不正アクセスや攻撃から保護するための基本的かつ重要な対策です。多くのシステムには、初期設定で複数のポートが開いていることがあり、その中には実際には使用されていない、もしくは業務上必要ないポートも含まれています。これらの不要なポートを開いたままにしておくと、外部からの侵入や攻撃者による探索の対象となり、不正アクセスの足掛かりに利用されるリスクが高まります。
不要なポートを閉じることで、システムが外部からアクセスされる経路を減らし、セキュリティリスクを大幅に軽減できます。
不要なサービスを停止する
多くのOSやミドルウェアでは、初期設定で複数のサービスが有効化されており、その中には業務に直接関係しない機能が含まれていることもあります。
このような事態を防ぐためにも、業務に不要なサービスを事前に確認し、停止しておくことが肝要です。
OSやミドルウェアのバージョンを最新にする
OSやミドルウェアには、日々新しい脆弱性が発見され、それを悪用する攻撃手法も多岐にわたります。攻撃者は、特定のバージョンの脆弱性を利用してシステムへの侵入を図るため、古いバージョンを使用しているとそのリスクが高まります。
最新バージョンに更新することにより、既知の脆弱性が修正され、攻撃者が悪用できる余地が減少します。特にOSやミドルウェアのアップデートでは、セキュリティパッチが頻繁にリリースされているため、迅速に適用することが重要です。
