防火墙与交换机、路由器的区别
- 路由器用来连接不同的网络,通过路由协议保证互联互通,确保将报文转发到目的地。
- 交换机通常用来组建局域网,作为局域网通信的重要枢纽,通过二层/三层交换快速转发报文。
- 防火墙主要部署在网络边界,对进出网络的访问行为进行控制,安全防护是其核心特性。
路由器与交换机的本质是转发,防火墙的本质是控制
防火墙发展历史
1989-1994
- 1989年产生了包过滤防火墙,能实现简单的访问控制,我们称之为第一代防火墙。
-随后出现了代理防火墙,在应用层代理内部网络和外部网络之间的通信,属于第二代防火墙。代理防火墙的安全性较高,但处理速度慢,而且对于每一种应用都要开发一个对应的代理服务是很难做到的,因此只能对少量的应用提供代理支持。
- 1994年CheckPoint 公司(以色列的一家安全厂商)发布了第一台基于状态检测技术的防火墙,通过动态分析报文的状态来决定对报文采取的动作,不需要为每个应用程序都进行代理,处理速度快而且安全性高。状态检测防火墙被称为第三代防火墙。
1995-2004
-
状态检测防火墙已经成为趋势,除了访问控制功能之外,防火墙上也开始增加一些其他功能,如VPN(Virtual Private Network,虚拟专用网)。
-
同时,一些专用设备在这一时期出现了雏形。例如,专门保护Web服务器安全的WAF(Web Application Firewall, Web应用防火墙)设备。
-
2004年业界提出了UTM(United Threat Management,统一威胁管理)的概念,将传统防火墙、入侵检测、防病毒、URL过滤、应用程序控制、邮件过滤等功能融合到一台防火墙上,实现全面的安全防护。
2005至今
-
2004年后,UTM市场得到了快速的发展,UTM产品如雨后春笋般涌现,但面临新的问题。首先是针对应用层信息的检测程度受到限制。举个例子,假设防火墙允许"男人"通过,拒绝"女人"通过,那是否允许来自星星的都教授(外星人)通过呢?此时就需要更高级的检测手段,这使得DPI(Deep Packet Inspection,深度报文检测)技术得到广泛应用。其次是性能问题,多个安全功能同时运行,UTM设备的处理性能将会严重下降。
-
2008年Palo Alto Networks公司发布了下一代防火墙(Next-Generation Firewall),解决了多个功能同时运行时性能下降的问题。同时,下一代防火墙还可以基于用户、应用和内容来进行管控。
-
2009年Gartner对下一代防火墙进行了定义,明确下一代防火墙应具备的功能特性。随后各个安全厂商都推出了各自的下一代防火墙产品,防火墙进入了一个新的时代。
**Palo Alto Networks是美国的一家安全厂商,率先推出了下一代防火墙,是下一代防火墙的开山鼻祖。
**Gartner是著名的IT研究与顾问咨询公司,众所周知的魔力象限就出自Gartner。

状态检测和会话机制
状态检测防火墙的出现是防火墙发展历史上里程碑式的事件,而其所使用的状态检测和会话机制,目前已经成为防火墙实现安全防护的基础技术
状态检测
下述拓扑图中防火墙直连两个网络

在包过滤技术时期,要允许PC访问Web以及Web向PC回包的流量,就得在防火墙上配置两个方向的安全策略,并且动作为允许,如下图

上述配置不仅复杂而且不安全(只要冒充服务器地址和80端口就可以向内网主机进行攻击,而防火墙并不会阻止),包过滤技术以单个数据包为控制对象,而不关心这个数据包与前后数据包是否为同一数据流
同样是上述拓扑图,状态检测机制下的防火墙配置如下

只需配置一条规则,其处理机制为:PC访问Web服务时,防火墙允许报文通过,同时还会针对PC访问Web服务器的这个行为建立会话(Session),会话中包含PC发出的报文信息如地址和端口等。当Web服务器回应给PC的报文到达防火墙后,防火墙会把报文中的信息与会话中的信息进行比对。如果发现报文中的信息与会话中的信息相匹配,并且该报文符合HTTP协议规范的规定,则认为这个报文属于PC访问Web服务器行为的后续回应报文,直接允许这个报文通过。
包过滤防火墙只根据设定好的静态规则来判断是否允许报文通过,它认为报文都是无状态的孤立个体,不关注报文产生的前因后果。这就要求包过滤防火墙必须针对每一个方向上的报文都配置一条规则,转发效率低下而且容易带来安全风险。
状态检测防火墙使用基于连接状态的检测机制,将通信双方之间交互的属于同一连接的所有报文都作为整体的数据流来对待。在状态检测防火墙看来,同一个数据流内的报文不再是孤立的个体,而是存在联系的。例如,为数据流的第一个报文建立会话,数据流内的后续报文就会直接匹配会话转发,不需要再进行规则的检查,提高了转发效率。
会话
-
会话是通信双方建立的连接在防火墙上的具体体现,代表两者的连接状态,一条会话就表示通信双方的一个连接。防火墙上多条会话的集合就叫作会话表
-
源地址、源端口、目的地址、目的端口和协议这5个元素是会话的重要信息,我们将这5个元素称之为"五元组"。只要这5个元素相同的报文即可认为属于同一条流,在防火墙上通过这5个元素就可以唯一确定一条连接
-
会话是动态生成的,但不是永远存在的。如果长时间没有报文匹配,则说明通信双方已经断开了连接,不再需要该条会话了。此时,为了节约系统资源,防火墙会在一段时间后删除会话,该时间称为会话的老化时间。
-
防火墙上的状态检测功能将属于同一个连接的报文都视为一个整体数据流,用会话来表示这条连接。判断一个TCP连接的主要标志就是SYN报文,我们也把SYN报文称为TCP连接的首包。对于TCP协议,防火墙只有收到SYN报文并且配置的规则允许SYN报文通过才会建立会话,后续的TCP报文匹配会话直接转发。如果防火墙没有收到SYN报文,只收到了SYN+ACK或ACK等后续报文,是不会创建会话的,并且会将这些报文丢弃。