banner
JackYoung

JackYoung

生活、摄影、写作、代码。
github
bilibili
email

使用零信任來內網穿透

引子#

家裡的 NAS 一直想做個穿透,然後可以在外面看視頻啥的,遇見了便宜的伺服器就買了一個玩玩,發現買的伺服器的廠商安全做的不是很好,自己的 NAS 就被爆破過一段時間,就很擔心自己的資料丟失之類的。在玩 Cloudflare 的時候,發現他們提供 Zero Trust 服務,遂使用 CF 的服務來實現我的穿透需求。

關於零信任#

零信任網絡訪問(Zero Trust Network Access),與之對應的網絡訪問模式叫做邊界網絡訪問,這種信任模式呢會定義出什麼設備什麼網絡是可信任的,什麼設備什麼網絡是不可信任的,然後在可信任和不可信任之間建立起高牆,這樣的牆就是我們說的 “防火牆”。

這種信任模式有他的好處,好處在於便於管理,一次定義,終身適用。但同時這中間存在了問題點。

首先,如果,出現了一種新的威脅,可以是病毒可以是攻擊,這些威脅超出了防火牆的保護範圍,那麼這個防火牆就是形同虛設的。其次,攻擊者可以通過某些方式,比如說社工繞過防火牆,從內部發起攻擊。最後,邊界信任的模型無法識別到來自被定義為信任的設備的攻擊。這些弱點也使得邊界模型需要做出改變才能適應現在的網絡安全需求。

零信任網絡訪問模型就是解決邊界模型問題的一種改良之策。首先,默認情況下,我們不應該去信任網絡中的任何設備和區域,這點呢就是防止在邊界信任模型中處於同一信任域中的內部設備相互攻擊的情況。其次,信任要通過基於認證和授權重構訪問控制的信任體系,對訪問進行信任授權。最後呢,就是信任應該是動態的,就是說這個授權需要基於訪問實時地進行評估和變換,不能說我第一次拿到授權之後,我換個設備還是這個授權。

Cloudflare 提供的零信任訪問就是基於上面的理論形成的服務。特點:免費!

使用零信任#

創建隧道#

登入 Cloudflare 後,會在主界面左側看到Zero Trust
image

如果是第一次使用,會讓購買服務,自己使用的話只用購買免費版就好。
點擊進入後,選擇Access->Tunnels
image

點擊Create a tunnel,輸入名字點擊Save tunnel,在新的頁面中會提示讓選擇自己的系統。

image

因為 Docker 的易用性,我推薦使用 Docker 來完成後面的操作。點擊 Docker 圖標後,下方的會彈出 Docker 使用的命令,建議在使用之前加上-d --net=host --name=<yourContainerName>,所有的命令看起來是這樣的

docker run \
-d \
--net=host \
--name=<yourContainerName> \
cloudflare/cloudflared:latest \
tunnel --no-autoupdate \
run --token <your token here>

Docker 會自己拉取所需要的鏡像並運行。運行成功後,在剛才的頁面底部會提示連接成功。點擊Next
在接下來的界面裡輸入的是公網訪問的信息。

image

Domain選擇自己有的域名,然後輸入一個沒在其他地方使用的Subdomain,在下面的 Service 裡選擇自己內網裡的服務信息,比如,我內網中有個網頁服務,用的是剛才使用 Docker 連接 CF 的那台伺服器,我想把這個網頁映射出來,我就可以選擇HTTP服務,URL中輸入localhost:80。端口這個根據個人本地的不同來做調整。輸入完成後Save tunnel
接下來,你就可以使用 Cloudflare 提供的服務來完成內網穿透了,訪問剛才自己設置的域名,即可以訪問自己的服務了。

二階段認證#

我放棄購買的伺服器做穿透的原因就在這裡,伺服器的安全性我沒法確定,好在 Cloudflare 也提供了認證服務。
回到Zero Trust頁面,選擇Access->Application->Add an application->Self-hosted

image

在接下來的頁面裡輸入自己的應用名稱,以及期望的認證有效時間(Seesion Duration),輸入剛才自己創建的子域名。點擊Next,進行Policy的編輯。
Policy內輸入名稱,選擇好Seesion Duration,往下翻,按照我圖中的填寫來配置郵箱的二階段認證

image

這裡要注意Require中郵箱地址,需要和註冊的 Cloudflare 地址一致,就是我圖中框出來的位置(如果想用其他郵箱,則需要在主界面中Manage Account->Members來添加其他郵箱),這裡有個坑,CF 把我的郵箱首字母大寫了,導致我輸入自己的郵箱後,怎麼都收不到驗證郵件。
以上操作做完之後,後面的設置可以維持默認,點擊Next往後就好。
設置完成後,訪問自己的域名,就會發現需要輸入郵箱地址來獲取 OTP 了

image

輸入在Policy中使用的郵箱獲取 OTP 後就可以訪問自己的應用了。

總結#

Cloudflare 提供的零信任功能,帶寬上雖然不是很大,但是看個 1080 的視頻還是夠用了,安全方面也解決了我對二階段認證的需求,對我的資產有一定程度的保護,如果有和我類似的需求,Cloudflare 的這個應用還是可以嘗試一下。(對比之下我司的 SDP 服務是真的有些拉跨了……)

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。