AWS group 和 ACL都定义了网络访问规则,用于控制哪些和 被允许或者被禁止。不同之处在于:
AWS group:应用于主机的流量访问控制。同一个 group可以跨不同的甚至 zone,但是不能跨VPC。(一个VPC可以跨多个 zone, 一个 zone就是一个数据中心,一个下边可以有多个 zone)。
在定义SG时,可以指定/ , 比如在定义 时,可以指定哪些源主机可以访问本机(目的主机)的哪些端口。比如我们为一个web 定义一个SG,而这个web 我们想任何主机都可以访问它,包括从访问,这时目的端口可以指定80, 源主机就可以指定0.0.0.0,表示任何主机都可以访问。
SG一个有趣的功能是,在设定规则时,源主机可以不指定IP地址,而是指定一个SG,表示所有属于该SG的主机。也就是说SG不经可以设定访问规则,还可以代表一组主机哦。另外, SG是 (有状态)防火墙,你可以在一个SG里边只指定规则,无需指定规则,当规则允许流量进入后,所有响应()流量会自动放行。下文有详细介绍什么是有状态防火墙。
ACL:作用于单个里边的所有主机。每一个都有对应的 ACL。
比如下边图示中,左下角的那个 的 group A里的主机与 group B里边的主机互相通信,那要受 group A和 group B控制,但是不受 ACL控制的,因为流量没有出。而下图左上角的主机要与左下角的主机通讯,那流量即受 group控制, 也受 ACL控制,因为流量出了。
下图介绍了什么是有状态防火墙,什么是无状态防火墙。比如一个客户端浏览器访问一个web ,web IP是10.2.1.10,监听端口是80,客户端IP是10.1.1.1,端口是65188。客户端服务器之间有一个防火墙,做控制流量。这个时候,防火墙设置规则时,有两种方案:
有状态防火墙方案:这种方式,只针对主动发起方发起的流量设置访问规则,比如我们的例子,主动发起方是客户端浏览器,那只需要设置从浏览器(IP 10.1.1.1, port 65188)到web (IP 10.2.1.10, port 80)的流量设置规则,不需要针对web 到浏览器的响应流量再单独设置一条规则,默认如果放行从浏览器到web 的流量,那从web 到浏览器的响应流量也是允许的。就像下边图片说的,一个有状态防火墙,是自动允许返回的流量的。(请思考:假设我们在防火墙上设置了一条规则,允许浏览器访问web 。那现在浏览器没有访问web , 但是出于某种原因,虽然不太可能,web 主动发送流量给客户端呢的65188端口,这种情况防火墙会允许么?)
无状态防火墙方案:像下边图中说的,无状态防火墙不管你的流量是主动发起的请求流量,还是服务端的响应流量,都需要检查相应的访问控制规则,看有没有对应的规则允许放行。
AWS的 Group,使用的是有状态防火墙,而 ACL使用的是无状态防火墙,需要为请求、响应流量都这只段都的规则,这点设置规则时要注意。
请思考:既然 Group和 ACL都对应防火墙的访问控制规则,那他们分别在哪里设置?是在每个主机的防火墙里,比如Linux的IP table,还是在撞门的网络设备,比如防火墙,路由器等等?
Group除了可以应用于EC2 ,还可以用于你创建的EFS(就是NFS文件系统),比如下边的例子就是EC2 和EFS共用了一个 group(名字是web-),虽然这样看起来不太好。也就是说 group是独立的,当他依附于哪个资源时,就对哪个资源起作用。
另外,默认的 group允许同一个 group里边的主机通讯,即使是跨不同的主机, group允许同一个 group的之间互相访问,是由如下这条规则决定的,可以看到允许是这个 group本身的主机访问,也就是允许该 group内所有资源互相访问。
发表回复