☁️

猫でもわかるCloudflare Access

4 min read

TL;DR

最後まで読め
流石に猫にはわからんて。しらんけど。

前置き

Cloudflareとはなにかを理解していてドメイン設定は済んでいる人が対象
Tunnel設定の備忘録なのでAccessに関してはサクサクっと飛ばします

一応補足しておくと正確にはAccessの機能ではなくCloudflare for Teamsの機能になります

Cloudflare Accessとは

ngrokみたいなやつ
ポート空けずにSSHとかHTTP(S)通せる

猫でも分かる要素終わり
ここから下は設定方法しか書いてません
タイトル詐欺じゃねえの

目次フローチャート

共通
├外部に穴開けてゼロトラストしたい人
│  └→ゼロトラストしたい
└WARP(1.1.1.1)アプリ使ってVPNしたい人
   └→閉鎖網(VPN)したい

環境

Location: Oracle Cloud
OS: Ubuntu 20.04.3 LTS
User: ubuntu

共通

1. cloudflared インストール

$ echo 'deb http://pkg.cloudflare.com/ focal main' | sudo tee /etc/apt/sources.list.d/cloudflare-main.list
$ curl -C - https://pkg.cloudflare.com/pubkey.gpg | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install cloudflared

2. ログイン

$ cloudflared tunnel login
# Please open the following URL and log in with your Cloudflare account: (URL出てくるのでアクセス)

これを(使いたいドメインクリック)

こうして(流石に押すとこ分かるじゃろ)

こうじゃっ

3. トンネル作成

Cloudflareとサーバーを繋ぐトンネルだと思ってもらえばいいです
トンネル名は後で変えれない(削除はできる)ので注意

$ cloudflared tunnel create 好きなトンネル名
# Created tunnel [トンネル名] with id [UUID] ←このUUID大事なのでメモっといてください(忘れても再表示できます)

4. 認証方法設定

1. Teamsにアクセス

2. Settings→Authenticationポチー

3. Login methodsのAdd newポチッ

設定後なのでGoogleありますが初回はないはず

4. 認証に使用したいやつを選んで設定してください

Google選ぶとGoogle認証でログインできるようになります

5. ユーザー設定

1. Add a group

2. グループ設定

後程サブドメインにグループを紐付けます
ここで設定したメールアドレスでログインしたユーザーのみゼロトラストを通過できます

スクショ写ってないけど上にSaveボタンあるよ

ゼロトラストしたい

本文で設定するドメイン

zenn-dev.come25136.id

1. ~/.cloudflared/config.ymlに書き書き

tunnel: UUID # さっきのUUIDに変更
credentials-file: /home/ユーザー名/cloudflared/UUID.json # ユーザー名とUUID変更

ingress:
  - hostname: ゼロトラストしたいドメイン
    service: http://localhost:3000 # 内部に建ってるアクセスしたいサーバー(sshとかも設定できます)
  - service: http_status:404 # おまじない

サンプル

tunnel: xxxx-xxxx-xxxx-xxxx
credentials-file: /home/ubuntu/cloudflared/xxxx-xxxx-xxxx-xxxx.json

ingress:
  - hostname: zenn-dev.come25136.id
    service: http://localhost:3000
  - service: http_status:404

2. テスト

$ cloudflared tunnel run

赤字で怒られなければOK

3. 自動起動設定(サービス化)

$ sudo cloudflared --config ~/.cloudflared/config.yml service install
$ sudo service cloudflared start # 起動

4. DNSに登録

これ手動でやってる記事多いんですが、コマンド一発で出来ます
※ただしサブドメインに限る

$ cloudflared tunnel route dns UUIDかトンネル名 ドメイン名 # 各自変更
# 例: cloudflared tunnel route dns xxx zenn-dev.come25136.id

DNSになんか増えてる

5. ゼロトラスト設定

1. Access→Applications→Add an Application

2. Self-hosted

3. ingressで設定したドメインやら色々入れてNext

4. ポリシー設定

先程設定した許可したいグループを選んでください

5. オプション設定

特に弄らなくてOK

6. おわり

設定したドメインにアクセスしてみてください
認証画面が出てゼロトラストできるはずです

閉鎖網(VPN)したい

書くの面倒くさくなったので @come25136_spd に聞くか公式ドキュメント見てください...

注意点としては、認証方法設定に少し追加設定しないといけないかもしれないです
あと、Windows版Cloudflare WARPでGoogle認証使うとセキュリティ上の理由で蹴られます
詳しくは@come25136_spd

https://developers.cloudflare.com/cloudflare-one/tutorials/warp-to-tunnel#configure-and-run-the-tunnel

Discussion

ログインするとコメントできます