実施したいこと

  • 1.インターネットアクセスのセキュリティ強化および可視化(SWG)
  • 2.ローカルサーバへのVPNアクセス(SDP)

背景

ニュースで「Cloudflare One」が無償化?(うろ覚えだが)と見たため。

Cloudflare Zero Trust とは

Cloudflare Zero Trustの公式docs上で、以下記載がある。

Cloudflare Zero Trust は、エンタープライズ アプリケーション、ユーザー、デバイス、ネットワークを保護する Secure Access Service Edge (SASE) プラットフォームの名称である Cloudflare One の一部です。

SWGやSDP(説明は別途)の機能も持ち合わせており、ライセンスの範囲内であれば個人での利用も可。
以下、SWGの実装と、SDPの実装で分けて記載する。

実装:SWG(Secure Web Gateway)

  • 1.アカウント作成

  • 2.Idpの設定(認証)

  • 3.デバイス権限の設定(認可)

    • 以下参考に、設定を行う。
    • https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/device-enrollment/

    • 「Settings」 > 「WARP Client」へ移動。
    • 図. WARP Client 設定
      図. WARP Client 設定
    • 「Device Enrollment」」の「Manage」へ移動。
    • ここで、Google Idpを利用したログインに指定する。
    • 図. Device Enrollment 設定
      図. Device Enrollment 設定
  • 4.利用するクライアントでルート証明書をインストール

    • 以下参考に、証明書を取得する。
    • https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/user-side-certificates/

    • クライアント⇔インターネット間のSSL通信を、Cloudflareがプロキシして検査する関係上、通信経路が、
    • クライアント⇔Cloudflare⇔インターネットというようになる。

    • そうすると、クライアントから見ると、帰ってくる証明書はCloudflareのものになる。
    • あらかじめ信頼済みとして登録してないと、証明書エラーが発生する。

    • 任意の証明書の利用も可能だが、ここではCloudflare発行の証明書を利用する。
    • 「Settings」 > 「Resource」 > 「Certificates」から、IN-USEとなっている証明書の3点リーダーをクリックして、ダウンロード。
      その後、インストール。
    • 図. 証明書一覧
      図. 証明書一覧
  • 5.アプリのインストール

  • 6.ポリシーの設定

    • SWGのポリシーは以下の種類がある。

    • ・DNSポリシー

      • DNSクエリの精査。

    • ・ネットワークポリシー

      • TCP/UDPパケットの検査。

    • ・HTTPポリシー

      • HTTPリクエストの検査。

    • ・Egressポリシー

      • インターネットアクセスの際の送信元IPに、任意の固定IPを設定できる。

    • ・リゾルバーポリシー

      • DNSクエリを任意のDNSサーバで解決するように設定できる。

    • 「Gateway」>「Firewall Policy」から、以下参考に実装。
    •  https://developers.cloudflare.com/cloudflare-one/policies/gateway/



  • 実装後、実際にWARPクライアントをONにしたうえでサイトへアクセスしてみると、
    「Logs」>「Gateway」からログを確認できる。

実装:SDP(Software Defined Perimeter)

全体の大まかな流れとしては、LAN内に専用のサーバーを作成し、WARPクライアントとサーバーのアウトバウンド通信のそれぞれをつないでSDPを実装しているような感じ。後述の手順は、以下参考に作成。
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/

  • 1.トンネルの作成

    • 「Access」>「Tunnel」から、Cloudflaredを選択。
    • 図. トンネル作成画面
      図. トンネル作成画面
    • トンネル名を付けて、CloudflaredをインストールするマシンのOSにしたがってスクリプトを取得する。
    • 私が実装したのは、Miracle Linuxで構成されているサーバーのため、Red Hatのスクリプトを取得する。

    • 出てきたスクリプトをサーバー上で実行すると、Cloudflare側の画面下部に以下が表示され、「接続済み」となる。
    • 図. 接続完了画面
      図. 接続完了画面
    • サーバー側ではサービスが作成され、systemctlで確認できる。
    • 図. cloudflared状態確認
      図. cloudflared状態確認
  • 2.プライベートネットワークの設定

    • 接続したいプライベートネットワークを設定する。一旦サーバーのセグメントを指定。
    • パブリックホスト名は設定不要。
    • 図. プライベートネットワーク作成画面
      図. プライベートネットワーク作成画面
    • トンネルが作成され、「ステータス」がHEALTHYになっていればOK。
    • 図. トンネル一覧画面
      図. トンネル一覧画面
  • 3.プロファイルの設定

    • 接続したいIPセグメントに対して、Cloudflareトンネルを通るように設定が必要。
    • デフォルトの設定では、プライベートIP宛ての通信は、Cloudflareではなくローカルに流れてしまう。

    • 「Settings」>「WARP Client」にある各プロファイルの設定画面に入り、以下セクションの設定を変更する。
    • 図. プロファイル設定画面
      図. プロファイル設定画面
    • 私の環境では、以下プライベートIPをすべて削除した。
    • 図. 除外設定:プライベートIP一覧
      図. 除外設定:プライベートIP一覧
  • 4.ポリシー設定

    • SWGの時と同じ要領で、ポリシーを設定する。

    • HTTPSの通信等、SSLが必要な通信に関しては、個人の環境では自己署名証明書のケースが多いと思われる。
    • その場合、証明書エラーではじかれるので、HTTPポリシーで証明書チェックをバイパスする設定が必要。
    • 図. HTTPポリシー:アクション設定例
      図. HTTPポリシー:アクション設定例
  • 5.動作確認

    • 私の環境内でのUTM(FortiGate)でログを確認すると、該当通信の送信元IPアドレスが、Cloudflaredを実行しているサーバーとなっていることがわかる。

参考・引用

  1. https://developers.cloudflare.com/cloudflare-one/setup/
  2. https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/
  3. https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/google/
  4. https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/device-enrollment/
  5. https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/user-side-certificates/
  6. https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/download-warp/
  7. https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/manual-deployment/
  8. https://developers.cloudflare.com/cloudflare-one/policies/gateway/
  9. https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/