こんにちは。
今回は、このサイトを Azure FrontDoor Services の WAF を有効にしたお話です。
なんかこのサイト最近遅かったんですよねー。
今回の設定変更の経緯
このサイトは、Azure の App Service Plan の Premium 2V2 を使っているのでそこそこ早いはずなんですけど、CPU が 100% 張り付きとかたまに起きててすんごいもっさりしてたんです。
そんで、リクエストがどんな感じかなーってみたら、UK と US からなんか異常な量のリクエストが来ていたので、なんかアタック受けちゃってるのかなーって思ったんです。
でも、このサイトにアタックしても何もないんですけどね~。
こんな感じ。これが普通にアクセスされていて、広告表示されていたら Adsense はいくらになるんだろ。。。。
(でも、HTTPエラー500をほぼ出さずに稼働してるから、意外と頑張ってる気もするかも。)
Azure FrontDoor Service のログをみたら、WordPress のログイン画面などにアクセスされているログがあったので、WAF を Detection(検出)モードから、Prevention(防止)モードに変えてみようって思いました。
ついでに、他にもやってなかった横入り防止とかもしてみたりして。
ちなみに、この設定をする前は、以下の記事の設定のままでしたw
設定したこと
横入り防止
ひとまず、横入り防止しました。
どのルートでアクセスがあるか絞りたかったので。
ドキュメントとしては、この辺ですね。
設定は、Web Apps で設定するだけです。
これでこんな感じになりました。
Azure FrontDoor Service の WAF の設定変更
Post の通信の Block
横入り対策をしてもあまり結果が変わらなかったので、ひとまず、WAF のモードを検知モードから予防モードに変えました。
これを行うことで、login.php に post が投げられてるのがいくつかあったので、その部分を Azure FrontDoor Service でリジェクトしちゃおうっていう作戦です。
すでに細かな設定はされていたので、今回行った変更は、下記の1箇所だけです。
この辺の設定は、以下のドキュメントを読みましょう。
ただ、これだと WordPress のログイン画面で WAF が効いちゃうので、自分がログインできるための穴を作らないといけません。
今回は、Azure VM に Public IP を Static にもって、その VM からWordPress に接続するルールにしました。
Get の通信に対しての対策
これは、Azure FrontDoor Service のキャッシュ機能を使っているので、ある程度の負荷には耐えられるはずです。
でも、キャッシュに入らないようなところを狙われたらこの限りじゃないですよね。
ということで、同じクライアントから一定期間に一定量を超えるアクセスがあった場合、WAF でブロックするルールを追加しました。
こんな感じで。
あと、ログを見ていたらある IP からアクセス数が他と比べると異常に多かったので、その IP をブロックしました。
こんな感じで、ログを確認して。(ただ、たまたま複数のコンテンツを見ただけかもなので、IPは隠しとこっと)
WAF で、こんなルールを追加しました。
まとめ
ということで、ひとまず思い付きで、WAF 周りの設定をしてみました。
これでしばらく置いてみて、状況が変化しなかったから別の対策をしようと思います。。
でも、次になんかするときは、ログを取って原因を分析してからじゃないとわからないしなぁ~。
あと、今使っているテーマがそこそこ重いんだろうな~ってのも感じたし、そろそろ飽きてきたから、別のテーマにしてみようかな~笑
コメント