Cloudflare 的安全网关

在开发Web应用程序时,我们通常需要将本地服务器暴露到互联网上,以便我们可以在任何地方测试和访问它。ngrok是一个非常流行的工具,它可以让我们轻松地实现这一点。但是,ngrok的付费计划比较昂贵,而且在一些国家可能无法正常使用。在这种情况下,Cloudflare Tunnel可以成为一个低成本且可靠的替代品。

Cloudflare Tunnel是Cloudflare提供的一项服务,它可以通过一个安全的隧道将本地服务器暴露到互联网上。与ngrok不同的是,Cloudflare Tunnel是免费的,并且没有任何使用限制。此外,由于Cloudflare在全球范围内拥有大量的数据中心,因此您可以轻松地选择最近的数据中心,以获得更好的性能和更低的延迟。

使用 Access 管控開出來的網址的存取權

預設開出來的 Public Hostname 是公開任何人都可以連上的,可能有些安全疑慮(尤其是網址固定的狀況下)。對此我們可以利用 Cloudflare Zero Trust Access 為開出的 public hostname 設定存取權限,例如需要登入、或是 IP 在某個範圍才能使用。

首先,在左側選單的 Applications 點選 Access 底下的 Applications,然後點擊 Add an application:

img

點選 Access 底下的 Applications,然後點擊 Add an application。

然後在下一步選 Self-hosted:

img

選 Self-hosted。

再來以下這個步驟需要設定 application 的基本資訊,① 取個名字、② 設定 session 的長度,也就是多久需要重新認證/登入、③ ④ 填入 Application 的網址和 domain,這邊需要填上跟剛剛建立 tunnel public hostname 的時候使用一樣的 Subdomain 和 Domain,否則會無法正確的跳轉到登入畫面:

img

③、④ Application 的網址和 domain 需要填上跟剛剛建立 tunnel public hostname 的時候使用一樣的 Subdomain 和 Domain,否則會無法正確的跳轉到登入畫面。

同一頁捲到下方,這邊設定的是使用者可以用哪些方式認證自己的身份,至於誰可以存取,將在下一個步驟設定。這邊預設只會有 One-time PIN (OTP) 可以選擇,如果要增加更多登入方式(例如 Google、GitHub 登入),需要到 Zero Trust Dashboard 的 Settings → Authentication 來增加。

img

預設只會有 One-time PIN (OTP),運作方式是會要求使用者填入自己的 email,Cloudflare 會發送一個 OTP 到使用者填入的信箱,使用者收到 OTP 後把 OTP 填到 Cloudflare 的認證畫面,就可以向 Cloudflare 證明自己確實擁有這個 email。

點選下一步之後,這個畫面就是設定誰可以存取,首先 ① 要為 policy 取個名字,然後 ② 設定條件。條件設定可以相當靈活,例如使用地理位置或、IP 範圍或是安裝在裝置裡的憑證來授權。這裡很簡單地使用「身份認證時使用的 email 要在列舉名單內」來做授權條件:

img

這裡很簡單地使用「身份認證時使用的 email 在列舉名單內」來做授權條件。

底下和後面還有進階設定,這裡就先跳過,直接按下一步到最後,按下 Add application:

img

下一步到最後。

接下來把剛剛建立的 Application Access 套用到 tunnel 的 hostname 上。在 Dashboard 的左邊選單按下 Access 底下的 Tunnels,然後對要設定的 Tunnel 按下 Configure:

img

對要設定的 Tunnel 按下 Configure。

然後 ① 點選 “Public Hostname” 這個 tab,② 找到要限制存取權的 hostname,對它按 Edit:

img

進入 hostname 的設定畫面後,捲到下面的 Additional application settings,依序展開 ① Additional application settings”、② “Access”,③ 啟用 Protect with Access,然後 ④ 選擇剛剛建立的 Access Application:

img

儲存之後,就算設定完成了。

再次打開原本開的 tunnel hostname 網址,會發現這次我們被登入畫面擋了下來。我們可以在登入畫面填入 email 來取得 OTP:

img

如果授權條件是 IP 範圍或裝置憑證,在授權範圍內應該就能直接取用服務,不會看到登入畫面。另外,如果看到的是白畫面,可能是因為先前設定 Access Application 的時候填入的 domain 和 Tunnel hostname 不一樣,需要回去檢查修正。

然後在信箱裡收 OTP:

img

註:如果填入的 email 不在允許範圍內,會直接就收不到信 XD

回到登入畫面,把收到的 OTP 輸入進去:

img

就可以存取 Tunnel 後面的服務了:

img

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注