Java 8 の DoS 防御サービスの構成

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

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

始める前に

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

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

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

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

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

1 つ以上の IP アドレスにアプリへのアクセスを禁止するには、これらの IP アドレスを IPv4 または IPv6 形式で dos.xml ファイルに定義します。次に例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<blacklistentries>
  <blacklist>
    <subnet>1.2.3.4</subnet>
    <description>a single IP address</description>
  </blacklist>
  <blacklist>
    <subnet>abcd::123:4567</subnet>
    <description>an IPv6 address</description>
  </blacklist>
</blacklistentries>

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

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<blacklistentries>
  <blacklist>
    <subnet>abcd::123:4567/48</subnet>
    <description>an IPv6 subnet</description>
  </blacklist
  <blacklist>
    <subnet>abcd::123:4567/48</subnet>
    <description>an IPv6 subnet</description>
  </blacklist
</blacklistentries>

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

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

ブラックリストに登録されたリクエストにカスタム エラーメッセージを作成する

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

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

  2. appengine-web.xml ファイルの中で、DoS レスポンスのエラーハンドラを定義します。静的ファイルのパスを指定するとともに、<static-error-handlers> のタイプとして dos_api_denial を追加してください。

    <static-error-handlers>
      <handler error-code="dos_api_denial" file="dos-response.html" />
    </static-error-handlers>
    

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

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

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

    <?xml version="1.0" encoding="UTF-8"?>
    <blacklistentries/>
    

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

  2. dos.xml を再デプロイして、変更を反映します。

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

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

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

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

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

DOS ブラックリストをアップロードする

appcfg.sh を使用して DoS の構成をアップロードできます。appcfg.sh update を使用してアプリケーションを App Engine にアップロードすると、DoS 防御サービスは dos.xml 構成ファイルの内容を反映して更新されます。

DoS の構成ファイルだけを更新し、アプリケーションのそれ以外の部分はアップロードしない場合は、次のコマンドを使用します。

appcfg.sh update_dos [PATH_TO_CONFIG_FILE]/dos.xml

次のステップ

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

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

Java 8 の App Engine スタンダード環境