现实场景中,我们希望一些服务器不可以被外网SSH登录上去,但是可以通过某一台跳板机登录。这样只用加固这台跳板机的安全性,就可以在一定程度上保障整个集群的安全。
在AWS场景下,我们一般使用子网去做IP地址段的分割,然后限制子网的访问性来达到这样的目的。
回顾下《AWS攻略——使用ACL限制访问》,其架构通过主ACL或者子网ACL来实现安全访问。
如果我们不用子网,也可以直接使用复杂的ACL规则来达成。但是这就要求EC2实例不能新增,因为新增的EC2会在子网IP/CIDR下自动分配一个IP,而该IP不能指定。已编辑好的ACL不能预先知道IP的存在,于是就需要再次编辑ACL来满足新机器的情况。
举个例子:假如目前只有两台机器,一台是100.0.0.10,一台是100.0.0.11。我们规定100.0.0.10这台机器可以被外网访问,而100.0.0.11不能,则可以配置两条规则。如果后续新增一台100.0.0.121的机器,则需要在ACL中再新增一条针对其的记录。这样的设计是非常不友好的,而通过子网划分就可以很好解决这个问题。因为EC2创建过程中要选择子网,这样就可以通过子网的IP/CIDR将规则一次性写好。
我们删除掉《AWS攻略——创建VPC》创建的子网和机器,以及《AWS攻略——使用ACL限制访问》中创建的ACL。设计两个子网来满足上述需求。
分配子网
在子网创建页面,选择VPC后,按下图分配两个子网。
名字为test–vpc–private的子网IP/CIDR是100.0.0.0/25,地址长度是2(32-25)=128,即100.0.0.0~100.0.0.127。于是名字为test–vpc–public的子网只能从100.0.0.128开始分配,为了填满VPC,其长度是2(32-24)-2(32-25)=2(32-25)=128,于是它的IP/CIDR是100.0.0.0128/25。
给Public子网分配互联网网关
创建互联网网关
附加到VPC
给Public子网创建路由表
在路由表创建页面,