TCPコネクション確立をテーマとしたネットワークスペシャリスト試験午後Ⅱ問題
TCPのコネクション確立(3ウェイハンドシェイク)をテーマに、
ネットワークスペシャリスト試験 午後Ⅱ形式で10問作成します。
午後Ⅱ形式なので、単なる選択肢問題ではなく、シナリオ+設問の形にします。
解答は簡潔に書き、解説は午後Ⅱらしく詳細にします。
---
シナリオ
ある企業のサーバ管理者A氏は、社内のWebサーバ(IP: 192.168.1.10, TCPポート80)に外部から接続できないという問い合わせを受けました。
ネットワーク構成は、インターネット経由でルータを通過し、ファイアウォールを経てWebサーバに到達する形になっています。
A氏は、クライアントPC(IP: 203.0.113.5)からサーバへのTCPコネクション確立状況を調べるため、パケットキャプチャを行いました。
---
問題1
パケットキャプチャの最初の通信で、クライアントから送信されるTCPパケットのフラグ構成として最も適切なものを答えよ。
【解答】SYN
【解説】TCPコネクション確立は3ウェイハンドシェイクにより行われ、最初のパケットはSYNフラグをセットして送信される。シーケンス番号は初期値(ISN)が設定される。
---
問題2
クライアントから送信されるSYNパケットには、どのような制御情報(オプションを含む)が含まれる場合が多いか。
【解答】最大セグメント長(MSS)、ウィンドウスケーリング、SACK Permitted、タイムスタンプなど
【解説】SYNパケットは接続パラメータのネゴシエーションに使われ、これらのTCPオプションが含まれることが多い。
---
問題3
サーバが正常に接続要求を受け入れた場合、次に送信するパケットのフラグ構成を答えよ。
【解答】SYN + ACK
【解説】サーバはクライアントからのSYNに対して、SYNとACKの両方をセットしたパケットで応答し、自分の初期シーケンス番号とクライアントのISN+1を確認応答番号として返す。
---
問題4
サーバからSYN+ACKが返らず、RSTが返ってきた場合、考えられる原因を2つ挙げよ。
【解答】
1. 指定ポート(80番)がLISTEN状態ではない(サービス停止)
2. ファイアウォールやACLによる拒否設定
【解説】RSTは「そのポートで接続を受け付けない」ことを示す。サービスが停止しているか、アクセス制御で拒否されている場合に発生する。
---
問題5
クライアントはサーバからのSYN+ACKを受け取った後、最後にどのようなパケットを送るか。
【解答】ACKフラグのみをセットしたパケット
【解説】これにより3ウェイハンドシェイクが完了し、データ送信可能なESTABLISHED状態になる。
---
問題6
もし途中でSYNパケットがロスした場合、TCPはどのように動作するか。
【解答】再送タイマーが期限切れになると、SYNパケットを再送する。
【解説】TCPは信頼性を保証するため、再送制御を行う。初期再送タイムアウト(RTO)は通常1秒程度だが、OS実装によって異なる。
---
問題7
キャプチャを確認すると、クライアントからのSYNに対しサーバは何も応答していなかった。この場合、原因調査として有効な層をOSI参照モデルで答えよ。
【解答】ネットワーク層(IP経路・ルーティング)およびトランスポート層(TCPポート到達性)
【解説】応答がない場合は、IPレベルで到達していない可能性(経路不通)や、TCPでブロックされている可能性を切り分ける必要がある。
---
問題8
TCPコネクション確立の際、シーケンス番号を乱数初期化する理由を答えよ。
【解答】セキュリティ強化(セッションハイジャック対策)
【解説】固定値や予測可能なISNは、第三者によるセッション乗っ取り攻撃のリスクを高めるため、RFC 6528で推奨されるように乱数化する。
---
問題9
3ウェイハンドシェイクの3つのステップを順に簡潔に説明せよ。
【解答】
1. クライアント → サーバ:SYN送信(接続要求)
2. サーバ → クライアント:SYN+ACK送信(要求受理と応答)
3. クライアント → サーバ:ACK送信(確立完了)
【解説】この3ステップにより、両方向のシーケンス番号とACK番号が同期される。
---
問題10
TCPコネクション確立時にタイムスタンプオプションが利用される主な目的を答えよ。
【解答】RTT測定とPAWS(古いセグメントの受信防止)
【解説】タイムスタンプにより往復時間を正確に測定でき、また過去の古いシーケンス番号を持つパケットを識別して破棄できる。
---
[パケットキャプチャ解析付きの長文午後Ⅱ問題]
では、**TCPコネクション確立(3ウェイハンドシェイク)**を題材に、
ネットワークスペシャリスト試験 午後Ⅱ形式の「長文シナリオ+パケットキャプチャ解析付き」問題を作成します。
---
午後Ⅱ形式 問題例:TCPコネクション確立のトラブル解析
〔シナリオ〕
ある企業のネットワーク管理者B氏は、外部顧客から「Webサーバに接続できない」との問い合わせを受けた。
対象のWebサーバ(IP: 192.168.10.20, TCPポート 80)は社内LAN上に設置され、インターネットからのアクセスはファイアウォールを通過する構成となっている。
顧客が利用するクライアントPC(IP: 203.0.113.45)からの接続試験として、B氏はサーバの外側(インターネット側)に設置した監視用PCでパケットキャプチャを行った。
キャプチャの一部を以下に示す(時刻は省略、送信元IP → 宛先IP、フラグ、シーケンス番号、確認応答番号、オプションを抜粋)。
---
〔パケットキャプチャ抜粋〕
1. 203.0.113.45 → 192.168.10.20 SYN Seq=1000 Win=64240 MSS=1460 WS=128 SACK_PERM=1
2. 192.168.10.20 → 203.0.113.45 SYN,ACK Seq=3000 Ack=1001 Win=65535 MSS=1460 WS=64 SACK_PERM=1
3. 203.0.113.45 → 192.168.10.20 ACK Seq=1001 Ack=3001 Win=64240
4. 203.0.113.45 → 192.168.10.20 GET / HTTP/1.1 ...
---
〔設問1〕
パケット1の役割を説明せよ。また、このパケットに含まれている主なTCPオプションを2つ挙げ、その意味を簡潔に述べよ。
---
〔設問2〕
パケット2のフラグ構成を答え、このパケットが送信される目的を説明せよ。
---
〔設問3〕
パケット3の内容から、TCPコネクションの状態は何になったと判断できるか。状態名を答えよ。
---
〔設問4〕
パケット1~3のやり取り全体を何と呼ぶか。また、このやり取りの目的を簡潔に述べよ。
---
〔設問5〕
もしパケット2が到達しなかった場合、TCPはどのように動作するか。再送の仕組みを含めて説明せよ。
---
〔設問6〕
このキャプチャでは3ウェイハンドシェイクが正常に完了している。にもかかわらず、Webページが表示されない場合に考えられる原因を3つ挙げよ(アプリケーション層を含む)。
---
〔設問7〕
パケット1に含まれるMSSオプションの意味を説明し、相手側の応答にどのように反映されるか述べよ。
---
〔設問8〕
タイムスタンプオプションが設定されていない場合の影響を、RTT測定とPAWSの観点から説明せよ。
---
〔設問9〕
このキャプチャにおいて、ウィンドウスケーリングの値が両者で異なる理由を説明せよ。
---
〔設問10〕
セキュリティの観点から、SYNパケットのシーケンス番号が固定値だった場合のリスクを説明せよ。
---
模範解答例
〔解答1〕
役割:TCPコネクション確立の開始を示すSYNパケット。
オプション例:
1. MSS(最大セグメント長)…受信可能な最大TCPデータサイズを通知。
2. ウィンドウスケーリング(WS)…TCPウィンドウサイズの拡張を可能にする。
---
〔解答2〕
フラグ構成:SYN + ACK
目的:クライアントの接続要求(SYN)を受け入れ、自身の初期シーケンス番号を提示するとともに、クライアントのISN+1をACKとして応答する。
---
〔解答3〕
状態:ESTABLISHED(確立状態)
---
〔解答4〕
名称:3ウェイハンドシェイク
目的:双方のシーケンス番号とACK番号を同期させ、信頼性のあるコネクションを確立する。
---
〔解答5〕
TCPはパケット2の再送タイマー(RTO)満了時にSYNを再送する。再送回数には上限があり、OS実装によって異なる。
---
〔解答6〕
考えられる原因例:
1. Webサーバアプリケーションが停止している。
2. HTTPリクエストが誤っている(例:バージョン不一致)。
3. アプリケーション層でのアクセス制御や認証エラー。
---
〔解答7〕
MSSは受信可能な最大TCPデータサイズを通知するオプション。相手側はその値を考慮してセグメントサイズを調整する。
---
〔解答8〕
RTT測定:タイムスタンプがないと正確な往復時間測定ができない。
PAWS:古いパケットを検出して破棄する機能が利用できない。
---
〔解答9〕
ウィンドウスケーリング値は端末ごとに異なるTCP実装や性能要件に基づいて設定されるため。
---
〔解答10〕
リスク:第三者がシーケンス番号を予測して偽のパケットを挿入し、セッションハイジャックを行う可能性が高まる。
---
[正常系(3ウェイハンドシェイク成功)+異常系(SYN Flood攻撃/RST応答による接続拒否)を含むネットワークスペシャリスト試験 午後Ⅱ形式の長文+パケットキャプチャ解析問題]
---
午後Ⅱ形式 問題例:TCPコネクション確立の正常・異常比較解析
---
〔シナリオ〕
企業のネットワーク管理者A氏は、社外からのWebアクセスに断続的な障害が発生しているとの報告を受けた。
外部の監視ポイントでパケットキャプチャを実施したところ、正常接続が成功する通信と、接続が失敗する異常通信が混在していた。
以下にそのキャプチャ抜粋を示す(時刻は省略、送信元IP → 宛先IP、フラグ、シーケンス番号、ACK番号、主要オプションを記載)。
---
〔正常系キャプチャ〕
# 正常な3ウェイハンドシェイク
1. 203.0.113.45 → 192.168.10.20 SYN Seq=1000 Win=64240 MSS=1460 WS=128 SACK_PERM=1
2. 192.168.10.20 → 203.0.113.45 SYN,ACK Seq=3000 Ack=1001 Win=65535 MSS=1460 WS=64 SACK_PERM=1
3. 203.0.113.45 → 192.168.10.20 ACK Seq=1001 Ack=3001 Win=64240
4. 203.0.113.45 → 192.168.10.20 GET / HTTP/1.1 ...
---
〔異常系キャプチャ①:SYN Flood攻撃と推定される通信〕
# SYNが大量に送信されるが、ACKが返らない
1. 198.51.100.77 → 192.168.10.20 SYN Seq=4000 Win=1024 MSS=512
2. 198.51.100.78 → 192.168.10.20 SYN Seq=5000 Win=1024 MSS=512
3. 198.51.100.79 → 192.168.10.20 SYN Seq=6000 Win=1024 MSS=512
...
(短時間に数百件以上のSYNが送信されるが、ACKがほぼ返っていない)
---
〔異常系キャプチャ②:RST応答による接続拒否〕
# SYN送信に対し、即座にRSTで拒否
1. 203.0.113.60 → 192.168.10.20 SYN Seq=7000 Win=64240 MSS=1460
2. 192.168.10.20 → 203.0.113.60 RST,ACK Seq=0 Ack=7001 Win=0
---
〔設問〕
---
設問1
正常系のパケット1~3はTCPのどの手順を示しているか。その名称と目的を答えよ。
---
設問2
異常系キャプチャ①の動作を説明し、この現象がサーバに与える影響を述べよ。
---
設問3
異常系キャプチャ②の動作を説明し、この挙動が発生する可能性のある原因を2つ挙げよ。
---
設問4
SYN Flood攻撃の対策方法をTCPスタックレベルとネットワーク機器レベルの両方から1つずつ挙げよ。
---
設問5
RST応答はTCPコネクション確立のどのタイミングで使用されるか。今回のキャプチャではどの段階で使われているかを説明せよ。
---
設問6
SYN Flood攻撃が成功すると、サーバ側のどのリソースが消費されるか。具体的なTCP状態名とともに答えよ。
---
設問7
RST応答による拒否が、意図的なアクセス制限である場合に考えられる構成例を1つ挙げよ。
---
設問8
正常系パケット1と異常系①のパケット1~3のMSS値を比較し、攻撃検知の観点から考察せよ。
---
設問9
異常系①では送信元IPが連続的に異なっている。この特徴は何を示唆しているか。
---
設問10
SYN Flood攻撃を可視化・検知するために利用できるネットワーク監視ツールや方法を2つ挙げよ。
---
〔模範解答例〕
---
解答1
名称:3ウェイハンドシェイク
目的:双方のシーケンス番号とACK番号を同期させ、信頼性のあるTCPコネクションを確立する。
---
解答2
動作:短時間に大量のSYNパケットが送信されるが、ACKが返らずハンドシェイクが未完了。
影響:サーバは半開状態(SYN-RECEIVED)のコネクションを多数保持し、リソースが枯渇して正規ユーザが接続できなくなる。
---
解答3
動作:SYN受信直後にRST,ACKを返すことで接続を拒否。
原因例:
1. 該当ポートでリスンしているサービスが存在しない。
2. ファイアウォールやホストベースのアクセス制御で拒否設定されている。
---
解答4
TCPスタックレベル:SYN Cookieの有効化
ネットワーク機器レベル:ファイアウォールやIPSによるSYN Rate Limiting
---
解答5
RSTは既存コネクションの強制終了や、存在しないコネクションへの接続拒否時に使用される。
今回はコネクション確立の初期段階(SYN受信直後)に使用されている。
---
解答6
消費されるリソース:サーバの接続テーブル、特にSYN-RECEIVED状態のエントリ。
---
解答7
例:社内LAN以外からのアクセスを拒否するためのACL設定。
---
解答8
正常系:MSS=1460、異常系①:MSS=512
考察:攻撃トラフィックはMSSが小さいなどの特徴を持つ場合があり、異常検知のシグネチャとして利用可能。
---
解答9
示唆:IPスプーフィング(送信元IP偽装)が行われている可能性が高い。
---
解答10
例:
1. netstatやssコマンドによる半開状態の監視
2. IDS/IPS(Snort, Suricataなど)による異常パターン検知
---
この形式なら、午後Ⅱの試験らしく「正常と異常を比較して原因を特定する」流れが作れます。
もし希望があれば、**この問題に図解(TCPステート遷移図+キャプチャ時系列)**を追加して、より本番試験に近づけることもできます。
次は、この問題に図入りの解説資料も付けたバージョンを作りますか?
そうすれば午後Ⅱの完全セットになります。
では先ほどの**正常系+異常系(SYN Flood/RST応答)**の午後Ⅱ問題に、
1. TCPステート遷移図
2. キャプチャ時系列図
を追加した、より本番試験風の図入りバージョンを作ります。
---
午後Ⅱ形式 問題(図解付き)
---
〔図1:TCPステート遷移図(簡易版)〕
CLOSED
|
| SYN送信
v
SYN-SENT <-------------------------------+
| SYN受信 |
v |
ESTABLISHED |
| FIN送信 |
v |
FIN-WAIT-1 |
| ACK受信 |
v |
FIN-WAIT-2 |
| FIN受信 |
v |
TIME-WAIT → CLOSED
※ SYN-RECEIVED はサーバ側のSYN受信後の状態
※ RST受信時は即座にCLOSEDへ遷移
---
〔図2:正常系と異常系のキャプチャ時系列図〕
正常系(3ウェイハンドシェイク成功)
---------------------------------------
203.0.113.45 → 192.168.10.20 : SYN (Seq=1000)
192.168.10.20 → 203.0.113.45 : SYN,ACK (Seq=3000, Ack=1001)
203.0.113.45 → 192.168.10.20 : ACK (Seq=1001, Ack=3001)
HTTPリクエスト送信開始
異常系①(SYN Flood)
---------------------------------------
198.51.100.77 → 192.168.10.20 : SYN (Seq=4000)
198.51.100.78 → 192.168.10.20 : SYN (Seq=5000)
198.51.100.79 → 192.168.10.20 : SYN (Seq=6000)
(短時間に数百件以上のSYN、ACK応答なし)
→ サーバ側は SYN-RECEIVED 状態多数保持
異常系②(RST応答)
---------------------------------------
203.0.113.60 → 192.168.10.20 : SYN (Seq=7000)
192.168.10.20 → 203.0.113.60 : RST,ACK (Ack=7001)
→ 接続試行即時拒否
---
〔シナリオ再掲〕
(前回のテキスト版と同じ)
---
〔設問〕
(前回の設問1~10と同じ)
---
〔図を踏まえた追加設問〕
---
設問11
図1において、SYN Flood攻撃時にサーバが滞留する状態名を答えよ。
---
設問12
図2の異常系②のようにRST応答が返る場合、TCPステート遷移図のどの経路を辿ってCLOSEDに至るかを説明せよ。
---
〔模範解答(図に基づく追加部分)〕
---
解答11
状態名:SYN-RECEIVED
解答12
経路:サーバはLISTEN状態でSYNを受信し、通常はSYN-RECEIVEDへ遷移するが、RST応答を返す場合は即座にCLOSEDへ遷移する。
コメント
コメントを投稿