ハンズオンの目的
本ハンズオンでは、以下を 実機検証 により理解することを目的とする。
- VPC Flow Logs に どの通信が・どの時点で・どこで 記録されるのか
- Security Group と NACL の 遮断ポイントの違い
- 通信が拒否された場合、どの ENI のログにどう記録されるか
構成と準備
使用リソース
| リソース / 項目 | 詳細内容 |
|---|---|
| VPC | プライベートサブネット ×2 |
| EC2-A | IP: 172.32.21.39ENI: eni-056c9fbd3c41b9b45
|
| EC2-B | IP: 172.32.22.12ENI: eni-0434af833f98296f7
|
| プロトコル | ICMP (ping) |
| VPC Flow Logs | 出力先: CloudWatch Logs |
実施手順
- CloudWatch Logs グループ作成
- VPC Flow Logs 作成(version2 / CloudWatch Logs 出力)
- SSM 用 Interface Endpoint 作成
- EC2 を2台作成
- Security Group / NACL を段階的に変更して通信確認
検証内容と結果
EC2-AからEC2-Bへping通信
ping 172.32.22.12 -c 3
①正常通信
EC2-A 側ログ
# version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 073345634859 eni-056c9fbd3c41b9b45 172.32.21.39 172.32.22.12 0 0 1 3 252 1760915229 1760915248 ACCEPT OK
2 073345634859 eni-056c9fbd3c41b9b45 172.32.22.12 172.32.21.39 0 0 1 3 252 1760915229 1760915248 ACCEPT OK
EC2-B 側ログ
# version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 073345634859 eni-0434af833f98296f7 172.32.21.39 172.32.22.12 0 0 1 3 252 1760915251 1760915253 ACCEPT OK
2 073345634859 eni-0434af833f98296f7 172.32.22.12 172.32.21.39 0 0 1 3 252 1760915251 1760915253 ACCEPT OK
⇒双方向通信がすべて ACCEPT
②EC2-BのSG Inbound拒否
EC2-A 側ログ
2 073345634859 eni-056c9fbd3c41b9b45 172.32.21.39 172.32.22.12 0 0 1 3 252 1760915646 1760915667 ACCEPT OK
EC2-B 側ログ
2 073345634859 eni-0434af833f98296f7 172.32.21.39 172.32.22.12 0 0 1 3 252 1760915610 1760915617 REJECT OK
⇒受信側 ENI で REJECT
③EC2-AのSG Outbound拒否
EC2-A 側ログ
2 073345634859 eni-056c9fbd3c41b9b45 172.32.21.39 172.32.22.12 0 0 1 3 252 1760916006 1760916021 REJECT OK
EC2-B 側ログ
ログ無し
⇒送信元で遮断されると、相手側にはログすら届かない
④EC2-BのNACLでInbound ICMP拒否
EC2-A 側ログ
2 073345634859 eni-056c9fbd3c41b9b45 172.32.21.39 172.32.22.12 0 0 1 3 252 1760916842 1760916862 ACCEPT OK
EC2-B 側ログ
2 073345634859 eni-0434af833f98296f7 172.32.21.39 172.32.22.12 0 0 1 3 252 1760916827 1760916832 REJECT OK
⇒NACL でも受信側 ENI に REJECT が残る
⑤EC2-BのNACLでOutbound ICMP拒否
EC2-A 側ログ
2 073345634859 eni-056c9fbd3c41b9b45 172.32.21.39 172.32.22.12 0 0 1 3 252 1760917171 1760917178 ACCEPT OK
EC2-B 側ログ
2 073345634859 eni-0434af833f98296f7 172.32.22.12 172.32.21.39 0 0 1 3 252 1760917155 1760917160 REJECT OK
2 073345634859 eni-0434af833f98296f7 172.32.21.39 172.32.22.12 0 0 1 3 252 1760917189 1760917205 ACCEPT OK
⇒受信側 で受信はできるが、送信する際に REJECT
※ログ順番が逆になっているが、VPCフローログの特性上あり得る
今回の学び
-
VPC Flow Logs は「通信の真実」を可視化できる
どの ENI で、どの方向の通信がACCEPT されたか / REJECT されたか
を事実として確認できる。 -
ログ集約と配信遅延がある
Flow Logs はベストエフォートでログを送信する仕組みであり、
集約や仕組み上の遅延により CloudWatch Logs へ到着する時間や
各レコードの順序が必ずしもネットワーク上の発生順と一致しない可能性がある。そのため、正確な時系列分析にはCloudTrailやアプリケーションログと併用して調査する必要がある。