🗂

AWSやGCPで高額請求されないための超簡単なCloudflare対策

に公開

はじめに

自分はいくつかのサービスをCloud Runで運用しており、月3000円程度で済んでいた料金が突然1日にで5000円近い請求があり、そのまま放置していたら月に10万以上の請求になってました。AWSやGCPなどの従量課金では利用に応じて料金がかかってしまうため、外部からの攻撃によって莫大な費用がかかるケースがあります。Cloudflareの例を載せますが簡単なWAFがほとんどなので同じような設定はできると思います

image.png

Bot対策

これらは以下の画面で有効にするだけで設定可能です

image.png

Bot Fight Mode(ボットファイトモード)

botのトラフィックを検出し、悪質なボットによるアクセスを検知・排除するためのものです。これだけでも相当数のbot対策になります

https://developers.cloudflare.com/bots/get-started/bot-fight-mode/

Block AI Bots

AIクローラー(人工知能が学習や解析に使うボット)からのアクセスをブロックするためのオプションです。OpenAIなどの生成AIがクロールするbotなどを排除してくれます

WAF(Web Application Firewall)

IPブロック

特定のIPをブロックする方法です。有害なbotを調べる簡単な方法として[Analytics]->[トップ統計]を見るとアクセスが多いIPを調べることが可能です。やばいときは中華botから40M(4000万)アクセスが24時間以内に来てました

式は以下のように記載します

ip.src eq XXX.XXX.XXX.XXX

国ブロック

悪質なbotやサイバー攻撃が多い国などをブロックします。言わずもがなですが、以下の国は特に悪質なものが多いとされているため、必要がなければ問答無用でブロックしても良いと思います。

ip.geoip.country in {"CN" "RU" "KP" "IR"}

日本以外をブロック、JSチャレンジにしても良いですが、GooglebotなどのSEOに必要なbotも除外してしまうため注意が必要です

JSチャレンジ

サイトにアクセスした際に以下のように人間か確認するチャレンジ画面が表示されます。アクセスが多いけど悪質なIPではない場合(特定のプロバイダなど)に設定すると良いと思います。
image.png

ブラウザ キャッシュ

高額請求を防ぐためにキャッシュも有効です。これはアプリケーションに応じて設定すれば良いと思います。私のアプリは4時間で設定しています

Under Attack Mode

サイトにアクセスする訪問者に JavaScript のチャレンジを表示します。全部これを表示します。SEOとかも気にしないし特定のリテラシーがあるユーザーのみ利用するアプリケーションであればこれを設定しても良いかもしれません

image.png

最後に

ここまで基本的な設定をご紹介しましたが「自分のサービスは小規模だから攻撃なんかされないよな〜」とか思って油断して設定していなかったりすると自分のように痛い目に遭うので、サービスを公開する方は簡単なので設定してもらえると安全な開発ライフを過ごせるかと思います

Discussion