SSL-VPN的双因子认证功能要求客户端在通过SSL客户端证书认证的基础上,还要通过应用身份服务IDaaS(Identity as a Service)用户名和密码的认证,双重认证均通过后才能成功建立SSL-VPN连接,该功能有效提高了SSL-VPN连接的安全性。本文将介绍如何使用SSL-VPN双因子认证功能,使客户端可以在经过双重验证后与专有网络 VPC(Virtual Private Cloud)实例建立SSL-VPN连接,进而访问VPC实例下的资源。
场景示例
本文以上图场景为例。某公司使用IDaaS产品管理、维护公司员工账号及权限。当前该公司在阿里云华东1(杭州)地域拥有一个VPC实例,VPC实例下使用云服务器 ECS(Elastic Compute Service)产品部署了相关应用,该公司希望出差的员工可以随时访问VPC实例下的资源,同时要确保员工经过身份认证。
公司可以使用VPN网关产品的SSL-VPN功能,同时为SSL-VPN开启双因子认证,使客户端经过SSL客户端证书认证和IDaaS用户名及密码认证后,再与VPC实例建立SSL-VPN连接,实现客户端安全访问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配置说明。
您已经在EIAM实例中创建了组织和账户。
本文通过手动方式在EIAM实例中创建了组织与账户,下图为本文组织和账户示例。如果您希望通过LDAP协议自动同步账户信息至EIAM实例,实现员工通过AD/LDAP认证登录应用,请参见通过AD认证实现客户端与VPC建立SSL-VPN连接。更多账户同步方式,请参见创建账户/组织。
您已经在阿里云华东1(杭州)地域创建了VPC,VPC中使用ECS部署了相关应用。具体操作,请参见搭建IPv4专有网络。
请确保您已经了解VPC中ECS实例所应用的安全组规则,并确保安全组规则允许客户端访问云上资源。具体操作,请参见查询安全组规则和添加安全组规则。
请确保客户端可以访问互联网,客户端的私网网段与VPC实例的私网网段没有重叠。
配置流程
步骤一:添加阿里云SSL-VPN应用
登录IDaaS管理控制台。
在EIAM 云身份服务页面,找到在准备工作中创建的EIAM实例,然后在操作列单击访问控制台。
在EIAM实例的左侧导航栏,选择应用。在应用页面,单击添加应用。
在添加应用页面,找到阿里云 - SSL VPN模板,然后单击添加应用。
在添加应用对话框中,自定义应用的名称,然后单击立即添加。
在应用详情页面的登录访问页签,单击页签底部的保存,保存默认配置。
单点登录配置:保持开启状态。
授权模式:默认为密码模式。身份提供方默认为IDaaS账号,系统将会使用您在EIAM实例中手动创建的账户信息对员工身份进行认证。
授权范围:默认为手动授权。该方式下,您需要手动为指定账户授权,允许这些账户访问该应用。关于授权范围的更多说明,请参见授权范围。
保持在登录访问页签,然后单击应用授权页签。
为要建立SSL-VPN连接的员工账户添加授权。具体操作,请参见应用授权。
步骤二:创建VPN网关实例
- 登录VPN网关管理控制台。
在VPN网关页面,单击创建VPN网关。
在VPN网关页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。
以下仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理VPN网关实例。
配置项
说明
地域
选择VPN网关实例的地域。 本文选择华东1(杭州)。
说明确保VPC实例的地域和VPN网关实例的地域相同。
网关类型
选择待创建的VPN网关类型。本文选择普通型。
网络类型
选择VPN网关实例的网络类型。本文选择公网。
隧道
系统直接展示当前地域支持的IPsec-VPN连接的隧道模式。
专有网络
选择待连接的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/目录,执行以下命令,然后输入用户名和密码。客户端通过IDaaS认证后,将会和云上建立SSL-VPN连接。
openvpn --config /etc/openvpn/conf/config.ovpn --daemon
配置Windows客户端
下载并安装OpenVPN客户端(Windows版本)。
将已经下载的SSL客户端证书解压拷贝至OpenVPN\config目录。
本文将证书解压拷贝到C:\Program Files\OpenVPN\config目录,请您根据安装路径将证书解压拷贝至您真实的目录。
启动OpenVPN客户端,单击Connect,然后输入用户名和密码。客户端通过IDaaS认证后,将会和云上建立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实例,无需执行添加阿里云SSL-VPN应用的步骤,在您创建SSL服务端时,直接绑定EIAM1.0实例即可,其余步骤与上文相同。