写点什么

利用 AWS Client VPN 安全地访问 VPC 中和 on-premise 资源

  • 2019-10-09
  • 本文字数:3018 字

    阅读完需:约 10 分钟

利用 AWS Client VPN 安全地访问 VPC 中和 on-premise 资源

1.Client to site VPN 简介

Client to site VPN 又称为 Access VPN,员工通过该方式可以接入公司内部网络,适用于员工移动和远程办公的需要。SSL VPN 是最常用的 Client to site VPN 协议,利用 SSL 及其后续升级协议 TLS 来建立 VPN tunnel。Amazon Client VPN 提供该服务。

2.AWS Client VPN 简介

AWS Client VPN 让用户可以从任意位置使用 open VPN 客户端创建 TLS 连接到 AWS VPC, 它是完全托管的服务,用户不再需要维护和管理第三方的 VPN 接入方案。默认弹性和高可用,根据用户数自动扩展。支持客户端通过证书方式认证,也可以与 AD 集成。


在创建之前,先熟悉一下如下概念和注意事项:


  • Client VPN Endpoint:VPN session 的终结点。

  • Target Network:Client VPN endpoint 关联的子网,指 VPC 的 subnet。用户可以关联多个子网,但必须属于同一个 VPC,且每个 AZ 中只能关联一个子网。

  • Route:Client VPN endpoint 的路由表,决定了 client 可以到达的目的网络。

  • Authorization 规则:限制可以访问某个子网的用户组。对于某个特定的子网,可以限制某个 AD 组的用户访问。默认没有授权规则,必须创建授权规则允许用户访问某个资源或网络。

  • Client VPN 的 CIDR 不能和关联的 subnet 或者连通的网络中有任何 IP 地址冲突。

  • Client VPN endpoint 和关联的 VPC 必须属于同一账号。

  • Client VPN 使用场景:



用户可以利用 Client VPN 连接到 VPC 内部、用户 On-premise 资源、Internet、Peering 的 VPC。

3.AWS Client VPN 配置步骤

3.1 准备工作

本例采用双向认证方式,先利用 OpenVPN easy-rsa 生成客户端和服务器端的证书和密钥,并将 server 端的证书和密钥上传到 AWS certificate manager 服务中。具体命令如下:


git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server2 nopass
./easyrsa build-client-full client2 nopass
#这里的 server2、client2 用户可自行定义名称。生成成功后,将根证书、服务器端的证书和私钥 copy 到用户自定义文件夹中
cp pki/ca.crt /custom_folder/
cp pki/issued/server2.crt /custom_folder/
cp pki/private/server2.key /custom_folder/
cd /custom_folder#将根证书、server 端的证书和私钥上传到 ACM 服务中,用户可以利用 AWS CLI 或者console 来完成下面的导入操作
$ aws acm import-certificate –certificate file://server2.crt –certificate-chain file://ca.crt –private-key file://server2.key –region us-east-1
复制代码


导入后在 ACM 中确认是否导入成功:


3.2 创建 Client VPN endpoint

登录 console 后进入 VPC 服务,选择 US-east-1,US-east-2,US-west-2,eu-west-1 这四个 region 之一(目前这四个 region 提供 client VPN 服务)。




  1. 选择 CIDR,该 CIDR 为分配给 client 的地址池,不能和 VPC 以及所需要连通的网络有地址冲突。

  2. 服务器端证书 ARN,选择准备阶段导入 ACM 中生成的证书 ARN。

  3. 客户端证书 ARN,选择准备阶段导入 ACM 中生成的证书 ARN,勾选双向认证。

  4. 用户可以选择打开或不打开连接日志,打开后可以将用户登录日志信息发送到 CloudWatch 中。

  5. DNS server 是可选项,用户可以选择公网的 DNS 服务,也可以使用本地 DNS 解析。

  6. 传输协议,可以使用 TCP 或 UDP。使用 UDP 效率会更高。

3.3 关联 VPC subnet 到 Client VPN endpoint


创建完成后 endpoint 状态默认为 pending-associate,需要关联到 VPC 中某个子网。




选择 Client VPN 接入的 VPC subnet,并关联。关联过程需要几分钟。最终状态如下:


3.4 配置授权规则


如上图配置,允许接入的用户访问 VPC 中的 CIDR 10.21.0.0/16。几十秒后下面的授权状态会由 authorizing 变为 active。


3.5 创建路由表

默认情况下,到 VPC subnet 的授权完成后会自动添加路由,确认状态为 active



3.6 客户端连接


先从 console 中导出 VPN 配置文件



将该导出的配置文件和准备阶段生成的客户端证书密钥放到同一个文件夹下


客户端证书 — easy-rsa/easyrsa3/pki/issued/client2.crt


客户端密钥 — easy-rsa/easyrsa3/pki/private/client2.key


最终在该文件夹下有如下三个文件:客户端证书/客户端密钥/VPN 配置文件



若是 MAC 系统,在客户端配置文件(默认文件名为 downloaded-client-config.ovpn)最后添加下面两行:


cert ./client2.crt
key ./client2.key
复制代码



MAC 客户端推荐使用 Tunnelblick 或者 openVPN,也可以是其他任何基于 openVPN 的客户端。


https://tunnelblick.net/downloads.html


https://openvpn.net/vpn-server-resources/connecting-to-access-server-with-macos/


在 MAC 上安装完 openVPN 客户端,以 Tunnelblick 为例,先导入配置文件。



将 ovpn 配置文件拖入 TunnelBlick 的配置窗口,注意下面的几个配置项。



若是 windows 系统,在客户端配置文件(默认文件名为 downloaded-client-config.ovpn)最后添加如下两行,并将该配置文件拷贝到 open vpn 安装路径的 config 目录下,下面的密钥和证书文件可存放任意位置,只需要提供准确的路径。


cert c:\\clientkey\\client1.crt
key c:\\clientkey\\client1.key
复制代码


在 windows 中可以安装 openvpn 客户端,链接: https://openvpn.net/community-downloads/


注意对于部分 OpenVPN 客户端,若不支持任意主机前缀选项(remote-random-hostname),需要修改客户端配置文件(默认文件名为 downloaded-client-config.ovpn)中的 DNS,在前面添加任意前缀,如下面的”1.”



客户端连接成功后,可以从 console 中查看客户端状态:



连接后确认到 VPC 可达,下面的 10.21.0.200 为 associate VPC 中的一台 EC2 虚拟机:


4. AWS Client VPN 访问公网场景

若希望接入用户可以通过该 VPN 连接访问 Internet,需要配置授权规则,添加到达 internet 的授权:



再手工添加到 internet 的路由:



用户需要确保 target VPC 中配置了 IGW,且有到 internet 的默认路由。



上面的配置完成后,在客户 PC 上,通过 nslookup 命令确认 DNS 和公网访问都已经生效:


5. AWS Client VPN 访问 on-premise 场景

若希望 Client VPN 接入的用户可以访问 on-premise 资源,VPC 所 attach 的 VGW 必须已经关联到 DX 网关:



确认 VPC 路由表中有到 on-premise 网段的路由表:



若上面的条件都已经满足,On-premise 设备即可以 ping 通和登陆,下面的 192.168.10.10 为本地机房的一台 vyos 虚拟路由器。


6. AWS Client VPN 访问 Peering VPC 场景

若希望 Client VPN 接入的用户可以访问 peering VPC,只需正常创建 VPC peering connection:



确认路由表已经添加到 peering VPC 的路由,对端 VPC 子网为 172.16.0.0/16 网段



本例中,对端 VPC 中 EC2 虚拟机 IP 地址为 172.16.0.225,从用户 PC 可以正常 ping 通


7. 总结

利用 AWS Client VPN 服务用户可以轻松地搭建 VPN 服务,用户可以在任何位置以更高的稳定性和速度访问 VPC 中和 on-premise 的资源,或访问 internet。还可以通过 AD 组或者网络接入规则实现精细的安全控制。且易于管理,管理员可以查看和管理所有用户接入 session,详细的接入日志信息等。


作者介绍:


叶江荣


AWS 解决方案架构师。负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广。在加入 AWS 前,拥有多年外企售前经验,在传统网络架构的性能和安全方面有丰富的实践经验。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/aws-client-tosite-vpn-on-premise/


2019-10-09 09:001327
用户头像

发布了 1855 篇内容, 共 124.4 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

抖音快手短视频SEO获客系统开发搭建

制造企业的数字化转型案例分享

一只数据鲸鱼

数据可视化 工业4.0 智慧工业

MySQL优化-批量插入与1亿条数据效率COUNT

一个大红包

8月日更

0代码之缘

明道云

全靠阿里内部(珠峰版)Java面试笔记,成功拿下12家大厂offer

Java~~~

Java MySQL 数据库 架构 面试

Nebula Operator 云上实践

NebulaGraph

阿里云 云原生 k8s 图数据库 分布式图数据库

抖音快手搜客系统开发方案

1-5年Java面试者必备:一线名企各专题面试笔记+java核心宝典pdf

Java~~~

Java MySQL 架构 面试 架构师

校招失败,在小公司熬了2年后我终于进了字节跳动,竭尽全力(Java岗)

今晚早点睡

Java 编程 字节跳动 面试 计算机

全凭阿里大牛总结的Java面试笔记,大专学历成功拿到35koffer

Java~~~

Java 架构 面试 JVM io

RunC TOCTOU逃逸CVE-2021-30465分析

腾讯安全云鼎实验室

容器 漏洞分析

阿里p9的Java面试心路历程笔记,轻松拿到了90w年薪的Offer

Java~~~

Java spring 架构 面试 JVM

crudapi增删改查接口零代码产品成功案例之金茶王投票系统

crudapi

Vue API crud crudapi 投票

Windows Server 2019 安装提要 (及 VS 2019 Build Tool)

hedzr

DevOps windows server 2019 server core visual studio 2019 build tool

抖音快手询盘获客系统软件开发介绍

波场链DAPP开发|波场链TRONCHAIN介绍

量化系统19942438797

波场DAPP

面面俱到!腾讯大牛把源码分析、基础案例、实战案例、面试、系统架构,全部总结到这份Java多线程与高并发里面了

Java 编程 程序员 面试 多线程

架构实战营模块 5 作业指导

华仔

#架构实战营

模块五设计微博评论高性能高可用计算架构

kitten

云原生,开发者的黄金时代

阿里巴巴云原生

云计算 阿里云 云原生 中间件

云原生,开发者的黄金时代

阿里巴巴中间件

云计算 阿里云 云原生 中间件

终于拿到了深入Java虚拟机:JVMG1GC的算法与实现文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

Vue进阶(四十二):var、let、const 三者区别

No Silver Bullet

Vue var const let 8月日更

谷歌架构师分享gRPC与云原生应用开发Go和Java为例文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

linux 工具之pstack/gstack

webrtc developer

不会被开除吧?一顿饭换来“字节”面试题库Java岗,刷完直接入职大厂

Java架构师迁哥

我们可能是被工具耽误的一代

非著名程序员

深度思考 认知提升 成长笔记 8月日更

李克强签署国务院令 公布《关键信息基础设施安全保护条例》

郑州埃文科技

面试字节跳动java岗被算法吊打,60天苦修这些笔记,侥幸收获offer

Java~~~

Java 架构 面试 算法 红黑树

【我和达梦的故事】 有奖征文活动开始啦,万元奖品池+现金奖励等你拿!

墨天轮

数据库 征文大赛 国产数据库 达梦

终于学完国内算法第一人10年经验总结的数据结构与算法详解文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

利用 AWS Client VPN 安全地访问 VPC 中和 on-premise 资源_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章