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实例,其余步骤与上文相同,此处不再描述。