ポートスキャン



ポートスキャン(Port Scan)概要

ポートスキャンとは

ポートスキャンとは、ターゲットとなるホストの通信可能なポート番号を探査(スキャン)することです。

ポートスキャンでは、単にポートを確認するだけでなく、ホストの返すバナー情報からアプリケーションの種類やバージョンを確認することができます。


各種OSでTCP/IPという標準化されたプロトコルが実装されていますが、実際にはTCP/IPの実装に微妙な差異があります。

この差異からOSの種類を識別する手法をTCP/IPスタックフィンガープリンティングといいます。


ポートスキャンツール

ポートスキャンツールとしては「nmap」コマンドが有名です。

nmap(Network Mapper)コマンドは、ポートを順にスキャンして空いているポートを調べることができます。

# nmap <オプション> <ホスト名> 

nmapコマンドではオプションを指定することで、スキャンするポートの範囲やスキャン方法を設定できます。(詳細はmanコマンドを参照)

# nmap -p1-65535 localhost
(snip)
PORT    STATE SERVICE
21/tcp  open  ftp
22/tcp  open  ssh
80/tcp  open  http

ポートスキャンの種類

TCPスキャン

TCP接続の3ウェイハンドシェイク(SYN+SYN/ACK+ACK)が確立した場合、そのポートはListen状態であると判断することができます。

コネクションを確立するため、ターゲットサーバのログに記録されます。

サーバのログを解析することでポートスキャンを受けたかどうか確認することができます。


TCP SYNスキャン(TCPハーフスキャン)

コネクションを確立せずにポートの状態を確認する手法です。

完全な3ウェイハンドシェイクを確立しないため、「ハーフオープンスキャン」または、「ステルススキャン」と呼ばれます。


ポートにSYNパケットだけを送信し、応答パケットを確認します。

・SYN/ACKパケットを受信した場合、そのポートはListen状態にあると判断し、

・RST/ACKパケットを受信した場合、そのポートはCLOSE状態であると判断する。


UDPスキャン

UDPパケットを送信した時に、応答がなければアクティブ状態であり、「ICMP port unreachable」メッセージを受信したなら、そのポートはCLOSE状態にあることがわかります。

UDPはコネクションを確立しない通信ですのでログに記録されません。


TCP FINスキャン

FINパケットを送信した時にRSTパケットを受信したなら、そのポートはCLOSE状態にある。

ターゲットホストがWindowsOSでは使えません。


TCP ACKスキャン

ACKフラグをONにしたパケットを送り、ポートの状態を判別します。


TCP NULLスキャン

すべてのフラグを「0」にしてパケットを送信した時にRSTパケットを受信したなら、そのポートはCLOSE状態にある。

ターゲットホストがWindowsOSでは使えません。


TCP XMASスキャン(TCPクリスマスツリースキャン)

FIN、URG、PUSHのフラグをセットしたパケットを送信した時にRSTパケットを受信したなら、そのポートはCLOSE状態にある。

ターゲットホストがWindowsOSでは使えません。


「TCP FIN」「TCP NULL」「TCP XMAS」などのステルススキャンは接続確立を行いません。

そのため、外部からの接続を禁止しているファイアウォール経由で内部ネットワークのスキャンが可能となります。


ポートスキャンの対策

ポートスキャンは調査行為であり、システムへの侵入やデータ破壊には直接結びつきません。

しかし、脆弱性を露呈することで、本格的な攻撃を受けることにつながりますので、対策が必要です。


予防


検知


IDS(Intrusion Detection System) IDSとは、侵入検知システムのことです。パケットやサーバイベント(ログインやプログラム実行など)をリアルタイム監視して、異常を検知します。
IPS(Intrusion Prevention System) IPSとは、侵入防御システムのことです。不正アクセスの検知と遮断を行います。

関連ページ



スポンサード リンク