【入門編】 NATゲートウェイ経由の通信におけるポートスキャンおよびDDoS攻撃の検出と制限 – クラウド&コンテナネットワーク実践ガイド

「NATゲートウェイが悲鳴を上げる前に」― クラウドネットワークを守るための守護神ガイド

こんにちは!SREとして日々クラウドの裏側を覗き込んでいると、ふと「ネットワークって、実は巨大な郵便局の仕分けシステムに似ているな」と思うことがあります。

今日は、皆さんがAWSなどのクラウド環境で必ずお世話になる「NATゲートウェイ」について、ちょっと深い話をしましょう。特に、「なぜか突然通信が遅くなる」「変な通信が大量に発生している」というトラブルにどう立ち向かうか、その勘所を紐解いていきます。

—

1. NATゲートウェイは「街の郵便局」

まず、NATゲートウェイの役割をイメージしてみましょう。

プライベートサブネットにいるサーバーたちは、外の世界(インターネット)と直接手紙をやり取りできません。そこで、彼らはNATゲートウェイという「郵便局」に手紙を預けます。NATゲートウェイは、みんなの手紙を自分の住所(グローバルIP)に書き換えて、外の世界へ送り出してくれるのです。

しかし、この郵便局には一つ弱点があります。「一度に処理できる手紙の数(ポート数)」には限界があるということです。

なぜポートスキャンでパンクするのか?

攻撃者が「このネットワークの穴はどこかな?」と探るポートスキャンを行うと、NATゲートウェイは「誰から、どこへ、どんな手紙を出すか」という記録(マッピング)を大量に作成しなければなりません。
郵便局の窓口が、知らない宛先への問い合わせ対応で埋め尽くされてしまい、本来届けるべき大切な手紙が滞る……これがNATゲートウェイのパフォーマンス低下の正体です。

—

2. 異常をいち早く察知する「監視の目」

NATゲートウェイが悲鳴を上げる前に、私たちは「誰が、どこへ、どれだけ通信しているか」を追跡する必要があります。ここで最強の相棒になるのが、VPCフローログとGuardDutyです。

VPCフローログ:ネットワークの「配送伝票」を追う

VPCフローログは、ネットワーク上で行われたすべての通信の記録です。これを見れば、「あ、このサーバーから突然何万件も接続リクエストが出ている!」という異常に気づけます。

VPCフローログを分析するには、CloudWatch Logs Insightsを使うのが一番早いです。例えば、特定の送信元IPからの通信数を確認するクエリはこんな感じです。

# どの送信元IPが一番通信リクエストを出しているかランキングを出す
stats count() by srcAddr 
| filter dstPort = 80 or dstPort = 443
| sort count() desc
| limit 10

Amazon GuardDuty:クラウドの「凄腕警備員」

自分でログをずっと監視するのは大変ですよね。そこで出番なのがGuardDutyです。これはAWSが提供する「インテリジェントな監視サービス」で、ポートスキャンや怪しい通信パターンを自動的に検知し、アラートを出してくれます。

「あ、この通信パターンは明らかにスキャンだ!」と判断して即座に通知してくれるので、設定しておくだけで安心感が段違いです。

—

3. もし攻撃されたら?制限をかけて守り抜く

万が一、特定のサーバーが乗っ取られて外部へ攻撃を始めてしまったら、どうやって止めるべきでしょうか。

ネットワークACLとセキュリティグループ

最も強力な防御策は、ネットワークACLで悪意ある通信を遮断することです。

  • セキュリティグループ: サーバー単位の門番。「このサーバーへの入室は許可していい?」
  • ネットワークACL: サブネット全体の門番。「このエリアへの出入りそのものを禁止する!」

以下は、特定の悪意あるIPからの通信を完全に遮断するためのネットワークACLの概念的な設定イメージです。

# AWS CLIで特定のIPからのアクセスを拒否するルールを追加する例
aws ec2 create-network-acl-entry \
    --network-acl-id acl-12345678 \
    --ingress \
    --rule-number 100 \
    --protocol tcp \
    --port-range From=0,To=65535 \
    --cidr-block 203.0.113.5/32 \
    --rule-action deny # ここでアクセスを拒否!

*※注:ルール番号は他の許可設定より優先されるよう、小さい数字(100など)に設定するのがポイントです。*

—

4. 最後に:エンジニアとして大切なこと

インフラを守るということは、単に技術的な設定をすることだけではありません。「いつもと様子が違うな?」という小さな違和感に気づける観察眼を養うことが、一番の防御になります。

1. VPCフローログを有効にする: 証拠がなければ何も始まりません。
2. GuardDutyをオンにする: 24時間365日の監視を機械に任せましょう。
3. 閾値アラートを設定する: NATゲートウェイの「バイト転送量」や「パケット数」にCloudWatchアラームを設定し、限界に達する前に通知を受け取れるようにしておきましょう。

ネットワークという目に見えない道を、皆さんの手で安全に守り抜いてください。もし迷ったら、いつでもこの記事を読み返して、一歩ずつ進んでいきましょうね!

それでは、良いクラウドライフを!

コメント

タイトルとURLをコピーしました