好多用户通过跳板机对布署在AWS平台的应用系统进行日常维护,为管理私有网路的服务器提供便利,最小化了应用系统的安全风险,因而有利于提高整体构架的安全。
为达到更好的安全性,须要进行恰当的规划,一般可以考虑以下几个问题:
1.跳板机应当放置在那个子网?
2.怎么安全访问跳板机?
3.跳板机怎么安全访问受管理服务器?
以下是结合这种问题基于AWS布署Linux跳板机相关步骤。
网路规划
对于VPC的规划一般须要界定为若干个子网,分为公有子网和私有子网。公有子网中的实例可以直接从Internet接收入站数据流,私有子网中的实例则不可。公有子网中的实例可以直接向Internet发送出站数据流,私有子网中的实例则不可。并且,私有子网中的实例可以使用坐落公有子网中的网路地址转换(NAT)网段访问Internet。
按照以上描述不同子网的特性,我们须要把跳板机放置在公有子网中,便于接受管理人员通过Internet的访问,受管理的服务器按照其在业务系统中充当的角色选择放置在公有子网或私有子网。在实际生产环境中按照须要可为跳板机设置一个独立的公有子网。
如右图所示的VPC规划中,为跳板机实例界定了一个专用的公有子网,管理员可以通过登陆到跳板机对放置在私有子网的服务器的管理:
跳板机布署
请参考以下链接,在公有子网中布署一台LinuxEC2实例,并为跳板机EC2分配EIP:
在实际布署高考虑到跳板机所需的工作负载,可以布署配置较低的实例类型。据悉,出于成本和安全考虑,您也可以在不进行运维操作的时侯将跳板机状态设置为“停止”,在每次运维须要的时侯再“开启”跳板机。
为跳板机实例配置安全组。在创建EC2的过程中,在安全组规则中添加SSH服务的安全规则,按照实际情况限定联接的源IP地址。如右图所示,只接受特定的管理终端联接:
配置受管理服务器的安全组。配置安全组规则仅接受来自跳板机所对应安全组的访问恳求:
配置管理终端。在管理终端依次导出跳板机和受管理服务器的证书公钥,登陆跳板机后公钥信息将转发到受管理服务器完成身分验证。以下是针对Linux环境和Windows环境的管理终端为例:
·在Linux管理终端下通过SSH从跳板机登陆到受管理服务器:
步骤一:在Linux管理终端上运行SSH-Agent启动SSH-Agent进程
步骤二:将跳板机和受管理服务器对应证书的公钥依次添加到管理终端,执行方法如下(比如,公钥文件名称为xxx.pem):
SSH-Addxxx.pem
步骤三:使用SSH-A参数登陆跳板机,-A表示通过跳板机转发本地管理端保存的公钥信息linux教程下载,实现跳板机与受管理服务器之间的身分验证:
SSH-AEC2-User@跳板机网段IP地址--(以下假设LinuxSSH用户名为EC2-User)
步骤四:从跳板机直接通过受管理服务器的外网IPSSH登陆服务器:
SSHEC2-User@受管理服务器的外网IP地址
·在Windows环境下通过Putty从跳板机登录到受管理的服务器:
下载Putty顾客端,但是通过Puttygen将私有证书生成ppk格式。
下载Putty环境下的SSHAgent----Pageant
步骤一:将受管理服务器及跳板机所对应证书的公钥添加进Pageant
启动Pageant并右击图标,您可以先查看KeyList,假如受访问服务器所需公钥没有添加进KeyList里,则执行“AddKey”的操作。并将保存在本地的公钥添加进去。
步骤二:通过Putty登录跳板机
在这一步中,如图填写跳板机公有IP地址,并在两侧SSH-Auth目录下勾选“Allowagentforwarding”来准许跳板机上的SSH顾客端与管理终端本地的SSH-Agent通讯并使用管理终端本地的秘钥完成与受管理服务器的SSH认证流程。下边以AWS上的一台EC2为例登录跳板机:
这儿须要添加的公钥为跳板机所对应证书的公钥。
步骤三:从跳板机直接登陆受管理的服务器
通过命令“SSHEC2-User@受管理服务器外网IP地址”来实现对受管理服务器的访问,须要注意的是linux 跳板机,在这儿输入受管理服务器的私有IP地址实现对其的访问,增强了受管理服务器的安全性。
这样,您便实现了从跳板机上登录受管理服务器的操作。
安全加固
在前面布署跳板机的过程中,跳板机所附件的安全组规则中开放了TCP22端口,按照实际情况建议严格限制来源IP地址linux操作系统论文,只容许指定的IP地址访问。在这基础上,还可以对安全进行优化:
·当管理员须要登陆跳板机通过AWSCLI在安全组添加规则打开TCP22端口;
·完成管理任务后,退出SSH会话,AWSCLI将从安全组中关掉TCP22端口;
实现以上疗效,可以执行以下脚本,请按照实际环境替换安全组ID。
#!/bin/bash
awsec2authorize-security-group-ingress--group-id安全组id--protocoltcp--port22--cidr0.0.0.0/0&
sleep5
ssh-Aec2-user@跳板机网段IP
awsec2revoke-security-group-ingress--group-id安全组id--protocoltcp--port22--cidr0.0.0.0/0
要成功运行以上脚本,须要配置AWSCLI运行环境,具体请参考:
执行脚本登陆前linux 跳板机,将跳板机安全组中的SSH服务规则删掉,即难以访问TCP22端口:
执行脚本登陆时,将执行脚本中的第一条句子,通过AWSCLI添加了SSH服务相关规则,之后SSH成功登陆到跳板机:
在跳板机上完成管理任务后Exit结束SSH会话,AWSCLI删掉安全组SSH服务规则,即难以访问TCP22端口:
右图显示,安全组规则相应被删掉:
跨VPC管理服务器
跳板机是否可以管理不同VPC中的服务器呢?答案其实是可以的。如右图所示,须要在VPC之间构建Peering连通两个VPC,跳板机即可实现跨VPC安全管理应用服务器。
构建VPCPeering的过程如下,也可以参考以下链接获取更详尽的信息:
步骤一:新建PeeringConnection
步入Console上面VPC下的“PeeringConnections”页面,新建“VPCPeeringConnection”。在这儿您须要提供跳板机以及受管理服务器所在VPC的ID,点击“CreateVPCPeeringConnection”。
步骤二:配置路由表
创建成功以后,您可以看见Peering的相关信息,例如“Status”,“LocalVPC”以及“PeeredVPC”信息。同时您可以看见Peering的状态为“pending-accept”,您须要点击上方的“Action”,并选择接受恳求。
当您接受恳求以后,您会收到创建新的路由表的通知,您须要点进页面进行路由表的配置。当为本地VPC配置路由表信息时,您须要提供受访服务器所在VPC的CIDR作为跳板机路由表的Destination,新创建的Peering作为Target。
同理,在配置受访服务器所在VPC的路由表信息时,您只需将本地VPC的CIDR作为Destination。
在配置完路由表信息后,您可以看见Peering的状态弄成了“active”,而且可以看见路由表的相关信息。
步骤三:通过本地跳板机登录受访服务器
这一步类似于上面提及的在同一VPC下从公有子网的跳板机访问私有子网的受管理服务器。您须要配置好您的安全组信息,在访问的时侯,您须要在管理终端保存受管理服务器私钥所对应的公钥。之后在跳板机上执行SSHEC2-User@受管理服务器外网IP地址
如右图:坐落192.168.0.0/24网关的跳板机直接SSH访问坐落172.16.0.0/24网关的应用服务器
关于Windows环境下的跳板机配置
WindowsServer的管理基于WindowsRDP合同实现,可以通过配置RDP网段服务器管理坐落私有子网的Windows服务器,具体的规划及配置请参考以下蓝皮书:
深入阐述本文