僕のブログと情報漏洩の7日戦争
はじめに
(タイトルに7日とか書いてますが、24時間365日攻撃は受けてます)
ことの経緯
とある会社のサーバーがハッキングされ、サービス利用者の情報が盗まれる事件がありました。
保存されている値がMD5だったため復元され、情報漏洩が起きました。
僕も被害者の1人で独自ドメインのメアドで登録していたため、同じく独自ドメインでホストしていたブログに攻撃が起こりました。
ブログの構成
ブログはWordPress(PHP 8.0)で作られています。
WAFの設定は国ごとの制限はなく、危険なアクセスのみを弾くようにしてました。
僕のブログは以下の構成で守られています
(Wordfence Securityはアプリケーション層にいるので正確には以下の図は間違っていますが、わかりやすくするためにあえて外に書いてます)
Wordfence SecurityとImunify360で定期的にマルウェアスキャンなども行っています。
1日ごとにバックアップを取っており、最大1週間前までロールバックが可能です。
OSI 7階層参照モデルの4,5,7層が保護されています。
もしこれらのセキュリティを突破できたとしても最後の関門として2段階認証付きのログインフォームがあるので、不正ログインはかなり難しいと自負しています。
(もちろんユーザーのパスワードはランダム生成でめちゃめちゃ長い)
キャッシュもフル活用しており、通信の95%はCloudflareから配信されます。
1日目
ロシアからのアクセスが急増しました。
明らかにWAF(Cloudflare)に弾かれる量が多すぎたので、慌ててロシアとTorネットからのアクセスを遮断しました。
イメージ図(当時はもっとアクセスがありました)
2日目
ロシアだけでなく、さまざまな国からの攻撃が急増しました
イメージ図
もしもの時のために日本以外を完全に遮断するルールを用意していたので有効にして鎖国状態にしました。
(普段はもちろんOFF)
しかしながら、いろいろ問題が発生しました。
事件その1(死活監視)
死活監視はCloudflareの機能を使っていました。
アジアと北米から行っていたのですが、日本以外を遮断したのでめちゃめちゃエラーが出ました。
この時一時的に死活監視は切りました。
事件その2(Google bot)
Googleのクローラーはアメリカからアクセスしてきます。
そのためGoogleも例外なく遮断されました。
幸いCloudflareにはフェイクのGoogle botを弾くルールがあったので、本物のGoogle botのみ例外設定で通すようにしました。
判定方法はIPアドレスやユーザーエージェントなどです。
事件その3(死活監視パート2)
Vercelでホストしている個人開発も影響を受けてました。
日本と北米から死活監視をしており、北米のみブロックされてしまいました。
こちらは一時的に北米のみ切ることで死活監視を止めることなく対処できました。
事件その4(その他諸々)
Wordpressのプラグインが接続エラーを起こしたり、セキュリティレベルを最高レベルまで引き上げた影響で画像のアップロードも記事の投稿も編集もできない状態に陥りました。
3~6日目
Cloudflareとオリジンサーバーと睨めっこ
不正アクセスに怯えながらなんとか何も起こらずにすみました
7日目
攻撃が落ち着いてきたので、日本以外のアクセス制限を外し、復旧作業を行いました。
北朝鮮、ロシア、Torネットは引き続きブロック対象です。
この時セキュリティー強化のためにブログにはCSPを導入しました。
8日目
第二次戦争の始まりです。
CSPの設定に四苦八苦してブラウザのエラーと睨めっこしながらなんとか設定しました。
結果としてイエラエbyGMOのネットde診断でA評価を取れました
やったね✌️
まとめ
自分でブログを保守するのは意外と大変ですが、その分色々な知識が身につくので、これからもブログの保守、運用を続けていきたいと思います。
Discussion