WFH必備-在家中透過VPN使用Azure雲端上的服務

在一般的承平時期,企業內部網路要連接到位於雲端的服務,可能會採用 site to site VPN的形式,也就是把企業內網與Azure雲端的虛擬網路透過VPN互聯,達到安全連線的效果:
enter image description here

需求

但最近這幾周,很多企業開始居家上班(WFH),導致用戶需要從家裡存取雲端上的服務,不管是伺服器、網站、資料庫、或是檔案系統…這時候,該怎麼辦呢?

你可能會說,這很容易啊,位於azure上公有雲的服務,都有對外(對internet)的IP,只要開放讓同仁從家裡連線不就得了? 當然不行,因為如此一來,等於把企業的應用攤在網際網路上讓駭客當箭靶練習入侵,因此,我們還是必須走一個安全的方式才行。

做法有兩種,一個是在企業的防火牆上,開放用戶透過VPN從家裡連線的管道,讓用戶先從家裡連到公司,再從公司透過VPN存取雲端的服務。但這樣等於是透過企業機房作為橋接,大部分公司我猜也是這麼做,但有個小缺點,如果台灣斷電(別跟我說不可能),那所有的服務就只能停擺了,即便根本沒受影響的雲端服務也是。

因此,另一種作法呢,則是直接讓用戶從家裡以VPN連線到 Azure 雲端服務,直接存取企業在Azure雲端上的資源,如果你根本把整個企業機房(或上面的主要服務)都移上雲端上(做異地備援或主要服務),更適合這麼作:
enter image description here
這篇文章要介紹的,就是上面這個模式。

如何讓員工,直接透過VPN,從家裡(其實從公司也行)透過網際網路安全的連線到企業位於公有雲上的資源。

環境說明

好,為了說明這個情境,我們建立了一個簡單的模擬。請再仔細看一下上面這張圖,其中有幾個需要注意的部分:

  1. 假設企業在雲端有兩台VM(提供了企業的主要應用,先別管是DB還是AP是WEB…反正就是個情境),IP位置分別是10.0.0.4, 10.0.0.5,這兩台VM使用同一個虛擬網路,其子網路是10.0.0.0/24,這個虛擬網路就是待會我們要讓員工從家裡連上的虛擬網路。
  2. 為了讓員工從家裡安全的連上虛擬網路,我們有設置了一個Virtual Network Gateway,員工要從家裡連上虛擬網路,必須通過這個Virtual Network Gateway。
  3. 從家裡連上Virtual Network Gateway的工具,是Azure VPN Client,而我們用的驗證方式,是採用Azure AD 驗證,這意味著你必須要有一個AAD(放心,只要你用了Azure表示你一定有)。

好,有了上面的概念之後,就開始實作了。
由於我們的情境下,雲端環境上有兩台VM,我們規劃的位置是10.0.0.x,因此,我們會先建立一個虛擬網路(10.0.0.0/16),並且指定子網路為(10.0.0.0/24):
enter image description here

然後再在建立VM的時候,幫VM指定使用這個虛擬網路:
enter image description here
如此一來,建立出來的VM就會在該虛擬網路的子網路IP區段中。

如果你建立多台VM,你會發現這幾台VM可以用內部IP互通:
enter image description here

同時在v-net中也可以看到:
enter image description here

建立gateway

基本環境沒問題之後,請參考下圖,接下來我們要建立virtual network gateway的部分:
enter image description here

Virtual Network Gateway的建立採預設參數即可,但需要留意,建立的時候『虛擬網路』的部分必須選擇上面包含我們VM的這個虛擬網路(這理所當然),建立好之後,請點選Virtual Network Gateway的『點對站(P2S)設定』:

enter image description here

其中有幾個關鍵,首先,你知道的,當外部的用戶透過家裡(或網咖、或公司)連入我們在Azure雲端上的虛擬網路時,必須走VPN,因此也理當有個安全的身分驗證方式,因此我們在上面選擇了Azure AD作為身分驗證方式(上圖B),所以你會發現下方C、D、E的部分,就是為了設定AAD的相關資訊,其中被霧化的是AAD的租用戶ID,這個資訊你可以從你的AAD管理頁面中找到:
enter image description here

你會發現下圖中的D,有一個GUID,這是Azure AD 企業應用程式的ID,一般Public Azure我們用41b23e61-6c1e-4545-b367-cd054e0ed4b4。這部分的細節可以參考微軟官網: 建立 P2S VPN 連線的 Azure AD 租使用者: Azure AD 驗證 - Azure VPN Gateway | Microsoft Docs

enter image description here

設定好並且儲存了之後,請別忘記點選上圖F中的連結,他會跳出一個視窗要你登入(請用具有AAD管理員身分的帳號登入),他會引導你同意應用程式授權,這個動作是讓該應用程式具有使用你AAD部分資訊的權利。(等於是我們在AAD上安裝了個應用程式,如下圖…)
enter image description here
有沒有,上圖就是AAD中安裝了的那個應用程式(Azure VPN)。其實也就是為你提供VPN 驗證服務的伺服器端啦。

設定用戶端

好,有了這些之後,我們要來設定Client,也就是能讓同仁從家裡(其實公司也行)以AAD帳密Azure雲端虛擬網路的用戶端機制。

請點選上方的下載VPN用戶端,這個動作會花幾分鐘,請耐心等候:
enter image description here

你會下載到一個檔案,解壓縮後,會看到AzureVPN資料夾下,有一個xml文件:
enter image description here

他是一個組態檔,讓你可以從windows 10以VPN方式連入雲端,主要是提供給Azure VPN 用戶端這個程式用的:
enter image description here

如果你沒有上面這個程式,請從 windows 市集下載(位於: 取得 Azure VPN 用戶端 - Microsoft Store zh-TW )。下載完之後,把組態檔匯入即可。

但別急,你要正確地使用該應用程式,還必須做一個設定。

請參考底下微軟官網上的文件,設定P2S的憑證:
產生和匯出 P2S 的憑證: PowerShell - Azure VPN Gateway | Microsoft Docs

你可以直接透過powershell執行底下這兩段code:

$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject "CN=P2SRootCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign

New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature ` -Subject "CN=P2SChildCert" -KeyExportPolicy Exportable ` -HashAlgorithm sha256 -KeyLength  2048 ` -CertStoreLocation "Cert:\CurrentUser\My" ` -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")

他將會幫你在用戶端建立憑證。

完成後,開啟 Azure VPN Client,將剛才的.xml設定檔匯入:
enter image description here

你會發現相關的設定資訊其實跟剛才我們在gateway上建立的差不多:
enter image description here

完成後,你就有個可以直接連上Azure雲端虛擬網路的VPN可以用了:
enter image description here

透過上面這個設定,我們可以輕鬆的以VPN連入雲端,以內部IP的方式,啟動VM的遠端桌面連線:
enter image description here

當然不只是VM,上面只是透過VM來示範,而DB、AP Server或其他服務也是一樣的。當這樣的機制設定好之後,我們等同可以從家裏或公司,以VPN方式,安全的連入位於公有雲的雲端上的服務和應用、伺服器,而不需要把這些服務或伺服器攤在網際網路上當箭靶。是一個更適合企業在WFH階段使用雲端服務更好的方式。

留言

Root寫道…
圖片看不到

這個網誌中的熱門文章

使用 Airtable 在小型需求上取代傳統資料庫

在POC或迷你專案中使用 LiteDB

專業的價值...

精彩(且驚人)的Semantic Kernel入門範例

Azure Web App 的基本驗證被停止了!