在高度安全的纯内网使用Session Manager登录EC2

Session Manager基础知识请参考这篇文章。本文只针对严格受限的纯内网场景编写,一些操作细节略过。

一、背景

Session Manager是非常好用的EC2远程连接和管理工具,之前在这篇博客中有过系统讲解。Session Manager的使用前提是本VPC的EC2能够具备出向互联网访问,连接到本Region的Session Manager位于互联网的Endpoint。

那么对于一个完全内网的环境,没有默认路由0.0.0.0/0去往互联网或NAT Gateway,甚至没有Internet Gateway(IGW),完全是封闭的内网。此时,如何使用Session Manager?此时可通过Endpoint实现。此外,由于各种依赖条件比较多,因此编写本篇文章。

二、创建EC2与Session Manager连接所需要的IAM Role

创建一个EC2专用的IAM Role,然后绑定IAM Policy策略AmazonSSMManagedInstanceCore

之前在这篇博客中有过系统讲解,请参考对应章节。

三、为高度安全的网络环境创建互信的安全组

这里假设在一个高度安全的网络环境下,VPC的默认安全组中出站规则和入站规则完全是空白的,即默认拒绝任何网络出站和入站。由此实现最高安全标准。由于EC2等服务是支持同时加载多个安全组的,因此可通过配置多个安全组叠加的效果,实现高度安全的配置

接下来创建创建两个安全组,一个用于Session Manager Endpoint(即Server端),一个用于EC2(即Client端)

1、创建两个全空白的安全组

进入VPC,找到安全规则组,创建两个完全空白的安全组。分别取名ssm-endpointssm-ec2。创建时候注意安全组是基于VPC区分的,如果选择VPC位置,选错了VPC,那么后续无法配置。

在出站规则和入站规则都完全空白。创建完毕后,复制下来这两个名字。注意:新创建的安全组自动带有出站规则是0.0.0.0/0,这是默认条目,这可能不符合最高安全要求。因此手工清空。

2、配置交互信任

编辑ssm-endpoint安全组,设置规则如下:

  • 入站规则:从下拉框协议中找到HTTPS协议,来源地址仅允许ssm-ec2安全组
  • 出站规则:空白

编辑ssm-ec2安全组,设置规则如下:

  • 入站规则:空白
  • 出站规则:从下拉框协议中找到HTTPS协议,目标地址是ssm-endpoint安全组

由此,就实现了Session Manager Endpoint和EC2的最小信任。

后续创建终端节点和EC2时候,请分别使用这两个安全组。

四、创建Session Manager所需要的VPC Endpoint

1、VPC Endpoint与DNS解析要求

一共需要配置三个VPC Endpoint,在系统中的名称是:

  • com.amazonaws.ap-southeast-1.ssm
  • com.amazonaws.ap-southeast-1.ssmmessages
  • com.amazonaws.ap-southeast-1.ec2messages

此外,为了本VPC的EC2能识别到这些Endpoint,请确认VPC的DNS解析功能打开,确认所有EC2都使用了VPC自带的.2DNS。如果修改了EC2的DNS为自建DNS,根据自建DNS的位置又分成两种,一种是在EC2上自建DNS,一种是在IDC自建DNS。前者只需要配置DNS转发,将amazonaws.com的结尾的域名(本域名为AWS海外区域)转发到AWS的DNS进行解析;后者需要使用DNS Resovle,请参考这篇文章。

2、VPC Endpoint配置方法

这里配置一个VPC Endpoint作为例子。

进入VPC服务界面,从左侧找到Endpoint终端节点,点击进入,点击右上角的创建终端节点。如下截图。

新建一个终端节点,输入名字,选择服务类型是AWS services,在服务对话框中,搜索com.amazonaws.ap-southeast-1.ssm。注意这个被搜索的名字不是AWS的域名,而是终端节点自己的命名。搜索后选中。如下截图。

继续向下滚动页面,选中终端节点所在的VPC(也就是本实验这个纯Internal内网的VPC),然后向下选择两个可用区和对应的子网。继续向下滚动页面。如下截图。

在安全规则组位置,选择上一步的创建的Endpoint专用的安全组,在策略位置选择Full access。最后点击右下角的创建按钮。如下截图。

接下来重复以上过程,将Session Manager需要的另外两个VPC Endpoint(总计三个)都配置完成。

四、创建EC2并测试Session Manager

创建EC2,选择正确的VPC,选择上一步创建的EC2专门的安全组“,选择EC2使用的IAM Role角色。

创建完毕后,等待1-3分钟,EC2镜像启动完成,即可在春内网使用Session Manager登录。

五、参考文档

Creating VPC endpoints for Systems Manager

https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html