SSL-VPN的雙因子認證功能要求客戶端在通過SSL客戶端證書認證的基礎上,還要通過應用身份服務IDaaS(Identity as a Service)用戶名和密碼的認證,雙重認證均通過后才能成功建立SSL-VPN連接,該功能有效提高了SSL-VPN連接的安全性。在使用IDaaS認證時,支持綁定AD(Active Directory)服務器,實現AD認證登錄。本文將介紹如何使用SSL-VPN雙因子認證功能,使客戶端可以在經過AD認證后與專有網絡VPC(Virtual Private Cloud)實例建立SSL-VPN連接,進而訪問VPC實例下的資源。
場景示例
本文以上圖場景為例。某公司在華東1(杭州)地域擁有一個VPC實例,VPC實例下使用云服務器 ECS(Elastic Compute Service)產品部署了相關應用。因業務發展,出差員工需要使用客戶端遠程訪問VPC實例下的資源。該公司擁有自己的AD(Active Directory)系統,為確保安全性,公司希望出差的員工可以在通過公司AD服務器的身份認證后,再訪問VPC實例下的資源。
公司可以使用VPN網關產品的SSL-VPN功能,同時為SSL-VPN開啟雙因子認證,并設置IDaaS應用進行AD認證。在員工要與云上建立SSL-VPN連接時,將會先經過SSL客戶端證書的認證,然后還會通過IDaaS EIAM實例進行AD認證,IDaaS EIAM實例會將員工的用戶名和密碼發送到公司的AD服務器中去進行驗證,并返回驗證結果。只有在員工輸入的賬戶信息驗證通過后,員工才能與云上建立SSL-VPN連接,進而訪問VPC實例下的資源。
準備工作
您已經在阿里云華東1(杭州)地域創建了VPC實例,VPC實例中使用ECS部署了相關應用。具體操作,請參見搭建IPv4專有網絡。
請確保您已經了解VPC中ECS實例所應用的安全組規則,并確保安全組規則允許客戶端訪問云上資源。具體操作,請參見查詢安全組規則和添加安全組規則。
請確保客戶端可以訪問互聯網,客戶端的私網網段與VPC實例的私網網段沒有重疊。
您已創建企業版的IDaaS EIAM實例。具體操作,請參見實例管理。
重要IDaaS EIAM 1.0實例不再支持新購,推薦您使用IDaaS EIAM 2.0實例。本文將以IDaaS EIAM 2.0為例進行說明,更多信息,請參見【變更公告】SSL-VPN雙因子認證支持IDaaS EIAM 2.0。
如何使用IDaaS EIAM 1.0實例,請參見IDaaS EIAM 1.0配置說明。
您已知AD服務器的公網IP地址和服務端口。
本文示例中,AD系統部署在Windows Server 2022系統中,其公網IP地址為47.XX.XX.62,服務端口為389。
您已知AD服務器的Base DN。
本文示例中,AD服務器的Base DN為dc=zxtest,dc=com。
您已知AD服務器管理員的DN、用戶名和密碼。
本文示例中,管理員賬戶名為Administrator,密碼為1****2。其DN為cn=Administrator,cn=Users,dc=zxtest,dc=com,如下圖所示。
配置步驟
步驟一:綁定AD服務器
為IDaaS EIAM實例綁定AD服務器,將AD服務器中的賬戶信息同步至IDaaS EIAM實例中。具體操作,請參見步驟二、AD數據同步到IDaaS。
本文在綁定AD服務器時,除必填參數外,其余配置均保持默認值。下圖為本文通過綁定AD服務器同步至IDaaS EIAM實例的賬戶信息。
步驟二:添加阿里云SSL-VPN應用
登錄IDaaS管理控制臺。
在EIAM 云身份服務頁面,找到在準備工作中創建的EIAM實例,然后在操作列單擊訪問控制臺。
在EIAM實例的左側導航欄,選擇應用。在應用頁面,單擊添加應用。
在添加應用頁面,找到阿里云 - SSL VPN模板,然后單擊添加應用。
在添加應用對話框中,自定義應用的名稱,然后單擊立即添加。
在應用詳情頁面的登錄訪問頁簽,根據以下信息進行配置,然后單擊頁簽底部的保存。
單點登錄配置:保持開啟狀態。
授權模式:默認為密碼模式。身份提供方選擇已綁定的AD服務器,系統將會使用AD服務器對員工身份進行認證。
授權范圍:使用默認值手動授權。該方式下,您需要手動為指定賬戶授權,允許這些賬戶訪問該應用。關于授權范圍的更多說明,請參見授權范圍。
保持在登錄訪問頁簽,然后單擊應用授權頁簽。
為要建立SSL-VPN連接的員工賬戶添加授權。具體操作,請參見應用授權。
步驟三:創建VPN網關實例
- 登錄VPN網關管理控制臺。
在VPN網關頁面,單擊創建VPN網關。
在VPN網關(包月)頁面,根據以下信息配置VPN網關,然后單擊立即購買并完成支付。
以下僅列舉本文強相關的配置,其余配置項保持默認值或為空。更多信息,請參見創建和管理VPN網關實例。
配置項
說明
地域和可用區
選擇VPN網關實例的地域。 本文選擇華東1(杭州)。
說明確保VPC實例的地域和VPN網關實例的地域相同。
網關類型
選擇待創建的VPN網關類型。本文選擇普通型。
網絡類型
選擇VPN網關實例的網絡類型。本文選擇公網。
隧道
系統直接展示當前地域支持的IPsec-VPN連接的隧道模式。
VPC
選擇待連接的VPC實例。
虛擬交換機1
從VPC實例中選擇一個交換機實例。
IPsec-VPN連接的隧道模式為單隧道時,您僅需要指定一個交換機實例。
IPsec-VPN連接的隧道模式為雙隧道時,您需要指定兩個交換機實例。
IPsec-VPN功能開啟后,系統會在兩個交換機實例下各創建一個彈性網卡ENI(Elastic Network Interfaces),作為使用IPsec-VPN連接與VPC流量互通的接口。每個ENI會占用交換機下的一個IP地址。
說明系統默認幫您選擇第一個交換機實例,您可以手動修改或者直接使用默認的交換機實例。
創建VPN網關實例后,不支持修改VPN網關實例關聯的交換機實例,您可以在VPN網關實例的詳情頁面查看VPN網關實例關聯的交換機、交換機所屬可用區以及交換機下ENI的信息。
虛擬交換機2
從VPC實例中選擇第二個交換機實例。
您需要從VPN網關實例關聯的VPC實例下指定兩個分布在不同可用區的交換機實例,以實現IPsec-VPN連接可用區級別的容災。
對于僅支持一個可用區的地域 ,不支持可用區級別的容災,建議您在該可用區下指定兩個不同的交換機實例以實現IPsec-VPN連接的高可用,支持選擇和第一個相同的交換機實例。
說明如果VPC實例下沒有第二個交換機實例,您可以新建交換機實例。具體操作,請參見創建和管理交換機。
IPsec-VPN
是否開啟IPsec-VPN功能。本文選擇關閉。
SSL-VPN
是否開啟SSL-VPN功能。本文選擇開啟。
SSL連接數
選擇需要連接的客戶端的數量。
說明開啟SSL-VPN功能后才可配置SSL連接數。
返回VPN網關頁面,查看創建的VPN網關實例。
剛創建好的VPN網關實例的狀態是準備中,約1~5分鐘會變成正常狀態。正常狀態就表明VPN網關實例已完成初始化,可以正常使用。
步驟四:創建SSL服務端
在左側導航欄,選擇 。
在頂部菜單欄,選擇SSL服務端的地域。
說明請確保SSL服務端的地域和已創建的VPN網關實例的地域相同。
在SSL服務端頁面,單擊創建SSL服務端。
在創建SSL服務端面板,根據以下信息配置SSL服務端,然后單擊確定。
以下僅列舉本文強相關的配置,其余配置項保持默認值或為空。更多信息,請參見創建和管理SSL服務端。
配置項
說明
VPN網關
選擇已創建的VPN網關實例。
本端網段
以CIDR地址塊的形式輸入要訪問的VPC實例的網段。本文輸入192.168.0.0/16。
客戶端網段
以CIDR地址塊的形式輸入客戶端訪問VPC實例時使用的網段。本文輸入10.0.0.0/24。
重要客戶端網段的子網掩碼位數在16至29位之間。
請確保客戶端網段與本端網段、VPC網段以及與客戶端終端關聯的任何路由網段均沒有重疊。
在指定客戶端網段時,建議您使用10.0.0.0/8、172.16.0.0/12和192.168.0.0/16網段及其子網網段。如果您的客戶端網段需要指定為公網網段,您需要將公網網段設置為VPC的用戶網段,以確保VPC可以訪問到該公網網段。關于用戶網段的更多信息,請參見什么是用戶網段?和如何配置用戶網段?。
創建SSL服務端后,系統后臺會自動將客戶端網段的路由添加在VPC實例的路由表中,請勿再手動將客戶端網段的路由添加到VPC實例的路由表,否則會導致SSL-VPN連接流量傳輸異常。
高級配置
開啟雙因子認證功能,本文使用EIAM 2.0。其余配置保持默認值。
IDaaS實例所在地域:選擇華東1(杭州)。
IDaaS實例:選擇在準備工作中創建的EIAM實例。
IDaaS應用:選擇已添加的阿里云SSL-VPN應用。
說明在阿聯酋(迪拜)地域創建SSL服務端時,推薦您綁定新加坡地域的IDaaS EIAM 2.0實例,以減少跨地域時延。
步驟五:創建SSL客戶端
在左側導航欄,選擇 。
在SSL客戶端頁面,單擊創建SSL客戶端。
在創建SSL客戶端面板,輸入SSL客戶端的名稱,選擇對應的SSL服務端,然后單擊確定。
在SSL客戶端頁面,找到已創建的SSL客戶端,然后在操作列單擊下載證書。
將下載的SSL客戶端證書保存在您的本地,后續用于配置客戶端。
步驟六:配置客戶端
配置Linux客戶端
打開命令行窗口。
執行以下命令安裝OpenVPN客戶端。
#CentOS系統執行以下命令 yum install -y openvpn #執行以下命令查看系統是否已創建/etc/openvpn/conf/目錄,如果系統未創建,需手動創建/etc/openvpn/conf/目錄。 cd /etc/openvpn #進入openvpn目錄下 ls #查看openvpn目錄下是否已創建conf目錄 mkdir -p /etc/openvpn/conf #如果openvpn目錄下不存在conf目錄,手動創建conf目錄。 #Ubuntu系統執行以下命令 apt-get update apt-get install -y openvpn #執行以下命令查看系統是否已創建/etc/openvpn/conf/目錄,如果系統未創建,需手動創建/etc/openvpn/conf/目錄。 cd /etc/openvpn #進入openvpn目錄下 ls #查看openvpn目錄下是否已創建conf目錄 mkdir -p /etc/openvpn/conf #如果openvpn目錄下不存在conf目錄,手動創建conf目錄。
將已下載的SSL客戶端證書解壓拷貝至/etc/openvpn/conf/目錄。
進入/etc/openvpn/conf/目錄,執行以下命令,然后輸入用戶名和密碼。客戶端通過AD認證后,將會和云上建立SSL-VPN連接。
openvpn --config /etc/openvpn/conf/config.ovpn --daemon
配置Windows客戶端
下載并安裝OpenVPN客戶端(Windows版本)。
將已經下載的SSL客戶端證書解壓拷貝至OpenVPN\config目錄。
本文將證書解壓拷貝到C:\Program Files\OpenVPN\config目錄,請您根據安裝路徑將證書解壓拷貝至您真實的目錄。
啟動OpenVPN客戶端,單擊Connect,然后輸入用戶名和密碼。客戶端通過AD認證后,將會和云上建立SSL-VPN連接。
配置Mac客戶端(OpenVPN)
打開命令行窗口。
如果您的客戶端尚未安裝homebrew,執行以下命令安裝homebrew。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
執行以下命令安裝OpenVPN客戶端。
brew install openvpn
將已下載的SSL客戶端證書解壓拷貝至配置目錄。
備份/usr/local/etc/openvpn文件夾下的所有配置文件。
重要不同版本的macOS系統OpenVPN默認的安裝路徑可能不同,請以您實際的安裝路徑為準。在執行本操作及后續操作時,請將相關路徑替換為您實際的安裝路徑。
執行以下命令刪除OpenVPN的配置文件。
rm /usr/local/etc/openvpn/*
執行以下命令將已經下載的SSL客戶端證書拷貝到配置目錄。
cp cert_location /usr/local/etc/openvpn/
cert_location
是下載的SSL客戶端證書的路徑,例如:/Users/example/Downloads/certs6.zip。
執行以下命令解壓證書。
cd /usr/local/etc/openvpn/ unzip /usr/local/etc/openvpn/certs6.zip
進入/usr/local/etc/openvpn/目錄下,執行以下命令,然后輸入用戶名和密碼,建立SSL-VPN連接。
sudo /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/config.ovpn
步驟七:測試連通性
完成上述步驟后,客戶端已經可以遠程訪問VPC實例下的資源。以下內容以Linux客戶端為例介紹如何測試客戶端和VPC實例間的連通性。
打開客戶端的命令行窗口。
執行
ping
命令,嘗試訪問VPC下的ECS1實例,驗證通信是否正常。ping <ECS1實例的IP地址>
收到如下所示的回復報文,則證明客戶端可以正常訪問VPC實例下的資源。
IDaaS EIAM 1.0配置說明
如果您需要使用IDaaS EIAM 1.0實例,請按照以下步驟進行操作。您需要開啟LDAP認證,在創建SSL服務端時,需綁定EIAM 1.0實例,其余步驟與上文相同,此處不再描述。
配置步驟
開啟LDAP認證
在您建立SSL-VPN連接前,您需要在IDaaS EIAM 1.0實例中開啟LDAP認證功能并同步賬戶數據,用于后續的身份驗證。
添加LDAP認證源。
登錄IDaaS管理控制臺。
在EIAM云身份服務頁面,單擊舊版頁簽,找到目標實例ID。
在左側導航欄,單擊認證源。
在認證源頁面的右上角,單擊添加認證源。
在添加認證源頁面,找到LDAP圖標,在操作列單擊添加認證源。
在添加認證源(LDAP)面板,配置LDAP服務器(即本文的AD服務器)信息,然后單擊提交。
認證源ID:由系統自動生成。
認證源名稱:輸入自定義名稱。
LDAP URL:LDAP服務器連接地址,LDAP服務器即指您部署AD系統的服務器。地址填寫格式例如:ldap://127.0.0.1:389/。本文輸入ldap://47.XX.XX.62:389/。
若主機的IP地址為IPv6地址格式,則地址需放在中括號([])內,例如:ldap://[0000:0000:0000:0000:0000:0000:0001]:389/。
說明IDaaS目前只支持公網訪問,LDAP服務器需要提供公網地址,并開啟389端口。您可以在您LDAP服務器的安全組策略中設置只允許IDaaS的公網IP可以訪問LDAP服務器,關于IDaaS公網IP地址信息,請提交工單至阿里云IDaaS團隊咨詢。
LDAP Base:LDAP服務器Base DN。本文輸入dc=zxtest,dc=com。
LDAP賬戶:LDAP服務器管理賬戶DN。本文輸入cn=Administrator,cn=Users,dc=zxtest,dc=com。
LDAP賬戶密碼:LDAP服務器管理賬戶密碼。
過濾條件:查詢用戶名的過濾條件。本文輸入(sAMAccountName=$username$)。
具體匹配規則,請參見LDAP官方文檔LDAP Filters。其中$username$為IDaaS系統用戶名參數,為固定值。
更多參數說明,請參見舊版本 LDAP 認證登錄。
在認證源頁面,找到目標認證源,在其狀態列單擊圖標,然后在彈出的對話框中,單擊確定,開啟LDAP認證源。
LDAP賬戶同步配置,將LDAP服務器中的賬戶數據導入到IDaaS系統中。
在左側導航欄,單擊機構及組。
在機構及組頁面的右上角,單擊配置LDAP。在LDAP配置面板,單擊新建配置。
在LDAP配置面板的服務器鏈接頁簽下,配置以下信息,然后單擊保存。
AD/LDAP名稱:輸入自定義名稱。
服務器地址:輸入您LDAP服務器的公網IP地址。本文輸入47.XX.XX.62。
端口號:輸入您LDAP服務器提供服務的端口號。本文輸入389。
Base DN:輸入要同步賬戶的節點DN。本文輸入dc=zxtest,dc=com。
說明此項在添加完成后不可更改,因為在IDaaS系統與LDAP(或AD)服務器進行同步數據時,如果Base DN發生改變會使雙方組織機構目錄無法對應而導致數據同步失敗,想要同步不同目錄的數據建議添加多個LDAP配置來完成。
管理員DN:請輸入管理員賬戶DN。本文輸入cn=Administrator,cn=Users,dc=zxtest,dc=com。
密碼:輸入管理員賬戶的密碼。
類型選擇:選擇您LDAP服務器的類型。本文選擇Windows AD。
所屬OU節點:賬戶數據導入IDaaS系統中組織機構的節點位置,若不選擇,則導入到根OU下。本文保持默認值。
LDAP同步至本系統:啟用該項后,可以手動從LDAP服務器同步數據到IDaaS系統。本文選擇啟用。
本系統同步至LDAP:啟用該項后,可以從IDaaS系統同步數據到LDAP服務器。本文選擇啟用。
在您完成上述配置后,您可以單擊測試連接來測試服務器的連通性。如果測試失敗,請檢查網絡連通性,以及配置的連接參數是否正確。
在LDAP配置面板的字段匹配規則頁簽下,配置以下信息,然后單擊保存。
字段匹配規則為IDaaS系統的字段與LDAP服務器中屬性的對應匹配規則,例如LDAP服務器中的cn字段對應為IDaaS系統中的用戶名。
用戶名:本文輸入cn 。
說明如果您AD系統中的賬戶的cn字段值為中文,則該賬戶無法拉取到IDaaS系統。建議您使用sAMAccountName字段。
外部ID:Windows AD為objectGUID, OpenLdap為uid。本文輸入objectGUID 。
密碼屬性:Windows AD為unicodePwd, OpenLdap為userPassword。本文輸入unicodePwd 。
用戶唯一標識:Windows AD為DistinguishedName, OpenLdap為EntryDN。本文輸入DistinguishedName 。
郵箱:本文輸入mail 。
更多信息,請參見LDAP賬戶同步配置。
在機構及組頁面,選擇 。
在LDAP列表面板,找到目標LDAP,單擊導入,在彈出的對話框中,單擊確定。在組織機構臨時數據面板確認組織機構信息,單擊確定導入。
在當前頁面的組織架構區域,選擇目標組織機構,在組織機構的詳情區域,選擇 。
在LDAP列表面板,找到目標LDAP,單擊導入,在彈出的對話框中,單擊確定。在賬戶臨時數據LDAP列表面板中確認賬戶信息,單擊確定導入,然后為導入的賬戶設置默認密碼,實現LDAP服務器賬戶信息同步到IDaaS系統。
重要客戶端后續登錄時,需要使用AD服務器中的密碼進行登錄。此處設置的是IDaaS實例中的密碼。
開啟云產品LDAP認證。
在左側導航欄,選擇 。
在安全設置頁面,單擊云產品AD認證頁簽。
選擇剛剛創建的LDAP認證源,啟用該功能并單擊保存設置。