为达到更好的安全性,需要进行恰当的规划,通常可以考虑以下几个问题:
1. 跳板机应该放置在哪个子网?
2. 如何安全访问跳板机?
3. 跳板机如何安全访问受管理服务器?
以下是结合这些问题基于AWS部署linux跳板机相关步骤。
### 一.网络规划
对于vpc的规划通常需要划分为若干个子网,分为公有子网和私有子网。公有子网中的实例可以直接从 Internet 接收入站数据流,私有子网中的实例则不可。公有子网中的实例可以直接向 Internet 发送出站数据流,私有子网中的实例则不可。但是,私有子网中的实例可以使用位于公有子网中的网络地址转换 (NAT) 网关访问 Internet。
根据以上描述不同子网的特点,我们需要把跳板机放置在公有子网中,以便接受管理人员通过internet的访问,受管理的服务器根据其在业务系统中充当的角色选择放置在公有子网或私有子网。在实际生产环境中根据需要可为跳板机设置一个独立的公有子网 。
如下图所示的vpc规划中,为跳板机实例划分了一个专用的公有子网,管理员可以通过登录到跳板机对放置在私有子网的服务器的管理:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-1.png)
### 二.跳板机部署
请参考以下链接,在公有子网中部署一台linux EC2实例,并为跳板机EC2分配 EIP:
http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/EC2_GetStarted.html
在实际部署中考虑到跳板机所需的工作负载,可以部署配置较低的实例类型。此外,出于成本和安全考虑,您也可以在不进行运维操作的时候将跳板机状态设置为”停止”,在每次运维需要的时候再“开启”跳板机。
为跳板机实例配置安全组。在创建EC2的过程中,在安全组规则中添加SSH服务的安全规则,根据实际情况限定连接的源 IP地址。如下图所示,只接受特定的 管理终端连接:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-2.png)
配置受管理服务器的安全组。配置安全组规则仅接受来自跳板机所对应安全组的访问请求:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-3.png)
配置管理终端。在管理终端依次导入跳板机和受管理服务器的证书私钥,登录跳板机后私钥信息将转发到受管理服务器完成身份验证。以下是针对linux环境和windows环境的管理终端为例:
#### 在linux管理终端下通过ssh从跳板机登录到受管理服务器:
步骤一:在linux管理终端上运行ssh-agent启动ssh-agent进程
步骤二:将跳板机和受管理服务器对应证书的私钥依次添加到管理终端,执行方式如下(例如,私钥文件名称为xxx.pem):
ssh-add xxx.pem
步骤三:使用ssh -A 参数登录跳板机,-A 表示通过跳板机转发本地管理端保存的私钥信息,实现跳板机与受管理服务器之间的身份验证:
ssh –A ec2-user@跳板机公网 ip地址 ——(以下假定linux ssh用户名为ec2-user)
步骤四:从跳板机直接通过受管理服务器的内网IP SSH登录服务器:
ssh ec2-user@受管理服务器的内网ip地址
#### 在windows环境下通过Putty从跳板机登陆到受管理的服务器:
下载putty客户端,并且通过puttygen将私有证书生成ppk格式。
下载Putty环境下的SSH agent—-pageant
步骤一:将受管理服务器及跳板机所对应证书的私钥添加进pageant
启动pageant并右击图标,您可以先查看key list,如果受访问服务器所需私钥没有添加进key list里,则执行”Add Key”的操作。并将保存在本地的私钥添加进去。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-4.png)![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-5.jpg)
步骤二:通过putty登陆跳板机
在这一步中,如图填写跳板机公有IP地址,并在左侧SSH-Auth目录下勾选“Allow agent forwarding” 来允许跳板机上的ssh客户端与管理终端本地的ssh-agent通信并使用管理终端本地的密钥完成与受管理服务器的ssh认证流程。下面以AWS 上的一台EC2为例登陆跳板机:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-6.PNG)
这里需要添加的私钥为跳板机所对应证书的私钥。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-7.png)
步骤三:从跳板机直接登录受管理的服务器
通过命令”ssh ec2-user@受管理服务器内网ip地址”来实现对受管理服务器的访问,需要注意的是,在这里输入受管理服务器的私有IP地址实现对其的访问,提高了受管理服务器的安全性。
这样,您便实现了从跳板机上登陆受管理服务器的操作。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-8.png)
### 三.安全加固
在上面部署跳板机的过程中,跳板机所附件的安全组规则中开放了TCP 22端口,根据实际情况建议严格限制来源ip地址,只允许指定的IP地址访问。在这基础上,还可以对安全进行优化:
* 当管理员需要登录跳板机通过AWS CLI在安全组添加规则打开tcp 22 端口;
完成管理任务后,退出ssh会话,AWS CLI将从安全组中关闭tcp 22端口;实现以上效果,可以执行以下脚本 ,请根据实际环境替换安全组id。
\#!/bin/bash
aws ec2 authorize-security-group-ingress –group-id 安全组id –protocol tcp –port 22 –cidr 0.0.0.0/0 &
sleep 5
ssh -A ec2-user@跳板机公网IP
aws ec2 revoke-security-group-ingress –group-id 安全组id –protocol tcp –port 22 –cidr 0.0.0.0/0
要成功运行以上脚本,需要配置 AWS CLI运行环境,具体请参考:
http://docs.aws.amazon.com/cli/latest/userguide/installing.html
执行脚本登录前,将跳板机安全组中的ssh服务规则删除,即无法访问tcp 22端口:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-9.png)
执行脚本登录时,将执行脚本中的第一条语句,通过AWS CLI添加了ssh服务相关规则,然后ssh成功登录到跳板机:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-10.png)
在跳板机上完成管理任务后exit结束ssh会话,AWS CLI删除安全组ssh服务规则,即无法访问tcp22端口:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-11.png)
下图显示,安全组规则相应被删除:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-12.png)
### 四.跨vpc管理服务器
跳板机是否可以管理不同vpc中的服务器呢?答案当然是可以的。如下图所示,需要在vpc之间建立peering连通两个vpc,跳板机即可实现跨vpc安全管理应用服务器。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-13.png)
建立vpc peering的过程如下,也可以参考以下链接获取更详细的信息:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-peering.html
步骤一:新建Peering Connection
进入console里面VPC下的”Peering Connections”页面,新建”VPC Peering Connection”。 在这里您需要提供跳板机以及受管理服务器所在VPC的ID,点击”Create VPC Peering Connection”。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-14.png)
步骤二: 配置路由表
创建成功之后,您可以看到peering 的相关信息,比如”status” ,”Local Vpc”以及”Peered Vpc”信息。同时您可以看到peering的状态为”pending-accept”,您需要点击上方的”Action”,并选择接受请求。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-15.png)
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-16.png)
当您接受请求之后,您会收到创建新的路由表的通知,您需要点进页面进行路由表的配置。当为本地VPC 配置路由表信息时,您需要提供受访服务器所在VPC的CIDR作为跳板机路由表的Destination,新创建的peering 作为Target。
同理,在配置受访服务器所在VPC 的路由表信息时,您只需将本地 VPC 的CIDR作为Destination。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-17.png)
在配置完路由表信息后,您可以看到peering的状态变成了”active”,并且可以看到路由表的相关信息。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-18.png)
步骤三: 通过本地跳板机登陆受访服务器
这一步类似于前面提到的在同一VPC下从公有子网的跳板机访问私有子网的受管理服务器。您需要配置好您的安全组信息,在访问的时候,您需要在管理终端保存受管理服务器公钥所对应的私钥。然后在跳板机上执行ssh ec2-user@受管理服务器内网ip地址
如下图:位于192.168.0.0/24网段的跳板机 直接ssh访问位于172.16.0.0/24网段的应用服务器
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0826-19.png)
五.关于windows 环境下的跳板机配置
Windows Server的管理基于windows RDP协议实现,可以通过配置RDP 网关服务器管理位于私有子网的windows服务器,具体的规划及配置请参考以下白皮书:
[](https://amazonaws-china.com/windows/resources/whitepapers/rdgateway/)
作者介绍:
李艺明
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/Liyiming-mini.jpg)
亚马逊AWS解决方案架构师,负责基于AWS的云计算方案架构咨询和设计,在国内推广AWS云平台技术和各种解决方案。拥有超过10年的IT从业经验,为各种规模的企业客户提供IT项目实施和顾问服务。在加入AWS之前,服务于微软担任解决方案工程师,负责Windows Azure方案和架构设计,在此之前负责企业私有云和企业协同应用系统的架构规划和设计。
杨婉洁
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/wanjyang.jpeg)
亚马逊AWS解决方案架构师实习生,喜欢编程,熟悉Java、C++、JSP、HTML以及关系型数据库。曾在学校和企业参与数据分析项目,熟悉各类数据分析的算法。热爱大数据、云计算。
本文转载自 AWS 技术博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/aws-linux/
更多内容推荐
Oracle 正式发布 MySQL Heatwave on AWS
MySQL Heatwave服务将OLTP、分析、机器学习和基于机器学习的自动化融合到了单个AWS实例中。
AWS 近期技术动态:OpenJDK 发行版 Amazon Corretto 支持 ARM64
本文盘点了AWS最近的系列技术更新,以期对感兴趣的开发者有所帮助。
After Returning Advice Schema-based 实现 - <aop:after-returning/>
2021-03-18
AWS 开源并扩展无服务器应用程序模型(SAM)实现
近日,Amazon Web Services(AWS)开源了其无服务器应用程序模型(SAM)实现,并增加了一个面向CloudWatch Logs订阅过滤器的新事件源。该版本全面扩展了通过Amazon API网关配置和部署REST API的选项,其中包括支持CORS头、区域端点和二进制媒体类型。
AWS 的 Elastic Beanstalk 是现在支持最多语言的 PaaS 吗?
亚马逊web服务(AWS)团队为Elastic Beanstalk服务添加了对Ruby的支持,从而成为支持最多语言的云平台之一。另外,AWS还为Elastic Beanstalk引入了在虚拟私有云(Virtual Private Cloud,VPC)中的支持,这样客户可以对其web应用程序进行私有版本的部署和管理。
用 Monitoring 和 Alerting 监控 Elasticsearch 集群
2019-09-27
亚马逊宣布 AWS 亚太区孟买数据中心已经上线提供服务
亚马逊6月27日宣布他们在亚太地区的第6个AWS数据中心已经上线提供服务。新数据中心在印度孟买,亚太地区的其他5个数据中心是北京、首尔、新加坡、悉尼和东京。加上孟买之后,亚马逊在全球的13个大地理区域里已经有了35个数据中心在提供服务。
AWS CEO 再回应:不会从亚马逊剥离,可能会继续收购
其多年来已经投资了数十家小公司。
构建并优化云上的跨平台移动应用
如何更好地满足开发人员对资源的需求,从而帮助其开发出更快、更安全且具备跨平台能力的移动应用,AWS也一直致力于实现这项目标。用户希望在自己的移动应用中获得高质量的服务支持,而企业则需要利用合适的工具克服迫在眉睫的严峻挑战——包括如何实现用户验证、分析用户行为并在不同平台与设备上提供无缝化用户体验。
直播预告|一站式 MLOps meetup,洞见行业前沿!聆听第四范式、AWS、腾讯、百度的 MLOps 落地、演进、实践经验
一站式MLOps平台是AI工程化领域中的重要工具,它能够帮助企业实现从模型训练到上线部署的全生命周期管理。由星策社区举办的“一站式 MLOps Meetup”围绕这一主题展开,将于3月26日(周日)13:00-17:00 火热展开!
2023-03-23
AWS 运营 10 周年学到的 10 条经验教训
无
使用 SQLALchemy 查询 MySQL(下)
2022-09-08
使用启科 QuPot+Runtime+QuSaaS 进行量子应用开发及部署 - 调用 AWS Braket 计算后端
使用启科QuTrunk开发的量子应用可以通过QuSaaS 部署到启科QuPot云环境中对用户提供服务。本文将介绍如何使用QuTrunk进行AWS云上应用程序的开发和如何通过QuSaaS将量子应用部署到QuPot平台,并且QuTrunk计算后端调用AWS Braket服务。具体展示之前,先和大家简
2023-01-31
Nitro 系统架构: EC2 架构的迸发与演进
在11月28日(拉斯维加斯当地时间),Amazon EC2曾经的研发负责人Peter DeSantis站台演讲,分享了Amazon EC2的演进和最新的更新情况。
变废为宝:不放过任何边角料
2021-04-13
Serverless 应用开发小记
本文描述了笔者开发一个基于 AWS Serverless 技术的应用的全过程。
2021-01-25
大中华区联合企业捷成集团在 AWS 上使用 F5 防御恶意 Web 攻击
为了确保在当今竞争激烈的商业环境中占据领先地位,集团在 AWS 环境中利用 F5 高级 Web防火墙(F5 Advanced Web Application Firewall, WAF) 来实现快速扩展和增强安全性,同时显著降低了成本
2023-02-27
百度云报警通告系统的下一幕
2018-12-26
如何利用混沌工程打造健壮的分布式系统
2019-07-26
AWS 推出一个微软系统中心虚拟机管理器加载项
Amazon正在将EC2管理与微软系统中心虚拟机管理器(SCVMM)集成到一起。微软 Windows系统管理员可以使用熟悉的系统中心用户界面准备和配置运行在Amazon EC2上的虚拟机了。
推荐阅读
电子书
大厂实战PPT下载
换一换 李便茹 | 新东方 云教室前端交互架构师
Jiaqi Yan | Snowflake Principal Software Engineer
范涛 | 微众银行 联邦学习研发负责人
评论