能否用路由器或交换机的ACL功能替代防火墙?
很多人在做完“用路由器或交换机的ACL功能(ACL概念如下)来设置包过滤防火墙”的实验后,产生了疑问:能否用路由器或交换机替代专门的硬件防火墙呢?
ACL是包含以下元素的访问控制列表:
源IP、目的IP、源端口、目的端口、控制(允许或者拒绝)等
网上的一个回答是,防火墙的安全策略复杂程度更高。然而大部分公司防火墙的策略配置并不复杂,ACL完全能实现相同策略。
还有一个回答是,专业的事情应该交给专业的设备来做,防火墙处理ACL往往更快。但我们应该知道,当前网络设备的CPU和内存配置都比较高,处理起ACL来也一点不慢。
而我认为,之所以不应该用路由器或交换机的ACL功能替代防火墙,是因为两者的通信控制功能并不相同:路由器和交换机的ACL,事实上起到的是包过滤的通信控制功能,也就是老式的防火墙功能。我们现在普遍使用的是状态检测防火墙,状态检测与包过滤的最大差异在于其处理数据是基于连接还是数据包的,这句话主要包括三层意思。
一是:包过滤防火墙是什么?
包过滤防火墙是将数据通信看作是数据包交互的防火墙,它需要设置ACL访问控制列表。每次收到数据包,防火墙就会将数据包的五元组和ACL访问控制列表进行对照,然后决定允许通行还是拒绝访问。为了保证数据往返,包过滤防火墙要设置源到目的、目的到源的两条控制策略。
二是:状态检测防火墙是什么?
状态检测防火墙将通信视为一条又一条的连接。以处理TCP连接为例,状态检测防火墙在收到源IP的SYN包后,将其和过滤规则进行对照,允许通行的话,就会动态添加一条允许目的IP的SYN/ACK包返回通信的规则。如果再收到源IP的响应ACK包,则判断为建立TCP连接,接下来会在这条连接上进行数据交换。
状态检测防火墙持续监控这条连接的状态,如果超过一定时间未被使用,该连接就会和之前动态添加的规则一起被防火墙强制删除,这样就能够有效的阻断非正常的通信状态。
第三:状态检测相比包过滤的优势
我们通过一个示例来解释状态检测防火墙的优势,假设某台内网终端需要访问公网上的FTP服务器。
- 使用状态检测防火墙时,只要有“允许内网终端访问FTP服务器一台规则”即可。
- 使用包过滤防火墙时,除了“允许内网终端访问FTP服务器”,还需要一条“允许外网的FTP服务器访问内网终端”的规则。
包过滤防火墙多出来的这条由外网访问内网的规则很容易受到攻击利用,比如示例中的FTP协议回联需要开放大量的端口,万一外网FTP服务器受到了攻击,则内网安全也不堪设想。
因此,我们有必要通过部署专门的防火墙,而不仅仅是依靠路由器或交换机的ACL功能,以实现更加安全可靠的网络控制。