App Engine のサービス拒否(DoS)防御サービスを利用すると、サービス拒否攻撃や類似した不正行為を受けたときに、アプリケーションの割り当て不足を回避できます。IP アドレスまたはサブネットを拒否リストに追加して、それらのアドレスまたはサブネットからルーティングされたリクエストが、アプリケーション コードが呼び出される前に破棄されるようにできます。課金の有無を問わず、このようなリクエストでリソースの割り当てが消費されることはありません。
デフォルトでは、App Engine は拒否リストに登録されたアドレスに汎用エラーページを表示します。代わりにカスタム レスポンスを配信するようにアプリを構成できます。
始める前に
アプリケーションの root
ディレクトリに dos.yaml
ファイルを作成します。拒否リストに登録された IP アドレスとネットワークをこのファイルで指定します。
DoS 拒否リストによりリクエストをブロックする
IP アドレスと IP サブネットを拒否リストに登録すると、アプリへのアクセスをブロックできます。
dos.yaml
のエントリ数は 100 に制限されているため、DoS 攻撃を受けているときは、サブネット全体のブロックが必要になる場合があります。同じネットワークの複数の IP アドレスがアプリに対する DoS 攻撃の構成要素であることが検出された場合にも、これは効率的な防御方法です。
拒否リストに IP アドレスを登録する
IPv4 アドレスまたは IPv6 アドレスを dos.yaml
ファイルで定義することによって、1 つ以上の IP アドレスがアプリにアクセスするのをブロックできます。次に例を示します。
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 形式で定義します。IP を CIDR に変換するツールを使用すると、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 攻撃防御サービスによりブロックされたリクエストに対して、汎用のエラーページが配信されます。分散型サービス拒否攻撃には、正当なユーザーのマシンが感染されて利用されることがあり、こうしたページを作成すればアクセスが拒否された理由をユーザーに説明できます。
リクエストが DoS 防御サービスでブロックされたときに表示する静的ファイルを、アプリケーション ディレクトリに作成します。
app.yaml
ファイルで、静的ファイルへのパスを指定し、error_handlers
型のdos_api_denial
を追加することにより、DoS レスポンスのエラーハンドラを指定します。error_handlers: - error_code: dos_api_denial file: dos-response.html
拒否リストのすべてのエントリを削除する
拒否リストのエントリをすべて削除するには:
dos.yaml
ファイルの内容が、次の行だけになるように編集します。blacklist:
dos.yaml
を削除しても、拒否リストは削除されません。dos.yaml
を再デプロイして変更を反映します。
Console に DoS 拒否エラーを表示する
拒否されたリクエストの数をグラフで表示できます。
Google Cloud Console で App Engine ダッシュボードに移動します。
必要に応じグラフの時間枠を調整して、結果を表示します。
DoS 拒否リストをアップロードする
gcloud
ツールを使用して、更新された DoS 構成ファイルを App Engine のアプリにデプロイします。たとえば、次のコマンドを実行して dos.yaml
の内容で DoS 防御サービスを更新します。
gcloud app deploy dos.yaml
次のステップ
- 問題を迅速に特定しアラートを表示するよう Cloud Monitoring をセットアップする。
- お客様の体験(2013 年 1 月)を読み、分散型サービス拒否攻撃(DDoS)への対処方法を確認する。