不少的云服务商都提供了安全组功能,可替代系统中的防火墙功能。那么问题来了,究竟是该选择安全组呢,还是使用系统自带的防火墙。今天就来聊聊这个问题!
Windows 防火墙是一种状态防火墙,检查并筛选 IPv4 和 IPv6 流量所有的数据包。在默认情况下阻止传入流量,除非是主机请求的响应,或者被特别允许的。Windows 防火墙使用两组规则,即数据流入规则和数据流出规则,通过规则设置,使防火墙可阻止进出服务器的数据流。
杜老师几乎不用 Windows 作为服务器的操作系统,所以对 Windows 自带的防火墙不作主观评价。而从小伙伴获得的信息,对其评价不是很好。很多人说如不开启,也没有遇到过安全问题。如果开启,反而会影响系统本身服务的运行。我想这也是为什么 Windows 平台下,有那么多第三方的防火墙厂家吧!
Linux 平台下的两大防火墙,分别是 IPTABLES 和 firewalld,firewalld 操作更加的简单,而运维工程师偏向于 IPTABLES,问其原因,大多都是因为使用习惯。下图为 IPTABLES 的数据流走向,通过该图可知,IPTABLES 进行数据过滤时,需要经过多链多表,且这些都是依赖 Kernel,所以数据包较多时,会影响系统的运行效率:
安全组是一种有状态的服务器虚拟防火墙,用于设置单台或多台云服务器的网络访问控制,是云厂商提供的重要的网络安全隔离手段。安全组是一个逻辑上的分组,可以将同一地域内具有相同网络安全隔离需求的云服务器实例加到同一个安全组内:
部分云厂家的轻云主机,也提供了云防火墙功能,同样可以实现网络访问控制:
不管是哪种防火墙,我们最终的目的都是想实现网络访问控制,对于合理数据进行通过处理,对于不合理的数据进行拒绝或是丢弃操作。
根据杜老师的经验,建议在可行范围内,尽量选择云服务厂商提供的防护服务。对于 Windows 的防护,其安全性更高;对于 Linux 的防护,在保障安全性同时,也降低对 Linux 内核的消耗,提高系统运行效率。
当然杜老师指的是防护功能,如需要用到 Linux 的数据包转发功能,还是要依赖 IPTABLES。
最后建议大家混用时不要做冗余规则操作「就是一个限制做在两个防火墙中」这样不仅不会提升防护能力,也降低了系统运行效率。