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

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

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

始める前に

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

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

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

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

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

1 つ以上の 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 形式で定義します。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 防御サービスによりブロックされると、汎用のエラーページが表示されます。分散型 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 月)の対処方法を確認します。
このページは役立ちましたか?評価をお願いいたします。

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

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