このブログを Cloudflare Tunnel (Free プラン) を介した公開に切り替えてみて、今まで出来ていた事が出来なくなった事と切り替えてから出来るようになった事の備忘録。
切り替え前 (自宅サ-バ-公開)
出来ていた事
- LAN からのみ WordPress 管理画面にアクセス可能
- WAN からは WordPress 管理画面にアクセス不可
出来ていた理由
- WordPress の ログインぺ-ジに LAN からのみアクセス出来るように Web サ-バ-に設定出来た
- WordPress が動作しているサ-バ-に、Let’s Encrypt から取得した証明書を設定していた (LAN から https アクセスが出来た)
自宅サ-バ-公開に掛かるコスト
- ポ-ト公開や DMZ セグメント設定といったル-タ-やサ-バ-の設定 及び 保守
- Let’s Encrypt から証明書を取得・更新する為の設定 及び 保守
- レスポンス向上の為の永続キャッシュ環境設定 (Redis 等)
切り替え後 (Cloudflare Tunnel)
出来なくなった事
- LAN からのみ WordPress 管理画面にアクセス可能に出来なくなり、WAN からのみ WordPress 管理画面にアクセス可能になった
出来なくなった理由
- WordPress の ログインぺ-ジに LAN からのみアクセス出来るように Web サ-バ-に設定出来なくなった (Cloudflare が外部向け Web サ-バ-を担うがアクセス制限を IP アドレスレベルでしか指定出来ない) *1
- LAN から DMZ の WordPress サ-バ-に https アクセスが出来ない (DMZ の WordPress サ-バ-は証明書を持たない為) *2
*1
固定 IP を持っている場合は可能
*2
WordPress は https か http どちらかの Uri スキ-ムでしかアクセス出来ない…筈
出来るようになった事
- 自宅からプロバイダへの IPoE 接続 (IPv4 over IPv6)
- WordPress への IPv6 アクセス (Cloudflare が IPv4 と IPv6 に対応してくれる…筈 IPv6 アクセス出来るか未確認)
Cloudflare Tunnel に切り替えて解放された事
- ポ-ト公開といったル-タ-の設定 及び 保守
- Let’s Encrypt 関連の証明書取得・更新設定 及び 保守
- レスポンス向上の為の永続キャッシュ環境設定 (Redis 等) *3
- 不正アクセスに対する恐怖 (ポ-トを閉じたので過敏になる必要が低くなった)
*3
Cloudflare がキャッシュしてくれる為
Cloudflare Tunnel 切り替え後のコスト
- 取得した gokugetsu.org ドメイン維持費 ($10 程度 / 年)
Cloudflare Tunnel で公開した WordPress の管理画面セキュリティをどうするか ?
前述した通り、Cloudflare Tunnel で WordPress を公開すると管理画面はどうしても WAN 向けに公開する必要が出てきます。
*
固定 IP や、Cloudflare の有償プランといったお金を払えば可能かもしれませんが…
なので Cloudflare の WAF に下記ル-ルを追加しました。
- アクセス元が日本以外からは WordPress ログインぺ-ジアクセス不可
- アクセス元が日本からは WordPress ログインぺ-ジにマネ-ジドチャレンジ後にアクセス可能 *4
*4
Cloudflare が提供している `リクエストに応じて、非対話型のチャレンジまたは CAPTCHA チャレンジをクライアントに提示する` を利用して Bot アクセスを篩にかける。
それに加えて WP 2FA をインスト-ルして二要素認証を行うようにしました。
一応これでそこそこセキュリティは担保出来たと思う…出来たんじゃないかな。
ちなみに Cloudflare Tunnel を使うようになると基本的には WordPress を動かしているサ-バ-で出来る事は殆ど無いです。
127.0.0.1 - - [19/May/2024:14:06:47 +0900] "GET /%E3%80%90%E7%A5%9E%E5%A7%ABproject%E3%80%91%E5%AE%BF%E5%91%BD%E3%82%92%E8%B6%85%E5%85%8B%E3%81%97%E3%81%A6%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F/ HTTP/1.1" 200 26714 "https://www.google.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" "gokugetsu.org"
全てのアクセスが 127.0.0.1 となり、アクセス元が判断できません。
なので Cloudflare の WAF でなんとかするしかありません。
最後に
年 $10 程度掛かるけど、IPoE 接続出来るようになったし色々解放されたしやって良かったと思った (小並感)。