Cloudflareに設定した国以外からのアクセスをブロックする設定を追加しました
TraefikとCloudflareが干渉してサイトアクセス不可に!
自分のサイトはTraefikに特定の国以外からのアクセスはブロックする設定を入れていました
先日Cloudflare無料版を導入し、しばらく問題なく動作していたのですが、ある日突然403エラーが発生し、サイトにアクセスできなくなってしまいました
Traefikのログを確認すると、[SG](シンガポール)からのアクセスのため遮断されたことがわかりましたが、VPNを使用しているわけでもなく、国内からのアクセスがシンガポールとして検知されてる原因が、この時点ではわかりませんでした
ログ内に残っていたIPアドレスを確認すると、シンガポールに設置されたCloudflareのサーバーと判明!
今まではおそらく国内に設置されていたエッジサーバーからのアクセスだったため問題なくサイトが動作していましたが、何かのタイミングでエッジサーバーがシンガポールに変わってしまい、国外アクセスとみなされブロックされたようです
Cloudflareに特定の国からのアクセスはブロックする設定を導入する
ここから本題ですが、Cloudflare無料版にも、指定した国から(またはそれ以外から)のアクセスをブロックするための設定があることがわかりました
そこで、Traefikのアクセスブロックは削除し、Cloudflare側で管理するようにしました
Cloudflare > セキュリティ > セキュリティルールから設定できます

今回は「日本」「アメリカ」からのアクセスのみ許可する設定を導入します
(Xアカウント連携を使用している関係で、アメリカからのアクセスも許可する必要がありました)

赤枠内のルールを作成からルールが作成できます

設定内容は上記のようにしました
上記例では直接式を記載していますが、「式ビルダーを使用」をクリックするとGUIを利用してルールを作成できます
今回は「日本とアメリカ以外はブロック(日本でもない、かつ、アメリカでもない国はブロック)」というルールとしました
ちなみに、無料版では5つまでルールが作成できます
以上です
Cloudflareで特定の国からのアクセスをブロックする機能を紹介しました
ウェブサイトを公開していると、セキュリティや特定の国のみにサービスを提供したいという理由などでアクセスブロックは頻繁に利用される機能かと思います
Cloudflareでは標準で機能として準備されており、かつ無料版でも利用できるというのがありがたいですね
うまく活用して、サイトのセキュリティを高めましょう!
