Gadget 41:Tunnel と Access で安全に公開
ポートを開けずに公開する Zero Trust 指向(Tunnel + Access)
Tunnel と Access で安全に公開
Cloudflare OS を自宅 NAS から公開するなら、ポートを開けない Tunnel + Access が最有力です。
目的
- ルーターでポートを開けずに(つまり攻撃面を広げずに)公開する
- アクセスには認証(Access)を挟んで安全にする
前提条件
- ドメイン(management を Cloudflare に置く)
- 公式: https://developers.cloudflare.com/cloudflare-one/
手順
1. ドメインを Cloudflare に載せる
- Cloudflare へドメインを追加(ネームサーバー変更)
- DNS で利用したいサブドメインを登録(Tunnel 後、CNAME に置き換わる)
2. Tunnel で公開する(cloudflared)
# ローカルで一度起動(ワンライナー)
cloudflared tunnel --url http://localhost:8787
# => https://<ランダム>.trycloudflare.com が払い出される(即時確認用)恒久公開は「Named Tunnel」で:
cloudflared tunnel login
cloudflared tunnel create cfos
cloudflared tunnel route dns cfos cf.example.com
cloudflared tunnel run cfos --url http://localhost:8787
Tipポート解放と比較して
ルーターで 8787 を解放するより、外部ポートを一切開けずに済むため 攻撃面が減ります。NAS のやり方と合わせて 02 も参照。
3. Access で認証を挟む
- Cloudflare Zero Trust ダッシュボードで
cf.example.comにアクセスポリシーを追加 - 例: 自分のメールアドレス(EメールワンタイムPIN)のみ許可
- 既定 admin の除去は必須(11)
よくある失敗
| 症状 | 原因 | 対処 |
|---|---|---|
trycloudflare.com は動くのにナメドでだめ |
DNS route 未作成 | cloudflared tunnel route dns を実行 |
| アクセスに無限ループ | Access 設定のセッション問題 | ポリシー対象(ドメイン/パス)を精査 |
| Tunnel が落ちる | 常駐化していない | 自動起動設定(17) |
| OAuth が回らない | Tunnel の URL と OAuth URL が不一致 | 完全一致の URL を登録(03) |
確認
次に読む
- TLS / 証明書 → 13-certificates-and-tls
- セキュリティ強化 → 11-security-hardening
- 監視 → 18-monitoring-and-alerting