讓Cloudflare Access幫你管理網站存取
內容目錄
A. 前情提要
在前一篇文章使用Cloudflare Tunnel進行內網穿透中,透過Cloudflare Tunnel我們可以輕鬆的訪問本地端的服務,對於日常的Demo有很大的方便性。
但在原先的設置下,只要知道我們設定的網域,就能夠存取我們本地端服務,這樣的行為將造成嚴重的資安問題,因此本篇文章將透過Cloudflare的Access服務,管理存取權限,讓惡意或非預期的訪問,在Cloudflare端就被攔截。
B. 使用Cloudflare Access管理存取權限
首先在Access > Applications > Add an application下選擇Self-hosted,代表這個存取權是設置給自有伺服器的。
接著如下圖輸入相關資訊,其中只有網域設定要跟前一篇文章設定Tunnel相同,其餘可自由填寫:
接著點選下一步到Add policies,這裡設定的是存取政策,政策名稱可以寫你喜歡的名稱:
接著在Create additional rules中設定允許或不允許的條件,這裡僅允許特定email存取該服務,建議允許範圍越小越好:
如果有使用GCP Virtual Machine的經驗,會發現GCP有提供網頁版的SSH介面讓你可以快速操作伺服器,Cloudflare有也提供類似服務,找到Additional settings並根據下圖設定:
完成後,在網址列輸入你的SSH服務對應網址,Cloudflared會先要求你進行身份驗證(文章中設定的是透過email收OTP),接著你還需要輸入登入該伺服器的使用者名稱及密碼,最後你就可以在網頁上操作終端機啦。
C. SSH ProxyCommand
雖然透過網頁操作終端機很方便,但如果要在個人電腦上透過ssh指令連線要怎麼辦呢?這個時候我們就要在個人電腦上安裝Cloudflared,但跟前一篇文章不同的是,這個時候不用設定token,只要單純安裝Cloudflared就可以了,安裝方式請參考官方文件。
在個人電腦安裝好Cloudflared後,在家目錄下的.ssh資料夾中打開config檔案,並參考以下設定:
Host sshHostName
HostName sshHostName
User sshUser
ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h
當你在終端機透過ssh
指令訪問特定主機時,就會開過Cloudflared開啟網頁,提示你進行身份驗證。
D. 總結
文章中介紹的雖然是給SSH服務增加權限設定,但只要是透過Cloudflare代管的網站,任何的網址都可以套用Cloudflare Access進行權限控管。
雖然透過Cloudflare Access可以讓權限控管變得很容易,但就像這個平台的名稱中的Zero Trust,十分建議遵循Zero Trust的原則,盡可能降低並避免風險造成的危害。
其實Cloudflare上關於資訊安全的設定遠不止有Access服務,如有興趣可參考Cloudflare的說明文件。
請注意,不管是以任何方式讓服務可以透過外部網路存取,就一定存在風險,建議練習完後立即關閉所有不必要的服務,降低風險。