PHP バージョン 5.5 はコミュニティでサポートを終了したため、新しいアプリでは PHP 7 ランタイムを使用することを強くおすすめします。

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

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

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

始める前に

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

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

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

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

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

  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 Console で App Engine ダッシュボードに移動します。

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

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

DoS 拒否リストをアップロードする

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

 gcloud app deploy dos.yaml

次のステップ

  • 問題を迅速に特定しアラートを表示するよう Cloud Monitoring をセットアップします。
  • お客様の体験(2013 年 1 月)を読んで、分散型サービス拒否攻撃(DDoS)への対処方法を確認します。