Go の DoS 攻撃防御サービスの構成

App Engine のサービス拒否(DoS)防御サービスを利用すると、サービス拒否攻撃や類似した不正行為を受けたときに、アプリケーションの割り当て不足を回避できます。IP アドレスやサブネットをブラックリストに登録すると、これらのアドレスやサブネットからルーティングされたリクエストは、アプリケーション コードが呼び出される前に破棄されます。課金の有無を問わず、このようなリクエストでリソースの割り当てが消費されることはありません。

デフォルトでは、App Engine はブラックリストに登録されたアドレスに汎用エラーページを表示します。代わりにカスタム レスポンスを提供するようにアプリを構成できます。

始める前に

アプリケーションの root ディレクトリに dos.yaml ファイルを作成します。ブラックリストに登録する IP アドレスとネットワークはこのファイルで指定します。

DoS ブラックリストによりリクエストをブロックする

IP アドレスと IP サブネットをブラックリストに登録することにより、アプリへのアクセスをブロックできます。

dos.yaml のエントリ数は 100 に制限されているため、DoS 攻撃が発生しているときは、サブネット全体のブロックが必要になる場合があります。アプリに対して同じネットワークの複数の IP アドレスから DoS 攻撃が発生している場合にも、この方法は効率的です。

ブラックリストに IP アドレスのエントリを登録する

アプリへのアクセスをブロックしたい IP アドレスが 1 つ以上ある場合、それらの IPv4 アドレスまたは IPv6 アドレスを dos.yaml ファイルに登録します。次に例を示します。

blacklist:
- subnet: 192.0.2.1
  description: A single IPv4 address
- subnet: abcd::123:4567
  description: A single IPv6 address

分散型サービス拒否攻撃(DDoS)では、個別の IP アドレスではなくサブネット全体をブロックする必要が生じる場合があります。

例については、dos.yaml リファレンスをご覧ください。

作成した dos.yaml は、アプリにアップロードする必要があります。

ブラックリストに IP サブネットのエントリを登録する

特定の IP サブネットからアプリへのアクセスをブロックするには、その IP サブネットを CIDR 形式で定義します。CIDR 表記法を使用するルールを作成する際には、IP to CIDR ツールを使用できます。

blacklist:
- subnet: 1.2.3.4/24
  description: an IPv4 subnet
- subnet: abcd::123:4567/48
  description: an IPv6 subnet

例については、dos.yaml リファレンスをご覧ください。

作成した dos.yaml は、アプリにアップロードする必要があります。

ブラックリスト エントリからのリクエストに対するカスタム エラー メッセージを作成する

デフォルトでは、リクエストが DoS 攻撃防御サービスによりブロックされると、汎用のエラーページが表示されます。分散型サービス拒否攻撃には、正当なユーザーのマシンが感染されて利用されることがあり、こうしたページを作成すればアクセスが拒否された理由をユーザーに説明できます。

  1. リクエストが DoS 防御サービスでブロックされたときに表示する静的ファイルを、アプリケーション ディレクトリに作成します。

  2. app.yaml ファイルで、静的ファイルへのパスを指定し、error_handlers 型の dos_api_denial を追加することにより、DoS レスポンスのエラーハンドラを指定します。

    error_handlers:
    - error_code: dos_api_denial
      file: dos-response.html
    

すべてのブラックリスト エントリの削除

すべてのブラックリスト エントリを削除するには:

  1. dos.yaml ファイルの内容が以下の行だけになるよう編集します。

    blacklist:
    

    dos.yaml を削除してもブラックリストは削除されません。

  2. dos.yaml を再デプロイして変更内容を有効にします。

Console に DoS 拒否エラーを表示する

拒否されたリクエストの数をグラフで表示できます。

  1. Google Cloud Platform Console で App Engine ダッシュボードに移動します。

    App Engine のエラー詳細グラフを開く

  2. 必要に応じグラフの時間枠を調整して、結果を表示します。

DOS ブラックリストのアップロード

gcloud ツールを使用して、更新された DoS 構成ファイルを App Engine のアプリにデプロイします。たとえば、次のコマンドを実行して dos.yaml の内容で DoS 防御サービスを更新します。

 gcloud app deploy dos.yaml

次のステップ

  • 問題を迅速に特定しアラートを出すよう Stackdriver Monitoring をセットアップします。
  • お客様の体験(2013 年 1 月)を読んで、分散型サービス拒否攻撃(DDoS)への対処方法を確認します。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Go の App Engine スタンダード環境