RSS訂閱

2011年12月30日 星期五

DirectAccess 遠端存取技術實務 (Setup a DirectAccess Remote Access Environment)

許多企業透過遠端存取(Remote Access)服務提供使用者可以經由公用網路以安全性的連線方式來存取公司內部的資源與服務,從早期的撥號網路到目前常見的虛擬私人網路(VPN)均是廣泛被IT人員熟知的遠端存取技術,而微軟Windows Server 2008 R2 的遠端存取(Remote Access)功能則新增了一項稱為DirectAccess的加強技術, DirectAccess和傳統的VPN技術主要的差別在於它並不須要用戶端手動執行連線初始或中斷連線的動作,而是用戶端電腦一旦位於公司網路範圍之外並且連上網際網路時就會自動連線(always-on),不過這項新的遠端存取技術目前只有Windows Server 2008 R2以後的伺服器平台支援,而且也只有安裝Windows 7 企業版或旗鑑版以後的Windows系統才能夠成為DirectAccess用戶端。

比較起微軟傳統的虛擬私人網路(VPN)服務,DirectAccess這項新的遠端存取方式對大部份IT人員而言算是陌生而複雜的技術,所以本文將深入淺出的探討DirectAccess這項技術,以便讓一般IT人員可以認識這種技術,進而評估是否要導入此種新型類的遠端存取技術。

DirectAccess 如何運作

DirectAccess的遠端存取運作過程涉及到DirectAccess用戶端、DirectAccess伺服端、網域控制站、DNS伺服器、憑證服務以及提供資源的內部伺服器等電腦,並且基於安全性的考量,還須要在建立IPsec通道時需進行電腦和使用者驗證,然後再透過加密通道來建行溝通,整個過程大如下:

  1. DirectAccess用戶端電腦判斷是否連至企業網路(Intranet),若目前已位於公司網路之內,則不會使用DirectAccess,否則啟用 DirectAccess連線。
  2. DirectAccess用戶電腦使用IPv6和IPSec經由網際網路連至DirectAccess伺服器,若原生IPv6無法使用,則用戶端會採用6to4或Teredo IP6轉換技術送出IPv4封裝IPv6的流量

  3. 假如防火牆或代理伺服器禁止用戶端使用6to4或Teredo IP6轉換技術連線至DirectAccess伺服器,則用戶端將自動採用IP-HTTPS協定,而IP-HTTPS採用IPv4基礎的SSL連線來封裝IPv6封包。

  4. 以IPSec工作階段建立架構通道過程中,DirectAccess用戶端與伺服器將會使用電腦憑證和電腦帳戶經由網域控制站和內部DNS伺服器來進行相互驗證。

  5. 當使用者登入時,DirectAccess用戶端建立企業網路通道以存取內部資源,DirectAccess用戶端與伺服器二端會使用電腦憑證和使用者帳戶來進行驗證。

  6. DirectAccess伺服器負責轉送DirectAccess用戶端和企業內部資源之間的流量。

由上可知,DirectAccess用戶端利用IPSec的通道模式(IPSec Tunnel Mode)和ESP協定建立二個IPSec通道,一個基礎結構通道(infrastructure tunnel)和另一個企業網路通道(intranet tunnel),分別透過電腦憑證以及Active Directory帳戶來加以驗證安全性,亦即在使用者登入之前即先驗證電腦。

daarch

DirectAccess的優缺點

DirectAceess是一個新型態的遠端存取技術,其使用上的優缺點大多是與傳統VPN比較分析的結果,其主要的優點為:

  • 用戶端電腦自動連線 (無須使用者手動啟始連線) 
  • 易於通過網路防火牆
  • 支援端點與端點的驗證與加密通訊
  • 分隔企業網路和網際網路流量
  • 支援遠端用戶端電腦管理,較能夠讓IT人員管控遠端用戶端

另一方面,DirectAccess主要的缺點為:

  • 不支援Windows 7以前的用戶端電腦以及非微軟Windows的用戶端
  • 須使用 Windows Server 2008 R2以後伺服器架設DirectAccess伺服端
  • 須要加入 Active Directory網域
  • 須要架設公開金鑰基礎結構 (PKI)
  • 架設與部署設定複雜 (須要了解IPv6/IPv4移轉技術、PKI、Active Directory 群組原則….)

DirectAccess 使用的技術

微軟的 DirectAccess 的運作需要依賴下列的技術來建立安全的遠端存取服務:

  • Active Directory
    DirectAccess只能在Active Directory網域環境下運作,所有參與的伺服器與用戶端均得加入網域,還須要使用Active Directory目錄服務的驗證、查詢與群組原則相關功能。
  • IPSec
    DirectAccess 利用IPSec協定提供安全性的連線基礎,IPSec不僅用來提供電腦和使用者的驗證功能,也做為加密通訊之用。
  • PKI憑證
    DirectAccess利用PKI技術來提供以憑證為基礎方法的驗證能力,讓DirectAccess伺服器和所有用戶端透過憑證方式來進行相互驗證以確保連線安全,所以企業網路需要預先部署憑證服務來管理憑證的發行和撤銷工作。
  • IPv6/IPv4移轉技術
    DirectAccess使用IPv6提供了用戶端、伺服器和內部資源的端點對端點全球定址能力,不過您並不須要具有連線至IPv6網際網路或企業內部網路需支援原生IPv6的能力,因為DirectAccess會使用並自動設定IPV6流量以通道(tunnel)傳輸技術跨越IPv4網際網路(6to4、Teredo、IP-HTTPS)並跨越只使用IPv4的企業網路(ISATAP)。所以DirectAccess會使用一些整合IPv6流量至IPv4網路的技術:
    • ISATAP(Intra-Site Automatic Tunnel Addressing Protocol) - 用來跨越僅支持IPv4的Intranet的IPv6/IPv4主機之間的單播通信能力,通常用於企業網路。
    • 6to4 - 提供IPv6/IPv4主機和具有IPv6兼容的區域於網際網路(IPv4)之間的單點傳輸能力。
    • Teredo - 用於用戶端使用IPv4位址且位於一部NAT設備之後,可以提供了在IPv4 網際網路上的IPv6/IPv4主機之間單點傳輸能力。
    • IP-HTTPS - 允許使用HTTP與SSL作為傳輸IPv6的隧道,,即使客戶端是位於一部限制性代理或防火牆之後仍然能夠連接,不過這是僅適用於Windows 7和Server2008 R2的連線技術

建置DirectAccess 遠端存取環境的需求條件

建立一個DirectAccess遠端存取環境,IT人員需要提供符合條件的基礎網路結構、安全性結構以及符合軟硬體條件的用戶端和伺服器電腦:

Active Directory目錄服務 Active Directory環境中,自然包括了網域控制站(Domain Controller)和DNS伺服器,而網域控制站的版本需要使用Windows Server 2008 SP2或Windows Server 2008 R2作業系統。
Active Directory憑證服務 DirectAccess網路安全性環境需要提供PKI架構來發行與管理電腦憑證,所以通常需要安裝Active Directory憑證服務來建立一部企業憑證授權單位。
DirectAccess 伺服器
  1. Windows Server 2008 R2 作業系統
  2. 必需加入Active Directory成為網域成員伺服器
  3. 需要有二個網路介面,一個介面直接連接網際網路,另一個網路介面連接企業網路。
  4. 網際網路用途的介面需設定二個連續的IPv4公開位址
  5. 必需是Internet直接連線的機器,不能在NAT設備之後 (若要部署在防火牆NAT裝置後,需要您的裝置有可支援某些功能且可能做一些複雜的設定來轉送或轉換DirectAccess伺服器相關的流量)
  6. 憑證:IPSec驗證的電腦憑證以及IP-HTTPS使用的SSL憑證
  7. 如果本身也扮演網路位置伺服器 (network location server),還需要IIS和SSL憑證
Network Location Server

由於DirectAccess的設計哲學是自動於背景運作,用戶端使用者並不須要做任何啟用連線的動作,所以為了讓這個連線過程完全透明化,用戶端電腦必須能夠自動判斷目前是否已連線至企業網路以決定是否要啟用DirectAccess,而網路位置伺服器(Network Location Server;NLS)提供了用戶端判斷電腦是否須要啟用DirectAccess服務的基礎,換言之,NLS 提供用戶端偵測是否連接至企業網路的依據,而NLS本質上是一部企業內部允許SSL連入的IIS網站伺服器,當DirectAccess可以連上NLS是,它知道目前在公司網路,所以它會關閉DirectAccess相關元件,若無法連接NLS,則判斷目前是處理企業網路之外,就會自動啟動DirectAccess元件,透過網際網路和DirectAccess伺服器建立IPSec通道。
由於NLS耗費的資源並不重,所以您並不須要特別替它架設專屬的伺服器,而可以合併伺服器,不過一旦合併其它服務,而這些服務又須要讓位於公司網路之外的DirectAccess用戶端可以存取,則您須要在Active Directory的DNS伺服器內幫它建立額外的別名(CNAME)以讓用戶在外時可以利用這個名稱來存取之。

DirectAccess用戶端
  1. 必需使用Windows 7 企業或旗鑑版 (Windows 8)作業系統。
  2. 必需加入Active Directory網域成為工作站。
  3. 有效的電腦憑證 (IPSec驗證用途)

建置DirectAccess遠端存取服務實務與步驟

企業組織若打算建置DirectAccess的遠端存取服務,首先需確認其符合企業的必要性與可行性,其次檢視各種建置條件是否符合,然後依序安裝並設定所須的伺服器服務,最後連線測試以完成,整個過程包含了下列步驟:

  1. 準備與設定 Active Directory 網域環境
  2. 建立與設定企業憑證授權單位(Install and Config Enterprise CA)
  3. 在DirectAccess伺服器和網路位置伺服器安裝網頁憑證並設定NLS網站 HTTPS繫結
  4. 安裝與設定DirectAccess伺服器
  5. DirectAccess 用戶端連線測試與確認

底下將詳細說明這些DirectAccess的準備、建置、設定與測試的做法。

壹. Active Directory目錄服務環境設定

DirectAccess 須要在Active Directory網域服務環境下運作,如果企業網路已經建置了 Active Directory網域環境(已有網域控制站、DNS伺服器),並且所有規劃的DirectAccess用戶端也已經加入網域,那麼您的Active Directory仍須要增加一些額外的調整與設定之後才能符合DirectAccess環境需求,為了支援DirectAccess正常運作,Active Directory網域需要調整設定的項目包括了:

  • 建立用戶端電腦群組
  • 設定DirectAccess用戶端相關的群組原則設定
  • 從DNS伺服器的全域封鎖清單中移除ISATAP

一. 建立DirectAccess用戶端的安全性群組

您需要在Active Directory網域內建立一個用戶端電腦帳戶的安全性全域群組(Global Group)並將用戶端電腦帳戶加入群組內,做法十分簡單:

  1. 使用【Active Directory 使用者及電腦】管理工具,新增一個安全性類型的全域群組(本範例群組名稱為 "DAClients")。
  2. 由群組的『內容』對話方塊內的『成員』標籤設定頁,將所有DirectAccess的用戶端電腦帳戶一一加入成為群組的成員。

DACGROUPS

二. 使用Active Directory 群組原則準備DirectAccess用戶端組態

為了讓DirectAccess用戶端要能夠順利連接伺服器,需要一些防火牆例外規則處理以及自動憑證註冊的功能,由於用戶端的機器可能較多或是日後會不斷新增,最有效率與強制性的做法是透過Active Directory群組原則來套用這些用戶端必要的組態設定,所以您須要設定二項關於DirectAccess用戶端的群組原則項目:

  • 允許ICMPv6 Echo Request連出與連入規則
  • 設定網域用戶端自動註冊憑證

因為做為Teredo基礎的DirectAccess用戶端須要能夠傳送與接收ICMPv6 Echo請求訊息,所以您須要設定適當的Windows 防火牆允許規則:

  1. 請在網域控制站上啟動【群組原則管理】主控台(gpmc.msc)。
  2. 編輯"Default Domain Policy" 群組原則物件。(當然您可以建立自己的GPO來加以編輯,最後再將它連結到適當的容區物件即可)
    gpmc1
  3. 在『群組原則物件編輯器』中,展開『電腦設定↘原則↘Windows 設定↘安全性設定↘具有進階安全性的windows防火牆↘具有進階安全性的windows防火牆……….↘』,並且需要同時設定底下的『輸入規則』和『輸出規則』,不過在此以設定輸入規則為例,輸出規則只要依樣畫葫蘆相同的步驟做法即可。
  4. 請由『輸入規則』右鍵功能表內選取『新增規則』。
    gpmc2
  5. 接下來於出現的『新增輸入規則精靈』程式,選擇『自訂』,按『下一步』繼續。
  6. 選擇『所有程式』,按『下一步』繼續。
    gpmc12
  7. 接下來的通訊協定與連接埠設定,請由『通訊協定類型』中選擇『ICMPv6』,然後按下方的『自訂』按鈕。
  8. 在出現的『自訂ICMP設定』設定頁中,請核選『回應要求』,按『確定』,再按『下一步』繼續。
    gpmc13
  9. 『領域』設定頁中,接受預設值『任何IP位址』,直接按『下一步』繼續。
  10. 『執行動作』設定頁中,請選取『允許連線』,按『下一步』繼續。
  11. 『設定檔』設定頁中,直接按『下一步』繼續。
  12. 最後,請輸入一個易懂的規則名稱即可。
    gpmc11

再度強調,您還必需建立另一個相反方向-輸出,相同的允許ICMPv6回應要求訊息,做法同上,在此不再贅述。

下一項群組原則設定為自動註冊憑證功能,不過這項群組原則設定請架設好Active Directory企業憑證服務之後再來設定,其步驟如下:

  1. 於『群組原則物件編輯器』中,瀏覽並點選至『電腦設定↘原則↘Windows設定↘安全性設定↘公開金鑰原則』節點後,並在右側窗格按二下『憑證服務用戶端 - 自動註冊』項目。
  2. 在『憑證服務用戶端 - 自動註冊 - 內容』對話話方塊內,將『設定模式』設定為『啟用』後,並勾選隨之出現的『更新到期的憑證,更新擱置中的憑證並移除撤銷的憑證』和『更新使用憑證範本的憑證』二個核選方塊。
    autoenroll
  3. 啟用了用戶端自動註冊功能後,接下來您還須要設定那種類型的憑證要自動註冊,所以請在同一個『公開金鑰原則』目錄位置下,按二下『自動憑證設定值』,並於空白的中間窗格以滑鼠右鍵選取出現的『新增↘自動憑證要求』選項。
  4. 待畫面會啟動一個『自動憑證要求安裝精靈』程式後,按『下一步』繼續。
    autoenroll7
  5. 『憑證範本』設定頁中,請選擇『電腦』範本,按『下一步』繼續,下一個設定頁直接按『完成』就可完成了精靈程式。
    autoenroll5

完成上述二項群組原則設定後並且經過一段時間(或是用戶端下達gpupdate命令)讓群組原則套用生效後,用戶端電腦就會傳送接收ICMPv6回應要求的封包並且取得驗證用的電腦憑證。

三. 從DNS伺服器的全域封鎖清單中移除ISATAP

由於DirectAccess利用站台內(Intra-site)自動通道位址協定(ISATAP)進行通訊,但基於安全性的考量,Windows DNS伺服器於預設上將ISATAP協定列為全域封鎖清單(Global Block List),所以您必需將ISATAP協定從DNS的全域封鎖清單中予以移除,移除的方法有二:

  1. 使用登錄編輯器(regedit),瀏覽並找到『HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters 』機碼,然後修改底下的"GlobalQueryBlocklist"這個值,原來封鎖清單內可看到有二個協定-wpad和isatap,請將isatap這個字串移除,然後再按『確定』並關閉登錄編輯器,最後請重新啟動DNS服務讓變更生效。
    isatap1
  2. 第二個方法是利用 "DNScmd /Config /GlobalQueryBlockList wpad" 命令來重設封鎖清單時不再把isatap含入,如此就可以從封鎖清單中排除了isatap協定,然後再重新啟動DNS伺服器服務即可生效。
    isatap3

 

貳. 建立與設定企業憑證授權單位

建立 DirectAccess連線的IPSec通道須要使用電腦憑證進行驗證,所以您須要架設一部企業CA(可利用網域控制站或成員伺服器均可)並建立適當的憑證範本。

一. 建立企業根CA

  1. 開啟【伺服器管理員】工具,並啟動『新增角色精靈』程式。
  2. 選擇安裝『Active Directory 憑證服務』。
  3. 指定安裝為 "企業根CA"類型。
    cainstall
  4. 後續步驟均依預設值即可,亦即請直接按下一步即可。
  5. 完成精靈程式後即可成功建立企業根CA。

二. 建立新的網頁憑證範本

DirectAccess須要PKI架構提供網頁伺服器憑證,但企業CA所發行的憑證屬性是來自預設的範本,由於預設的的範本屬性大多無法直接變更,所以若需要自訂屬性的憑證,則您需要:

–複製預設憑證範本

–修改範本內容

–新增並啟用要用以發行的憑證範本

  1. 請開啟【伺服器管理員】工具,由左側的樹狀目錄中找到企業PKI底下的『憑證範本』目錄以滑鼠按一下『憑證範本』。
  2. 請在中間的憑證範本中找到『網頁伺服器』並由右鍵功能表選取『複製範本』選項,並核選 “Windows Server 2008 Enterprise"版本的範本。
    certtemp
  3. 接下來於新範本的內容內,我們須更新三項屬性:
    (1) 『一般』標籤:輸入一個友善易於辨識的名稱
    (2) 『處理要求』標籤:核選『允許匯出私密金鑰』
    (3) 『安全性』標籤:設定 "Authenticated Users" 群組以及加入"Domain Computers" 群組二者均擁有『讀取』和『註冊』二項權限。
    certtemp4
  4. 按一下『確定』完成新範本的建立。
  5. 最後,您還須要新增並啟用這個新的憑證範本,請在伺服器管理員工具中,找到憑證授權單位底下的『憑證範本』,並按下右鍵功能表的『新增 / 要發出的憑證範本』,待畫面出現『啟用憑證範本』對話方塊時,選取並新增方才經由複製的新範本。
    addtemplate

三. 在DirectAccess伺服器上設定憑證撤銷清單(CRL)

DirectAccess用戶端建立IPSec通道時須使用憑證進行相互驗證,而一個有效的憑證須要符合尚未過期、由可信的CA發行以及未被撤銷(Revoke)等條件,所以憑證授權單位必須提供憑證撤銷檢查機制,而最傳統的機制即是透過憑證撤銷清單 (CRL) 的發行,來讓憑證的使用者可以下載清單以確認其所收到的憑證是否仍具有效力,不過為了讓內部用戶與外部用戶均可以順利取得這一份定期發行的撤銷清單,最好是將其發行在DirctAccess伺服器,因為DirectAccess伺服器為網或成員又部署在DMZ或週邊網路,內外機器均可存取到,但做法稍為繁冗,因為您須要在DirectAccess伺服器建立一個共用資料夾並設設為IIS網站的虛擬目錄,然後於憑證授權單位(CA)上新增CRL發行位置為DirectAccess伺服器的IIS網址和共用資料夾。

首先,您須要在DirectAccess伺服器上安裝IIS並建立網頁CRL發佈點,做法如下:

  1. 安裝IIS角色,接受安裝預設值。
  2. 開啟【IIS管理員】,按一下『Default Web Site』,於右鍵功能表中選取『新增虛擬目錄』。
    crld0
  3. 在『新增虛擬目錄』對話方塊內,輸入別名"crld",並指向實體路徑 "c:\crld" (請利用 『…』來創造目錄 "c:\crld")。
    crld2
  4. 接下來,請在中間的內容窗格中雙擊『瀏覽目錄』圖示,並在右側的『動作』窗格,按一下『啟用』。
    crld5
  5. 根據預設值,IIS 7.0 要求篩選會封鎖 Delta CRL 的 URL 中使用的加號 (+),若要允許 Delta CRL 擷取,須修改 IIS 設定,所以請在中間的內容窗格中雙擊『設定編輯器』圖示,開啟『system.webServer\security\requestFiltering』區段,選取『allowDoubleEscaping』並設定值為 "True",然後按動作窗格內的『套用』使其生效。
    crld8 

其次,您還要設定適當的CRL發佈點的共用資料夾權限。

  1. 啟用檔案總管,按一下上述crld目錄,啟動目錄的內容對話塊,並選擇『共用』索引設定頁,按一下『進階共用』。
  2. 於『進階共用』對話方塊內,請核選『共用此資料夾』,並在預設的共用名稱後加上 "$" 符號以作為隱藏資料夾,並按下方的『權限』,新增憑證授權單位(CA)電腦帳戶擁有完全控制的共用權限,按二次『確定』完成共用設定
  3. 接下來您需要設定NTFS權限,按一下內容話方塊的『安全性』索引標籤,新增憑證授權單位(CA)電腦帳戶擁有完全控制的NTFS權限。
    crldshare

四. 設定CRL發佈點 (CDP)

為了讓外部的電腦和內部的電腦都可以順利下載到憑證撤銷清單來加以檢查,所以您還須要新增二個CRL發佈點(CDP)的路徑,一個為外部電腦使用的HTTP URL,這個URL可以讓外部電腦據此找到CRL,另一個則是內部電腦使用的UNC路徑,這個位置是讓本機可將CRL順利發佈到DirectAccess伺服器上的隱藏共用資料夾,完整的實做方法及步驟如下:

  1. 請於憑證授權單位(CA)電腦上啟動『憑證授權單位』管理工具。
  2. 請按一下伺服器名稱並開啟其內容對話盒,然後按一下『延伸』標籤。
  3. 在『延伸』設定頁內按一上中間的『新增』按鈕。
  4. 在出現的『新增位置』對話方塊內的『位置』輸入欄位中輸入 http://da-srv.lij.com/crld/ (請換成自己DirectAccess伺服器在網際網路上註冊的FQDN)。
  5. 然後在底下的『變數』分別依序選取<CaName>變數,然後按一下『插入』,其次,選取<CRLNameSuffix>變數,按一下『插入』,最後選取<DeltaCRLAllowed>變數,再按一下『插入』,此時,您可以看到『位置』輸入欄位中己變為 http://da-srv.lij.com/crld/<CaName><CRLNameSuffix><DeltaCRLAllowed>,您必須在最附加上 ".crl",最後完整位置路徑將為 「http://da-srv.lij.com/crld/<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl」,按『確定』。
  6. 回至『延伸』設定頁時,請對此新增的CDP核選『包含在CRL中。用戶端用此來尋找Delta CRL的位置』和『包含在已發行憑證的CDP延伸中』這二個核選方塊。
    cdpadd
  7. 緊接下來,您須要再新增上一步驟在DirectAccess伺服器已建立好的UNC共用資料夾位置,以讓CA知道應將CRL發佈到那裡,所以請再按一下『新增』。
  8. 在『新增位置』對話方塊中的位置輸入欄位中有如上述新增變數的作法來輸入UNC路徑,例如本例為「\\da-srv\crld$\<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl」」,按『確定』。
  9. 回至『延伸』設定頁時,請對此新增的CDP核選『在這個位置發佈 CRL』和『發佈Delta CRL 到這個位置』這二個核選方塊,完成後按『確定』。
    cdpadd1
  10. 最後,依畫面提示,重新啟動憑證服務即完成新增CDP的設定。

五. 發佈CRL到DirectAccess伺服器共用資料夾並加以確認

一旦如上述步驟部署好PKI CRL發佈架構服務後,管理員可以手動立即發佈CRL到規劃的DirectAccess共用資料夾並予以確認成功存在否,就可得知上述複雜的設定是否有誤或遺漏。

  1. 於憑證授權單位上啟動『憑證授權單位』管理工具。
  2. 利用滑鼠右鍵按一下證授權單位名稱下的『已撤銷的憑證』,並於出現的右鍵功能表中選取『所有工作 / 發佈』選項。
  3. 在『發佈 CRL』對話方塊中,核選預設的『新的 CRL』並按『確定』,此時憑證授權單位就會將CRL這份清單複製到您所定義的發佈位置,亦即DirectAccess伺服器的隱藏共用資料夾 (\\da-srv\crld$)。
    crlpublish4
  4. 接下來,為了檢視上面的CRL發佈是否成功,您可以利用『執行』對話方塊輸入DirectAccess伺服器的隱藏共用資料夾 UNC名稱來進行連線,再看其內是否存在 二個 .crl 檔案。
    crlpublish5

參. 在DirectAccess伺服器和網路位置伺服器安裝網頁憑證並設定HTTPS繫結

我們曾經在前面步驟中建立一個新的網頁憑證範本,現在將要透過它來建立憑證。由於 DirectAccess伺服器和網路位置伺服器(Network Location Server)這二部電腦在IPsec通道建立過程中需要進行相互驗證,所以我們必需分別在這二部伺服器上安裝網頁憑證(如果您的DirectAccess伺服器本身也扮演網路位置伺服器當然就只須安裝一次網頁憑證即可)。

  1. 在DirectAccess伺服器執行 "mmc"命令以啟動微軟管理主控台。
  2. 從『檔案』功能表上,選取『新增/移除嵌入式管理單元』,請由『可用的嵌入式管理單元』列示盒內選取『憑證』,並核選『電腦帳戶』和『本機電腦』,按『確定』。
  3. 請由左側樹狀目錄中,以滑鼠右側按一下『憑證』底下的『個人』,而後選取『所有工作 / 要求新憑證』。
    certrequest1
  4. 接下來畫面會出現『憑證註冊』精靈程式,請按『下一步』。
  5. 選取『Active Directory註冊原則』,按『下一步』。
  6. 於按『要求憑證』設定頁中,先勾選按您先前所建立的網頁伺服器範本名稱,然後再按一下底下的按『需要更多資訊才能註冊此憑證。請按一下此處以設定定值。』。
    certrequest4
  7. 在『憑證內容』視窗的預設『主體』標籤內,請於『主體名稱』方框中的『類型』下拉列示盒選取『一般名稱』(Common Name),然後在下面的『值』輸入欄位輸入憑證使用的伺服器名稱,而這個一般名稱很重要,必需和將來用戶端連接到DIrectAccess伺服器時的連線名稱相同,如果您的DirectAccess伺服器在網際網路上的名稱不只一個,則您可以新增額外的DNS類型的『別名』。
    certrequest5
  8. 最後,請按『註冊』來完成將自訂的網頁憑證安裝在伺服器上。
    certrequest10
  9. 完成後您可以憑證主控台上,看到這是一個『伺服器驗證』目的的憑證,您也可以進一步在其內容對話方塊輸入『好記的名稱』。
    certrequest12
  10. 至於另一部網路位置伺服器(Network Location Server)是一部安裝IIS角色的內部伺服器,用以讓用戶判斷目前是否已直接連接到企業內部網路,由於DirectAccess也是透過HTTPS來連接它,所以這部伺服器也須要如上述一樣的步驟來註冊安裝網頁憑證,所不同點為於第7個步驟時,您並不須要輸入外部網際網路可解析的FQDN,而僅須使用內部可解析的FQDN即可。
    certrequest13

一旦順利替二部伺服器安裝了正確的網頁憑證,接下來就需要在預設的IIS網站設定HTTPS的安全性繫結,以便日後可用此憑證提供SSL連線服務而得以扮演網路位置伺服器角色。。

  1. 在網路位置伺服器上開啟『IIS管理員』工具。
  2. 在左側的樹狀目錄中,按一下『Default Web Site』後,再由動作窗格中按一下『繫結』連結。
    binding2
  3. 待出現『站台繫結』對話方塊後,按『新增』按鈕。
  4. 在『新增站台繫結』對話方塊,選取『https』類型,並由『SSL憑證』的列示盒選取前述安裝註冊的srv1.lij.local網頁憑證。
  5. 按『確定』、『關閉』後完成HTTPS繫結的設定。
    binding6

肆. 安裝與設定DirectAccess伺服器

經過上述一連串的Active Directory網域服務、PKI架構與憑證等複雜的準備工作設定後,現在可以開始安裝並設定DirectAccess伺服器。

請再度檢查DirectAccess伺服器的條件是否已吻合:

  • 已成功加入網域
  • 二個網路介面卡:一個介面卡設定為內部網路IP位址,用來連接企業網路,另一個介面卡須設定二個連續的公開IP位址,以用來接受來自網際網路的連線。
  • 已由企業CA取得網頁憑證

如一切準備條件均已經無誤,那麼請開始執行下列DirectAccess伺服器建置工作:

  1. 首先需要先安裝 DirectAccess管理主控台這項功能,請開啟【伺服器管理員】工具,並啟動『新增功能精靈』程式,選取『DirectAccess 管理主控台』,畫面上會提示會連帶安裝『群組原則管理』工具(gpmc),請按預設值完成安裝工作。
    daserver4
  2. 一旦安裝完成後,就可以利用【DirectAccess 管理】主控台來開始設定DirectAccess伺服器,所以請從『系統管理工具』功能表中選取『DirectAccess 管理』選項來啟動【DirectAccess 管理】主控台。當您第一次啟動工具時,工具會檢查是否符合建置的條件須求,若有先前的準備設定遺漏或不正確時(例如沒有放行ICMPv6回應要求流量),就會看到警告訊息,如有警告,請務必根據警告訊息重新設定正確的準備工作才能夠進行下一階段的安裝設定。
    daserver5
  3. 請按一下左側的『安裝』,從右側的圖示,您可以看出您須要依順執行四個步驟以完成DirectAccess伺服器的設定。
    dasetup
  4. 步驟一中要先設定DirectAccess用戶端電腦,請先按圖示中步驟一內的『設定』按鈕,胨後於出現的『DirectAccess用戶端安裝』畫面新增您先前建立的用戶端全域群組,按『完成』。
    dasetup1
  5. 接下來按步驟二內的『設定』按鈕,這個步驟將選擇何者為網際網路介面,何者為內部網路介面,這個步驟須要您的二個網路介面的組態設定正確,且外部介面不能直接可連上網域控制站才會成功,請按『下一步』繼續。
    dasetup2-1
  6. 接下來,您須要設定二個憑證,第一個為根CA的憑證(就是先前架設的企業根CA的憑證)以及伺服器HTTPS連線所使用的憑證(就是先前利用憑證嵌入式管理單元註冊取得的網頁憑證),完成後按『完成』按鈕。
    dasetup6
  7. 請按步驟三內的『設定』按鈕,首先您須要輸入網路位置伺服器的URL網址,在此輸入本範的NLS網址為 https://srv1.lij.local,然後按一上右側的『驗證』按鈕,等下方出現驗證成功的訊息後,就可以確認提供的網路位置伺服器網址與所使用的憑證正確無誤,按『下一步』繼續。
    dasetup7
  8. 接下來,提供DirectAccess用戶端存取內部資源時所須基結構資訊,包括了內部使用的DNS尾碼以及查詢的DNS伺服器IPv6位址,而這個所給的IPv6位址(本例為2002:db54:8f42:1:0:5efe:192.168.2.75)包含了6to4網路前碼(2002:db54:8f42:1::/64)和ISATAP介面的識別碼(::0:5efe:192.168.2.75),按『下一步』繼續。
    dasetup8
  9. 步驟三的『管理』設定頁,目前並不須要設定,請直接按『完成』以結束步驟三相關設定。
  10. 按步驟四內的『設定』按鈕,畫面上會出現『DirectAccess應用程式伺服器安裝』設定頁,可以讓您輸入須要與DirectAccess用戶端做端點對端點驗證和加密的伺服器群組,如果您要確保內部網路傳輸安全,則可以加入內部伺服器的群組,不過在此依預設值並不需要,所以直接按『完成』。
    dasetup10
  11. 最後,按『儲存』與『完成』。
  12. 於『DirectAccess 檢閱』對話方塊,按一下『套用』,等待原則設定建立二個額外的群組原則物件(GPO)後,按下『確定』,完成了DirectAccess伺服器四個步驟的設定工作。
    dasetup11
  13. 完成後請利用主控台右側的『監控』檢視是否一切均設定無誤,您應會看到類似如下的畫面。
    damon

如有任何錯誤,要根據錯誤的項目和訊息,查出原因來進行修正,此外,由於群組原則的套用並非立即生效,所以您可能必需執行群組原則與IPv6的更新動作,請在相關的電腦上執行下列命令:

gpupdate /force
net stop iphlpsvc
net start iphlpsvc

如果由於錯誤或其它調整因素,您要重新設定某個步驟的組態,只要按一下步驟圖示中的『編輯』按鈕就可以重新設定步驟組態,若您須要從頭依序重新設定這四個步驟,則須要在『安裝』的右鍵功能表,選擇『重設主控台設定值』就可以重新執行精靈程式並重設所有組態。

reset

一旦完成了DirectAccess伺服器建置與設定,所有用戶端與伺服器業已更新群組原則和IPv6,最後建議確認一下用戶端可以透過IPv6和ISATA位址與伺服器連線。您可以在用戶端利用ping指令經由IPv6位址查詢網域控制站與內部伺服器,另一方面,您也可以經由FQDN查詢,而看到回應IPv6位址。

ping6

ping61

伍. DirectAccess 用戶端連線測試、確認與問題診斷

最後階段,我們將一部已經加入網域、重新套用所有相關群組原則的Windows 7行動電腦帶離企業網路範圍,使用家庭網路上網以檢驗DirectAccess的連線功能。

  1. 首先,將網域Windows 7電腦從家庭網路連接網際網路,利用ipconfig與ping tw.yahoo.com確認已經可正確連接至網際網路。
  2. 接下來,檢查是否可以連接與存取企業內部資源,作法可以先ping dc1與ping srv1看是否回應一個IPv6位置(在此dc1公司內部為網域控制站,srv1為檔案伺服器),或是以管理員身份連接至 \\dc1.lij.local\c$ 和 \\srv1.lij.local\docs 共用目錄,是否可以成功回應其共用資料夾。
  3. 如果上一個步驟連線成功而沒有問題,那麼您現在應該檢查一下您的IPv6組態及連線方式,請輸入ipconfig /all看出目前所採用的IPv6轉換技術,一般可能會用到6to4、Teredo或IP-HTTPS,如下圖所示本範例與企業網路連線採用了6To4轉換技術,您可以看到一個2002開頭的IPv6位址以及預設閘道器 (即DirectAccess伺服器),代表用戶端使用 6to4技術和這個預設閘道器去建立與DirectAccess伺服器的IPv6流量通道。
    ipconfig6to4

問題診斷工具與命令

一旦用戶端連線有問題,問題可能將會複雜不易診斷,因為這牽涉到PKI憑證問題、IPv6轉換技術問題、IPSec通道、群組原則、DNS…….等問題,底下列出一些有用的DirectAccess診斷工具與方法:

  • 檢查連線技術與IPv6組態:ipconfig/all
    如前所示,這是最有效的診斷命令,可看出目前使用的轉換技術,IPv6位址,預設閘道器等資訊是否存在而正確。
  • 檢查電腦位置:netshdns dns show state
    DirectAccess用戶端須要確認目前是在企業網路以外才會啟用DirectAccess連線,所以您如果要檢查用戶機器目前是否正確的判斷已不在企業網路之內的網路,請使用 netsh dns show state指令,如下圖所示,查看 "電腦位置" 即可看出目前的電腦已經位於公司網路之外,所以會啟用DirectAccess連接企業內部資源。如果不正確的話就須要檢查您的網路連線、網路位置伺服器的架設是否出錯。
    netshdnsshow1 
  • 檢查DirectAccess用戶端是否正確套用群組原則
    DirectAccess用戶端透過群組原則取他們正確的設定,所以用戶端電腦是否正確的套用群組原則設定將影響其用戶端連線行為,而傳統檢查群組原則的套用結果可使用 "gpresult"指令,但 gpresult /v指令結果過於繁瑣,所以一個較簡單的方法來查看用戶端電腦有否套用群組原則,請啟動【具有進階安全性的Windows防火牆】工具,然後在左邊的樹狀目錄按下『連線安全性規則』,這時候您應可以自到三個DirectAccess的IPSec的連線原則,就代表電腦已經套用了用戶端原則。
    ipsecpolicy
  • 檢查名稱解析原則表格(NRPT):netsh namespace show effectivepolicy
    按照設計,DirectAccess用戶端使用名稱解析原則表格(Name Resolution Policy Table;NRPT)以決定用那個DNS伺服器解析名稱,當用戶端在企業網路時,NRPT會被關閉,只有用戶端網路卡所設定的DNS伺服器被用來名稱解析,當用戶端電腦位於企業網路之外時,NRPT才會被採用,並根據名稱決定如何使用DNS伺服器來解析,有時候若DNS不正確恐導致無法連線,所以如果您懷疑DNS的問題導致無法連接內部資源,那麼請執行 "netsh namespace show effectivepolicy"查看NRPT是否正確。如下圖顯示.lij.local網域主機的名稱解析時需使用DirectAccess 2002:……..:192.168.1.75來進行解析,而言部機器正是Active Directory的DNS伺服器。
    nrpt
    如果NRTP沒有問題,則您可能還是須回到Active Directory DNS伺服器上是否已替所有伺服器註冊了IPv6(AAAA)位址。
    dns1
  • 確認連線至Active Directory網域控制站和DNS伺服器:nltest /dsgetdc:
    DirectAccess用戶端須透過Active Directory網域控制站和DNS伺服器才能夠連至內部源,所以如果您須要確認是否已連線至Active Directory,則只需執行"nltest /dsgetdc:" 命令來檢查。
    nltest
  • 確認DirectAccess的IPSec通道
    當DirectAccess用戶端連上DirectAccess伺服器時,它利用IPSec通道來建立與企業內部的連線,而有二種通道-架構通道(Infrastructure Tunnel)與企業網路通道(Intranet Tunnel),前者在使用者登入前建立,使用電腦憑證和電腦帳戶以NTLMv2協定驗證,後者在架構通道後所建立,使用電腦憑證和使用者帳戶以Kerberos協定驗證,您可以啟動【具有進階安全性的Windows防火牆】工具,然後在左邊的樹狀目錄按下『監視↘安全性關聯↘主要模式』,如下圖所示,於『次要驗證方法』欄位中,NTLMv2者為初始的架構通道,Kerberos者為企業網路通道。
    ipsecmainmode 

結語

DirectAccess是微軟Windows Server 2008 R2/Windows 7所推出的遠端存取技術,有別於傳統的VPN連線技術,DirectAccess強調只要在企業網路範疇之外就會自動連線,採用高度安全性的IPSec通道,分離網際網路和企業網的流量,支援多種IPv6轉換技術可適用在不同的網路環境並通過防火牆與NAT,並且可讓IT人員使用群組原則集中控管與設定用戶端,似乎是VPN以外的另一個不錯的遠端存取方案,特別是針對越來越多的行動設備用戶端而言,但是部署Windows Server 2008 R2的DirectAccess使用環境並不容易,障礙也不少,首先,您須要二個連續的公開IPv4位址來直接連至網際網路,這對許多中小企業而言,要找到或額外註冊二個公開位址是有困難或不易的,而且若DirectAccess伺服器直接連接網際網路而不要部署在NAT模式的防火牆之後恐違反公司安全性政策(其實若真要部署在防火牆保護之後並非不可行,只不過並非所有防火牆功能或政策上均可支援,即使支援設定上恐複雜),其次,IT人員還須要建置與維護一個PKI架構,而PKI的初始建置與日後的維護工作負荷並不輕,況且許多企業的IT人員對PKI並不熟悉,再者,雖然DirectAccess並不須要您的企業網路支援原生的IPv6網路環境,但仍需要使用IPv6的移轉技術,而IT人員即使不太懂這些IPv6的移轉技術似乎也可以使用,但經驗上卻顯示,如果IT人員不夠熟稔這些技術,萬一出了問題,恐怕難以快速診斷出問題並迅速解決問題。

總之,架設與維護一個企業DirectAccess的遠端存取環境並不容易,它可能是一個未來不錯的企業遠端存取解決方案之一,但就目前Windows Server 2008 R2初次推出所要求的部署條件以及設定的複雜度來看,對大部份IT人員而言恐是一大挑戰,希望微軟在未來的版本可以降低使用的條件(例如不需要二個連續的公開IP或部署完整的PKI架構)與部署的複雜性,那麼DirectAccess技術應該能夠獲得較多IT人員的青睞而值得採用。

讀者回響 (aohongchen@yahoo.com)