Google CloudのCompute EngineでHTTP/HTTPSの接続元をCloudflareに制限する
はじめに
Google Cloud の Compute Engine で接続元を Cloudflare に制限する方法を紹介します。AWS EC2 でもセキュリティーグループに対して同様の設定をすることで、Cloudflare の IP アドレスからのみのアクセスを許可することができます。
Cloudflare の IP アドレスを取得する
Cloudflare の IP アドレスは以下の URL から取得することができます。
テキストエディタに貼り付けて、以下のように加工します。
173.245.48.0/20, 103.21.244.0/22, 103.22.200.0/22, 103.31.4.0/22, 141.101.64.0/18, 108.162.192.0/18, 190.93.240.0/20, 188.114.96.0/20, 197.234.240.0/22, 198.41.128.0/17, 162.158.0.0/15, 104.16.0.0/13, 104.24.0.0/14, 172.64.0.0/13, 131.0.72.0/22
上記は、2023/12/3 現在の IP アドレスです。
ファイアウォールルールを設定する。
HTTP と HTTPS のファイルウォールルールを以下のように設定します。
これによって Compute Engine に対して、HTTP/HTTPS でアクセスできるのは Cloudflare の IP アドレスのみになります。
AWS EC2 で同様の設定をする場合は、セキュリティグループを以下のように設定すればよいです。
IPv6 のリストは以下にあります。こちらも同様に設定してください。
確認
最後に Cloudflare からのアクセスが許可されていることを確認します。Compute Engine に SSH して、以下のコマンドを実行します。
tcpdump dst port 443
Cloudflare を通じてサービスにアクセスしてみて、上記の IP レンジからアクセスがあれば Cloudflare からの疎通は成功です。
さらに公開 IP アドレスの 443 ポートに対してアクセスできるか確認します。
nc -vz <ip address> 443
上記コマンドを実行してレスポンスが帰ってこなければ、Cloudflare 以外からのアクセスがブロックされていることを確認できます。
おわりに
Compute Engine のファイアウォールルールを設定して、Cloudflare からのアクセスのみを許可するように設定しました。
Discussion