實施高度安全的遠端存取概念

繼續有關組織主題的系列文章 遠程訪問 VPN 訪問忍不住分享我有趣的部署經驗 高度安全的 VPN 配置。一位客戶(俄羅斯村莊裡有發明家)提出了一項不平凡的任務,但挑戰被接受並創造性地實施。結果是一個有趣的概念,具有以下特徵:

  1. 終端設備防被取代的幾項保障因素(對使用者嚴格約束);
    • 評估使用者的PC與認證資料庫中允許的PC分配的UDID的符合性;
    • 透過 MFA,使用憑證中的 PC UDID 透過 Cisco DUO 進行二次驗證 (您可以附加任何 SAML/Radius 相容的);
  2. 多重身份驗證:
    • 具有現場驗證和針對其中之一的二次身份驗證的使用者證書;
    • 登入名稱(不可更改,取自證書)和密碼;
  3. 估計連接主機的狀態(Posture)

使用的解決方案元件:

  • 思科 ASA(VPN 閘道);
  • 思科 ISE(驗證/授權/計費、狀態評估、CA);
  • 思科 DUO(多重身分驗證) (您可以附加任何 SAML/Radius 相容的);
  • Cisco AnyConnect(工作站和行動作業系統的多用途代理程式);

我們先從客戶的需求開始:

  1. 使用者必須透過其登入/密碼驗證,能夠從 VPN 閘道下載 AnyConnect 用戶端;必須根據使用者的政策自動安裝所有必要的 AnyConnect 模組;
  2. 用戶應該能夠自動頒發證書(對於其中一種場景,主要場景是手動頒發並在PC上上傳),但我實現了自動頒發以進行演示(刪除它永遠不會太晚)。
  3. 基本身份驗證必須分幾個階段進行,首先是證書身份驗證,分析必要的字段及其值,然後是登錄/密碼,只有這次必須將證書字段中指定的用戶名插入登錄窗口 主題名稱(中文) 沒有編輯能力。
  4. 您需要確保您登入的裝置是發給使用者用於遠端存取的公司筆記型電腦,而不是其他裝置。 (已做出多種選擇來滿足此要求)
  5. 應透過檢查整個龐大的客戶要求表(總結)來評估連接設備(在此階段為 ​​PC)的狀態:
    • 文件及其屬性;
    • 註冊表項;
    • 提供的清單中的作業系統修補程式(稍後 SCCM 整合);
    • 特定製造商提供的防毒軟體的可用性以及簽章的相關性;
    • 某些服務的活動;
    • 某些已安裝程式的可用性;

首先,我建議您一定要觀看最終實現的視訊演示 Youtube(5 分鐘).

播放視頻

現在我建議考慮影片剪輯中未涵蓋的實作細節。

讓我們準備 AnyConnect 設定檔:

我之前在有關設定的文章中給出了建立設定檔的範例(就 ASDM 中的選單項目而言) VPN負載平衡叢集。現在我想單獨說明我們需要的選項:

在設定檔中,我們將指示最終客戶端上連線的 VPN 閘道和設定檔名稱:

實施高度安全的遠端存取概念

讓我們從設定檔端配置憑證的自動頒發,特別指出憑證參數,並且特別注意該字段 縮寫(一),其中手動輸入特定值 你做了 測試機(由 Cisco AnyConnect 用戶端產生的唯一裝置識別碼)。

實施高度安全的遠端存取概念

這裡我想說一句題外話,因為本文描述的概念是出於演示目的,所以在 AnyConnect 設定檔的「Initials」欄位中輸​​入了用於頒發憑證的 UDID。當然,在現實生活中,如果您這樣做,那麼所有客戶端都將收到在此欄位中具有相同 UDID 的證書,並且對他們來說沒有任何作用,因為他們需要其特定 PC 的 UDID。不幸的是,AnyConnect 尚未實現透過環境變數將 UDID 欄位替換到憑證請求設定檔中,例如使用變數 %使用者%.

值得注意的是,該場景的客戶最初計劃以手動模式獨立向此類受保護的 PC 頒發具有給定 UDID 的證書,這對他來說不是問題。然而,對於我們大多數人來說,我們想要自動化(嗯,對我來說這是真的=))。

這就是我在自動化方面可以提供的。如果 AnyConnect 還無法透過動態替換 UDID 來自動頒發證書,那麼還有另一種方法,需要一點創造性思維和熟練的雙手 - 我將告訴您這個概念。首先,讓我們來看看 AnyConnect 代理程式如何在不同作業系統上產生 UDID:

  • Windows — DigitalProductID 和 Machine SID 註冊表項組合的 SHA-256 雜湊值
  • OSX — SHA-256 哈希 PlatformUUID
  • Linux — 根分區 UUID 的 SHA-256 哈希值。
  • 蘋果iOS — SHA-256 哈希 PlatformUUID
  • Android – 請參閱文檔 鏈接

因此,我們為我們的企業Windows 作業系統建立一個腳本,透過此腳本,我們使用已知輸入在本機計算UDID,並透過在必填欄位中輸入此UDID 來形成頒發憑證的請求,順便說一句,您也可以使用機器AD頒發的憑證(透過在方案中新增使用憑證的雙重驗證 多項證書).

讓我們準備 Cisco ASA 端的設定:

讓我們為 ISE CA 伺服器建立一個信任點,它將向客戶端頒發憑證。我不會考慮鑰匙串匯入過程;我的設定文章中描述了一個範例。 VPN負載平衡叢集.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

我們根據用於身份驗證的證書中的字段,根據規則配置隧道組的分發。我們在上一階段製作的 AnyConnect 設定檔也在此處進行設定。請注意,我正在使用該值 安全銀行RA,將具有頒發憑證的使用者轉移到隧道群組 安全銀行VPN,請注意我在 AnyConnect 設定檔憑證請求欄中有此欄位。

tunnel-group-map enable rules
!
crypto ca certificate map OU-Map 6
 subject-name attr ou eq securebank-ra
!
webvpn
 anyconnect profiles SECUREBANK disk0:/securebank.xml
 certificate-group-map OU-Map 6 SECURE-BANK-VPN
!

設定身份驗證伺服器。就我而言,這是用於第一階段身份驗證的 ISE,以及作為 MFA 的 DUO(半徑代理)。

! CISCO ISE
aaa-server ISE protocol radius
 authorize-only
 interim-accounting-update periodic 24
 dynamic-authorization
aaa-server ISE (inside) host 192.168.99.134
 key *****
!
! DUO RADIUS PROXY
aaa-server DUO protocol radius
aaa-server DUO (inside) host 192.168.99.136
 timeout 60
 key *****
 authentication-port 1812
 accounting-port 1813
 no mschapv2-capable
!

我們建立群組原則和隧道組及其輔助組件:

隧道組 預設WEBVPN群組 主要用於下載 AnyConnect VPN 用戶端並使用 ASA 的 SCEP 代理功能頒發使用者憑證;為此,我們在隧道群組本身和關聯的群組原則上啟動了相應的選項; AC-下載,以及載入的 AnyConnect 設定檔(用於頒發憑證的欄位等)。此外,在此群組原則中,我們指出需要下載 ISE 姿勢模組.

隧道組 安全銀行VPN 在使用前一階段頒發的證書進行身份驗證時,用戶端將自動使用該證書,因為根據證書映射,連接將專門落在該隧道組上。我將在這裡告訴您一些有趣的選擇:

  • 輔助認證伺服器群組 DUO # 在 DUO 伺服器(Radius Proxy)上設定輔助驗證
  • 證書中的使用者名稱 CN # 對於主要身份驗證,我們使用憑證的 CN 欄位來繼承使用者登入
  • 憑證中的輔助使用者名稱 I # 對於 DUO 伺服器上的二次驗證,我們使用提取的使用者名稱和憑證的首字母 (I) 欄位。
  • 預填用戶名客戶端 # 使用戶名預先填寫在身份驗證視窗中且無法更改
  • secondary-pre-fill-username 用戶端隱藏 use-common-password 推送 # 我們隱藏二次驗證DUO的登入名稱/密碼輸入窗口,並使用通知方式(簡訊/推播/電話)-停靠來請求驗證而不是密碼字段 這裡

!
access-list posture-redirect extended permit tcp any host 72.163.1.80 
access-list posture-redirect extended deny ip any any
!
access-list VPN-Filter extended permit ip any any
!
ip local pool vpn-pool 192.168.100.33-192.168.100.63 mask 255.255.255.224
!
group-policy SECURE-BANK-VPN internal
group-policy SECURE-BANK-VPN attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
group-policy AC-DOWNLOAD internal
group-policy AC-DOWNLOAD attributes
 dns-server value 192.168.99.155 192.168.99.130
 vpn-filter value VPN-Filter
 vpn-tunnel-protocol ssl-client 
 split-tunnel-policy tunnelall
 default-domain value ashes.cc
 address-pools value vpn-pool
 scep-forwarding-url value http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls enable
  anyconnect mtu 1300
  anyconnect keep-installer installed
  anyconnect ssl keepalive 20
  anyconnect ssl rekey time none
  anyconnect ssl rekey method ssl
  anyconnect dpd-interval client 30
  anyconnect dpd-interval gateway 30
  anyconnect ssl compression lzs
  anyconnect dtls compression lzs
  anyconnect modules value iseposture
  anyconnect profiles value SECUREBANK type user
!
tunnel-group DefaultWEBVPNGroup general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 accounting-server-group ISE
 default-group-policy AC-DOWNLOAD
 scep-enrollment enable
tunnel-group DefaultWEBVPNGroup webvpn-attributes
 authentication aaa certificate
!
tunnel-group SECURE-BANK-VPN type remote-access
tunnel-group SECURE-BANK-VPN general-attributes
 address-pool vpn-pool
 authentication-server-group ISE
 secondary-authentication-server-group DUO
 accounting-server-group ISE
 default-group-policy SECURE-BANK-VPN
 username-from-certificate CN
 secondary-username-from-certificate I
tunnel-group SECURE-BANK-VPN webvpn-attributes
 authentication aaa certificate
 pre-fill-username client
 secondary-pre-fill-username client hide use-common-password push
 group-alias SECURE-BANK-VPN enable
 dns-group ASHES-DNS
!

接下來我們轉向 ISE:

我們配置一個本機使用者(可以使用AD/LDAP/ODBC等),為了簡單起見,我在ISE本身建立了一個本機使用者並在欄位中指派它 描述 電腦唯一識別碼 允許他透過 VPN 登入。如果我在 ISE 上使用本地身份驗證,我將僅限於一台設備,因為欄位不多,但在第三方身份驗證資料庫中我不會有這樣的限制。

實施高度安全的遠端存取概念

我們來看看授權策略,它分為四個連結階段:

  • 階段1 — 下載 AnyConnect 代理程式並頒發憑證的策略
  • 階段2 — 主要驗證原則 登入(從憑證)/密碼 + 帶有 UDID 驗證的憑證
  • 階段3 — 使用 UDID 作為使用者名稱透過 Cisco DUO (MFA) 進行二次驗證 + 狀態評估
  • 階段4 — 最終授權為以下狀態:
    • 合規;
    • UDID驗證(來自憑證+登入綁定),
    • 思科 DUO MFA;
    • 透過登入進行身份驗證;
    • 證書認證;

實施高度安全的遠端存取概念

讓我們來看一個有趣的情況 UUID_VALIDATED,看起來驗證用戶實際上來自一台 PC,並在該欄位中關聯了允許的 UDID 簡介 帳戶,條件如下所示:

實施高度安全的遠端存取概念

第1,2,3、XNUMX、XNUMX階段使用的授權設定檔如下:

實施高度安全的遠端存取概念

您可以透過查看 ISE 中的客戶端會話詳細資訊來準確檢查來自 AnyConnect 用戶端的 UDID 如何到達我們。詳細我們會看到AnyConnect透過機制 ACIDEX 不僅發送有關平台的訊息,還發送設備的 UDID 思科-AV-PAIR:

實施高度安全的遠端存取概念

我們關註一下頒發給用戶的證書和字段 縮寫(一),用於將其作為 Cisco DUO 上輔助 MFA 驗證的登入名稱:

實施高度安全的遠端存取概念

在日誌中的 DUO Radius 代理端,我們可以清楚地看到身份驗證請求是如何發出的,它使用 UDID 作為使用者名稱:

實施高度安全的遠端存取概念

從 DUO 入口網站中,我們看到成功的身份驗證事件:

實施高度安全的遠端存取概念

在使用者屬性中我已經設定了 別名,我用於登錄,這又是允許登入的 PC 的 UDID:

實施高度安全的遠端存取概念

結果我們得到:

  • 多因素用戶和設備身份驗證;
  • 防止使用者設備被欺騙;
  • 評估設備的狀況;
  • 透過域機器證書等增強控制的潛力;
  • 透過自動部署的安全模組提供全面的遠端工作場所保護;

Cisco VPN 系列文章連結:

來源: www.habr.com

添加評論