Yuichi Murata's Engineering Blog

グローバル・エンジニアリング・チームをつくる

App Engine は DoS 攻撃を勝手に防いでくれるのか

App Engine には DoS プロテクションサービスなるものがあります。なにやらいい感じに DoS 攻撃を防いでくれそうな気がします。App Engine は勝手に DoS 攻撃を防いでくれるのでしょうか。

Configuring DoS Protection Service for Go  |  App Engine standard environment for Go  |  Google Cloud Platform

答えは Yes であり No でもあります。 端的にいうと Layer4 以下の DoS 攻撃は防いでくれるが、正規の HTTP 通信を大量に送りつけてくれるような類の攻撃には手動で dos.yaml を書く必要があります。

Layer 4 以下の DoS 攻撃を防ぐのは、正確には App Engine ではなく、その前段に配置された Google Front End です。

App Engine sits behind the Google Front End which mitigates and absorbs many Layer 4 and below attacks, such as SYN floods, IP fragment floods, port exhaustion, etc.

https://cloud.google.com/files/GCPDDoSprotection-04122016.pdf

Layer 4 以下の攻撃に関しては、特段なにもせずとも App Engine というか GCP がよしなにやっってくれるようです。

一方、App Engine の DoS Protection Service はドキュメントを読む限り、ブラックリストに書かれた IP をブロックするというシンプルなものです。大量のリクエストが来た場合、特定の IP をブラックリストに追加するような機構は見当たりません。Blacklist の管理自体は自分で行う必要があります。

昔の記事を読むと、以前の App Engine コンソールにはリクエストを大量に送りつけてくる IP を自動でリストアップしてくれる機能があったようです。ですが、2017年1月現在のコンソールにそのような機構は見つかりません。(もしあるようでしたら教えて欲しいです…)

腹腹開発: 個人で作ったGoogle App EngineサイトがDDoS攻撃を受ける

アプリケーション側やログ分析などで大量にリクエストを送りつけてくる IP がいた場合に、それらを検知する機構は必要になってきそうです。

App Engine は Auto Scaler でスケールしてくれます。逆に言うと DoS 攻撃を受けると一気にインスタンスが増える可能性があるので、こうした機構と使い方を正しく理解して攻撃に強いアプリケーションを作成しましょう。