🌩️

猫でもわかるCloudflare Access (Zero Trust)

2021/12/09に公開

TL;DR

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

前置き

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

Cloudflare Accessとは

ngrokにzero trust機能付けたやつ
ポート空けずに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 に聞くか公式ドキュメント見てください...

  • Tunnel経由で仮想専用線みたいな事 (N:1)
  • Warp経由でVPN(任意のLocal IP範囲)にアクセス (N:N)

の2通り可能です


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

蹴られた場合はブラウザから下記にアクセスしてログインすると多分うまくいきます(xxxxxxxxxxxxxは各自変更してください)
https://xxxxxxxxxxxxx.cloudflareaccess.com/warp

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

Discussion