Python の DoS 防御サービスの構成

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

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

始める前に

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

DoS ブラックリストによるリクエストのブロック

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

dos.yaml のエントリ数は 100 に制限されています。DoS 攻撃が発生している場合、サブネット全体のブロックが必要になる可能性があります。アプリに対する DoS 攻撃で同じネットワークの複数の IP アドレスが使用されている場合にも、これは有効な手段となります。

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

IP アドレスをブロックしてアプリにアクセスできないようにするには、それらの IP アドレスを 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 形式で定義します。IDR 表記法を使用するルールを作成するには、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 防御サービスによりブロックされると、汎用のエラーページが表示されます。分散型 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 を再デプロイして、変更を反映します。

コンソールに 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 を設定します。
  • お客様の体験を読んで、分散型サービス拒否攻撃(DDoS)(2013 年 1 月)の対処方法を確認します。
このページは役立ちましたか?評価をお願いいたします。

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

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