👻

Google CloudのCompute EngineでHTTP/HTTPSの接続元をCloudflareに制限する

2023/12/03に公開

はじめに

Google CloudのCompute Engineで接続元をCloudflareに制限する方法を紹介します。AWS EC2でもセキュリティーグループに対して同様の設定をすることで、CloudflareのIPアドレスからのみのアクセスを許可することができます。

CloudflareのIPアドレスを取得する

CloudflareのIPアドレスは以下のURLから取得することができます。

https://www.cloudflare.com/ips-v4

テキストエディタに貼り付けて、以下のように加工します。

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のリストは以下にあります。こちらも同様に設定してください。

https://www.cloudflare.com/ips-v6

確認

最後にCloudflareからのアクセスが許可されていることを確認します。Compute EngineにSSHして、以下のコマンドを実行します。

tcpdump dst port 443

Cloudflareを通じてサービスにアクセスしてみて、上記のIPレンジからアクセスがあればCloudflareからの疎通は成功です。

さらに公開IPアドレスの443ポートに対してアクセスできるか確認します。

nc -vz <ip address> 443

上記コマンドを実行してレスポンスが帰ってこなければ、Cloudflare以外からのアクセスがブロックされていることを確認できます。

おわりに

Compute Engineのファイアウォールルールを設定して、Cloudflareからのアクセスのみを許可するように設定しました。

Discussion