不少的云服务商都提供了安全组功能,可替代系统中的防火墙功能。那么问题来了,究竟是该选择安全组呢,还是使用系统自带的防火墙。今天就来聊聊这个问题!
Windows 防火墙
Windows 防火墙是一种状态防火墙,检查并筛选 IPv4 和 IPv6 流量所有的数据包。在默认情况下阻止传入流量,除非是主机请求的响应,或者被特别允许的。Windows 防火墙使用两组规则,即数据流入规则和数据流出规则,通过规则设置,使防火墙可阻止进出服务器的数据流。
杜老师几乎不用 Windows 作为服务器的操作系统,所以对 Windows 自带的防火墙不作主观评价。而从小伙伴那里获得的信息来看,对其评价并不是很好。很多人说如果不开启,也没遇到过安全问题;如果开启,反而会影响系统自身服务的运行。我想这也是为什么 Windows 平台下有那么多的第三方防火墙厂商吧!
Linux 防火墙
Linux 平台下的两大防火墙分别是 IPTABLES 和 firewalld。firewalld 操作更简单,而运维工程师更倾向于 IPTABLES。问其原因,大多都是出于使用习惯。下图为 IPTABLES 的数据流走向,由此可知,IPTABLES 进行数据过滤时需经过多链多表,且都依赖 Kernel,因此数据包较多时会影响系统的运行效率:

云安全组
安全组是一种有状态的服务器虚拟防火墙,用于设置单台或多台云服务器的网络访问控制,是云厂商提供的重要网络安全隔离手段。安全组是一个逻辑分组,可以将同一地域内具有相同网络安全隔离需求的云服务器实例加入同一个安全组:

部分云厂家的轻云主机,也提供了云防火墙功能,同样可以实现网络访问控制:

写在最后
不管是哪种防火墙,我们最终目的都是为了实现网络访问控制——对合理数据放行,对不合理数据拒绝或丢弃。
根据杜老师的经验,建议在可行范围内优先选择云服务厂商提供的防护服务:Windows 防护的隔离性更好;Linux 防护在保障安全性的同时,还能降低对 Linux 内核的消耗,提高系统运行效率。
当然这里仅指防护功能,如需使用 Linux 的数据包转发功能,仍需依赖 IPTABLES。
最后建议大家混用时不要做冗余规则操作「即同一限制同时配置在两套防火墙中」,这样不仅无法提升防护能力,反而会降低系统运行效率。