文档

通过IDaaS认证实现客户端与VPC建立SSL-VPN连接

更新时间:

SSL-VPN的双因子认证功能要求客户端在通过SSL客户端证书认证的基础上,还要通过应用身份服务IDaaS(Identity as a Service)用户名和密码的认证,双重认证均通过后才能成功建立SSL-VPN连接,该功能有效提高了SSL-VPN连接的安全性。本文将介绍如何使用SSL-VPN双因子认证功能,使客户端可以在经过双重验证后与专有网络 VPC(Virtual Private Cloud)实例建立SSL-VPN连接,进而访问VPC实例下的资源。

场景示例

image

本文以上图场景为例。某公司使用IDaaS产品管理、维护公司员工账号及权限。当前该公司在阿里云华东1(杭州)地域拥有一个VPC实例,VPC实例下使用云服务器 ECS(Elastic Compute Service)产品部署了相关应用,该公司希望出差的员工可以随时访问VPC实例下的资源,同时要确保员工经过身份认证。

公司可以使用VPN网关产品的SSL-VPN功能,同时为SSL-VPN开启双因子认证,使客户端经过SSL客户端证书认证和IDaaS用户名及密码认证后,再与VPC实例建立SSL-VPN连接,实现客户端安全访问VPC实例下的资源。

准备工作

  • 您已创建企业版的IDaaS EIAM实例。具体操作,请参见实例管理

    重要
  • 您已经在EIAM实例中创建了组织和账户。

    本文通过手动方式在EIAM实例中创建了组织与账户,下图为本文组织和账户示例。如果您希望通过LDAP协议自动同步账户信息至EIAM实例,实现员工通过AD/LDAP认证登录应用,请参见通过AD认证实现客户端与VPC建立SSL-VPN连接。更多账户同步方式,请参见创建账户/组织2024-05-09_13-13-48

  • 您已经在阿里云华东1(杭州)地域创建了VPC,VPC中使用ECS部署了相关应用。具体操作,请参见搭建IPv4专有网络

    请确保您已经了解VPC中ECS实例所应用的安全组规则,并确保安全组规则允许客户端访问云上资源。具体操作,请参见查询安全组规则添加安全组规则

  • 请确保客户端可以访问互联网,客户端的私网网段与VPC实例的私网网段没有重叠。

配置流程

image

步骤一:添加阿里云SSL-VPN应用

  1. 登录IDaaS管理控制台

  2. EIAM 云身份服务页面,找到在准备工作中创建的EIAM实例,然后在操作列单击访问控制台

  3. 在EIAM实例的左侧导航栏,选择应用。在应用页面,单击添加应用

  4. 添加应用页面,找到阿里云 - SSL VPN模板,然后单击添加应用

  5. 在添加应用对话框中,自定义应用的名称,然后单击立即添加

  6. 在应用详情页面的登录访问页签,单击页签底部的保存,保存默认配置。

    单点登录配置保持开启状态。

    授权模式:默认为密码模式身份提供方默认为IDaaS账号,系统将会使用您在EIAM实例中手动创建的账户信息对员工身份进行认证。

    授权范围:默认为手动授权。该方式下,您需要手动为指定账户授权,允许这些账户访问该应用。关于授权范围的更多说明,请参见授权范围

  7. 保持在登录访问页签,然后单击应用授权页签。

    为要建立SSL-VPN连接的员工账户添加授权。具体操作,请参见应用授权2024-05-09_13-49-37

步骤二:创建VPN网关实例

  1. 登录VPN网关管理控制台
  2. VPN网关页面,单击创建VPN网关

  3. VPN网关(包月)页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。

    以下仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理VPN网关实例

    配置项

    说明

    地域和可用区

    选择VPN网关实例的地域。 本文选择华东1(杭州)

    说明

    确保VPC实例的地域和VPN网关实例的地域相同。

    网关类型

    选择待创建的VPN网关类型。本文选择普通型

    网络类型

    选择VPN网关实例的网络类型。本文选择公网

    隧道

    系统直接展示当前地域支持的IPsec-VPN连接的隧道模式。

    VPC

    选择待连接的VPC实例。

    虚拟交换机1

    从VPC实例中选择一个交换机实例。

    • IPsec-VPN连接的隧道模式为单隧道时,您仅需要指定一个交换机实例。

    • IPsec-VPN连接的隧道模式为双隧道时,您需要指定两个交换机实例。

    说明
    • 系统默认帮您选择第一个交换机实例,您可以手动修改或者直接使用默认的交换机实例。

    • 创建VPN网关实例后,不支持修改VPN网关实例关联的交换机实例,您可以在VPN网关实例的详情页面查看VPN网关实例关联的交换机以及交换机所属可用区的信息。

    虚拟交换机2

    从VPC实例中选择第二个交换机实例。

    • 您需要从VPN网关实例关联的VPC实例下指定两个分布在不同可用区的交换机实例,以实现IPsec-VPN连接可用区级别的容灾。

    • 对于仅支持一个可用区的地域 ,不支持可用区级别的容灾,建议您在该可用区下指定两个不同的交换机实例以实现IPsec-VPN连接的高可用,支持选择和第一个相同的交换机实例。

    说明

    如果VPC实例下没有第二个交换机实例,您可以新建交换机实例。具体操作,请参见创建和管理交换机

    IPsec-VPN

    是否开启IPsec-VPN功能。本文选择关闭

    SSL-VPN

    是否开启SSL-VPN功能。本文选择开启

    SSL连接数

    选择需要连接的客户端的数量。

    说明

    开启SSL-VPN功能后才可配置SSL连接数

  4. 返回VPN网关页面,查看创建的VPN网关实例。

    刚创建好的VPN网关实例的状态是准备中,约1~5分钟会变成正常状态。正常状态就表明VPN网关实例已完成初始化,可以正常使用。

步骤三:创建SSL服务端

  1. 在左侧导航栏,选择网间互联 > VPN > SSL服务端

  2. 在顶部菜单栏,选择SSL服务端的地域。

    说明

    请确保SSL服务端的地域和已创建的VPN网关实例的地域相同。

  3. SSL服务端页面,单击创建SSL服务端

  4. 创建SSL服务端面板,根据以下信息配置SSL服务端,然后单击确定

    以下仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理SSL服务端

    配置项

    说明

    VPN网关

    选择已创建的VPN网关实例。

    本端网段

    以CIDR地址块的形式输入要访问的VPC实例的网段。本文输入192.168.0.0/16。

    客户端网段

    以CIDR地址块的形式输入客户端访问VPC实例时使用的网段。本文输入10.0.0.0/24。

    重要
    • 客户端网段的子网掩码位数在16至29位之间。

    • 请确保客户端网段和本端网段不冲突。

    • 在指定客户端网段时,建议您使用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客户端证书

  1. 在左侧导航栏,选择网间互联 > VPN > SSL客户端

  2. SSL客户端页面,单击创建SSL客户端

  3. 创建SSL客户端面板,输入SSL客户端的名称,选择对应的SSL服务端,然后单击确定

  4. SSL客户端页面,找到已创建的SSL客户端,然后在操作列单击下载证书

    将下载的SSL客户端证书保存在您的本地,后续用于配置客户端。

步骤五:配置客户端

配置Linux客户端

  1. 打开命令行窗口。

  2. 执行以下命令安装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目录。
  3. 将已下载的SSL客户端证书解压拷贝至/etc/openvpn/conf/目录。

  4. 进入/etc/openvpn/conf/目录,执行以下命令,然后输入用户名和密码。客户端通过IDaaS认证后,将会和云上建立SSL-VPN连接。

    openvpn --config /etc/openvpn/conf/config.ovpn --daemon

    2024-05-09_14-47-13

配置Windows客户端

  1. 下载并安装OpenVPN客户端(Windows版本)

  2. 将已经下载的SSL客户端证书解压拷贝至OpenVPN\config目录。

    本文将证书解压拷贝到C:\Program Files\OpenVPN\config目录,请您根据安装路径将证书解压拷贝至您真实的目录。

  3. 启动OpenVPN客户端,单击Connect,然后输入用户名和密码。客户端通过IDaaS认证后,将会和云上建立SSL-VPN连接。

    2024-05-09_15-18-40

配置Mac客户端(OpenVPN)

  1. 打开命令行窗口。

  2. 如果您的客户端尚未安装homebrew,执行以下命令安装homebrew。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  3. 执行以下命令安装OpenVPN客户端。

    brew install openvpn
  4. 将已下载的SSL客户端证书解压拷贝至配置目录。

    1. 备份/usr/local/etc/openvpn文件夹下的所有配置文件。

      重要

      不同版本的macOS系统OpenVPN默认的安装路径可能不同,请以您实际的安装路径为准。在执行本操作及后续操作时,请将相关路径替换为您实际的安装路径。

    2. 执行以下命令删除OpenVPN的配置文件。

      rm /usr/local/etc/openvpn/*
    3. 执行以下命令将已经下载的SSL客户端证书拷贝到配置目录。

      cp cert_location /usr/local/etc/openvpn/

      cert_location是下载的SSL客户端证书的路径,例如:/Users/example/Downloads/certs6.zip

  5. 执行以下命令解压证书。

    cd  /usr/local/etc/openvpn/
    unzip /usr/local/etc/openvpn/certs6.zip
  6. 进入/usr/local/etc/openvpn/目录下,执行以下命令,然后输入用户名和密码,建立SSL-VPN连接。

    sudo /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/config.ovpn

步骤六:测试连通性

完成上述步骤后,客户端已经可以远程访问VPC实例下的资源。以下内容以Linux客户端为例介绍如何测试客户端和VPC实例间的连通性。

  1. 打开客户端的命令行窗口。

  2. 执行ping命令,尝试访问VPC下的ECS1实例,验证通信是否正常。

    ping <ECS1实例的IP地址>

    收到如下所示的回复报文,则证明客户端可以正常访问VPC实例下的资源。

    2024-05-09_17-05-07

IDaaS EIAM 1.0配置说明

如果您需要使用IDaaS EIAM 1.0实例,无需执行添加阿里云SSL-VPN应用的步骤,在您创建SSL服务端时,直接绑定EIAM1.0实例即可,其余步骤与上文相同。2024-05-09_16-10-09