新しいブログのサーバー契約と同時期に利用を開始した Cloudflare。そういえばそろそろ使い始めて 1 年くらい経つのでは?と思って確認してみたらだいたい 1 年でした。
はてなブログでは独自ドメインにすると定期的に IP をチェックしているようで Cloudflare 使うことが出来ないのですが、外部サーバーと組み合わせて色々とやっております。
この 1 年で Cloudflare で何をしたかを軽く書いておこうと思います。
ホスティングサーバー、VPN からのアクセスをブロック
何かしら対策をせねばならない、と思ったのは偽の EC サイトの存在です。私は自身の写真にシリアルナンバーを埋め込んでおり、それを使って Google の画像検索が出来るようにしています。(無断転載されていなければ)本来なら私の Twitter やブログしか出てこないはずなのですが、まぁ偽の EC サイトがわんさか出てきます。明らかに私のブログをデータ収集対象としているのでしょう。
まずはそういったデータ収集を行う AWS や GCP などからのアクセスをブロックすることから始めました。単に AWS と言っても利用されている IP アドレスは多大であり、レンジも分散しています。
しかし、Cloudflare では ASN(自律システム番号)による条件付が可能なため、AWS であれば AS14618 を条件にしてしまえば IP やレンジに関わらずすべてをブロックすることが可能です(ただし、何らかのデータ連携サービスを利用している場合はそちらにも支障が出る可能性があるので例外条件の作成が必要です)。
その他のホスティングサービスや VPN については ipinfo.io などのデータベースで hosting となっているものを探して登録していくことになります。
日本だけでも hosting に該当する ASN はこれだけあります。
2500 2512 2515 2526 3258 4675 4678 4680 4694 4695 4711 4785 7500 7506 7511 7514 7516 7522 7530 7660 7663 7668 7671 7674 7677 7678 7682 7684 7690 9353 9370 9371 9409 9597 9598 9600 9604 9607 9935 9990 9993 9999 10006 10015 10016 10021 10209 10233 17504 17505 17509 17514 17675 17686 17689 17693 17694 17707 17931 17937 17941 17948 17950 17961 18068 18069 18072 18074 18088 18097 18140 18141 18211 18259 18263 18272 18383 23613 23619 23620 23634 23637 23639 23641 23661 23761 23773 23774 23776 23794 23798 23804 23816 23818 23824 24252 24253 24257 24278 24282 24284 24286 24295 24296 24477 24567 37893 37897 37898 37900 37905 37907 37912 37916 38074 38627 38629 38633 38634 38638 38639 38642 38643 38648 38652 38658 38715 45217 45678 45679 51044 54415 55377 55378 55383 55388 55569 55888 55894 55897 55899 55902 55905 55907 56291 58649 58651 58653 58654 58788 58789 58791 58793 59092 59094 59095 59103 59105 59109 59110 59123 63770 63774 63776 63780 63786 63789 63790 63795 63798 63800 63805 63806 63997 131078 131894 131896 131898 131899 131901 131904 131905 131914 131917 131921 131936 131939 131942 131945 131948 131963 131964 131966 131969 131971 131972 131980 131984 131987 131990 132827 133180 133203 133476 133782 133900 134109 134351 135372 135401 136779 136796 137445 137462 138652 139345 139358 139468 140683 141757 142052 142616 146981 146982 146985 146986 146987 147035 147295 149428 150296 150325 150356 150366 150367 150445 150685 151371 151378 151380 151381 151382 151386 151420 151970
主にアクセスの多い日本、アメリカ、中国、香港、台湾、韓国、シンガポール、ロシアでこの hosting に該当する ASN をすべてブロックしようと思ったのですが、Cloudflare のフィルターには制限があり 4096 バイトまでしか登録が出来ないので断念(IP アクセスルールというのが別にあるのですがそちらは何件まで登録出来るか不明)。
仕方なくこれらはウェブサーバー側のコンフィグで設定(カスタムヘッダーとして ASN の付与が必要です)し、日々監視していく中で怪しいものがあれば IP アクセスルールの方に登録していくという方法を取っています。
現在は中国、香港、台湾、韓国に関しては ASN レベルではなく国レベルでブロックしています。そのおかげで割と平和にはなりました。Weibo やら Taobao とかで勝手に写真使われるのでブロックして正解。
また、中国ユーザーは VPN を多用しており、日本国内の VPN 拠点経由でアクセスしてきたりするのでこちらもすべてブロックしています。
他にも対策はしているのですがそこは非公開ということで。
画像の外部呼び出しの禁止
これは普通のサーバーでも出来ることですが Cloudflare でも設定が可能です。Cloudflare の方が効果的なブロック画面を表示してくれます。
現在画像はすべて別のサーバーに置いてあり、カメラやフィギュア関連の写真ははてなブログには一切アップロードしなくなりました。
Cloudflare は入れた方がいいぞ!
最初は AWS Cloudfront で同じことをやろうと思っていたのですが転送量に応じて料金がかかる可能性もありましたし、ASN にも非対応でした(最近 ASN 対応したけど完全では無いようで判別出来ないものがある)。マネージドルールがあるのは魅力的ではあるのですが。
Cloudflare は多機能かつ無料で使えるので導入しない理由は無いですね。
最近では Google 検索で法律事務所や病院などのサイトが乗っ取られて勝手にメルカリのようなサイトに改ざんされているのも見かけます。ほとんどの日本のサイトは日本国外からは見れなくても問題ないはずなので海外からのアクセスはブロックしておいた方が安全でしょう。
自己防衛、大事。