一本书读懂TCP/IP
上QQ阅读APP看书,第一时间看更新

2.4 防黑防盗不防火的防火墙

1.什么是防火墙

初听“防火墙”这个名字,各位可不要往房屋、建筑的安全方面去想,这个“墙”是一道逻辑墙,而非实体墙。当然,这也的确是一道墙!一道不能挡盗贼却可以挡黑客,不能防寒暑却可以保护内网隐私的铜墙铁壁!

防火墙的作用,就是防止未获得授权的数据包进入私有领地。

一般来说,防火墙是一个物理盒子,用以协助人们排查非法进入的信息,或者协助人们过滤掉不必要的信息。总之,它扮演的角色,是防窃听、防窃取、防黑客。

防火墙可以是一台计算机,也可以是一台路由器。

说它是一台计算机,是因为它拥有和一台计算机一样的CPU、操作系统、软件等,只是它的作用非常单一。

说它是一台路由器,是因为它具备基本的路由功能。

图2.8 防火墙的应用

防火墙一般情况下至少拥有2至3个以太网接口,防火墙“串”在互联网(外网)和企业内网之间。

防火墙与路由器是同时代出现的,我们称最早的防火墙为第一代防火墙,采用了包过滤技术。

1989年,贝尔实验室推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙——应用层防火墙(代理防火墙)的初步结构。

1992年,USC信息科学院的鲍勃·巴登开发出了基于动态包过滤技术的第四代防火墙,后来演变为目前流行的“状态监视技术”;1994年,以色列的著名防火墙公司CheckPoint公司开发出了第一个采用这种技术的商业化的产品。

1998年,NAI公司推出了一种自适应代理技术,并在其产品中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。

前五代防火墙技术,也称为传统防火墙,它们采用逐一匹配方法,计算量太大,只能机械地执行安全策略,不能解决目前网络安全的三大主要问题,即以拒绝访问(DDOS)为主要目的的网络攻击,以蠕虫(Worm)为主要代表的病毒传播,以垃圾电子邮件(SPAM)为代表的内容控制。

下一代防火墙,也称为智能防火墙,是相对传统的防火墙而言的,顾名思义,它更聪明、更智能。传统的防火墙对包的检查,就像对人的相貌的识别,采用图像识别一样。把一个人的相貌转换为图像,对图像的每一个像素进行记忆,然后进行匹配检查。通过检查上千万个像素之后,告诉你这是谁。人不是这样来识别相貌的。人几乎没有计算就可以实时地识别你是谁。这就是智能识别。智能防火墙无须海量计算就可以轻松找到网络行为的特征值来识别网络行为,从而轻松的执行访问控制。

2.防火墙有哪些功能部件

防火墙是在外部网络(互联网)和内部网络(Intranet)之间的一堵墙。当然,这堵墙必须得有一扇门,否则它将把内外网完全隔绝——这违背互连的初衷,因此并不是我们所希望看到的。

门有两个基本状态:开和关,防火墙也会说两个词:YES(接受)或者NO(拒绝)。最简单的防火墙是以太网桥,用来隔离两个网段;但这种原始的防火墙管不了多大用处。

那么,这道门怎么设置,才能让防火墙起到作用呢?也就是说,这道门什么时候开,什么时候关呢?

我们先从这道门必须具备的4个基本功能部件说起。

第一,这道门需要访问原则。放哪些数据包进来?放哪些数据包出去?哪些数据包需要特殊处理?这些原则,组成了服务访问规则。

第二,这道门必须有有效的验证工具,以保证其验证结果的正确性。这有点像门禁系统。门禁系统一般采用射频卡,刷卡时,卡内信息与后台数据库的账号列表进行对比,确认后会发出“嘟”的一声,就说明验证通过。

第三,对于那些没有验证通过的数据包,这道门必须知道如何将他们过滤掉,因此防火墙必须具备包过滤机制。

第四,对于应用层的各种病毒,防火墙也应该有一定的防范能力。这种功能部件叫作“应用网关”。

3.防火墙的技术原理

防火墙采用的技术五花八门,形式也多种多样:有的取代系统上已经安装的TCP/IP协议栈,有的在已经有的协议栈上建立自己的软件模块,有的干脆就是一套独立的操作系统,还有一些应用型防火墙只对特定类型的网络连接提供保护,另外有一些基于硬件的防火墙产品,有些人称之为“安全路由器”。

如下的一幅图,就是防火墙最典型的应用场景。

图2.9 上下文的解释

这张图中,两个网段之间隔了一个防火墙,防火墙的一端有一台LINUX服务器,另一个网段则摆了一台PC机。

当PC机向LINUX主机发起某种请求,PC的客户程序就产生一个TCP包并把它传给本地的协议栈准备发送。接下来,协议栈将这个TCP包“塞”到一个IP包中,然后通过PC机的TCP/IP协议栈所定义的路径将它发送给LINUX主机。在这个例子中,该IP包必须经过横在PC和LINUX主机中的防火墙才能到达LINUX主机里。

现在我们“命令”防火墙把所有发给LINUX主机的数据包都给拒绝掉。完成这项工作后,防火墙出于怜悯,还会告诉客户程序一声——“Hi,我把你的数据给拒绝了啊”。接下来,只有和LINUX主机同在一个网段的用户才能访问这台主机。

当然,我们也可以“命令”防火墙专门给那台可怜的PC机“找茬”,别人的数据包都被允许顺利通过,就它发出的不行。这正是防火墙的基本功能:根据IP地址做转发判断。但到了大场面,这种小伎俩就玩不转了,由于黑客们可以采用IP地址欺骗技术,伪装成合法地址的计算机,就可以穿越信任这个地址的防火墙了。

仅仅靠地址进行数据过滤在实际应用中是不可行的,原因是目标主机上往往运行着多种通信服务。大多数情况下,不能因为要过滤掉某台计算机发来的某一种应用的数据包,而拒绝掉这台计算机发出来的所有数据包。

比如很多公司不希望员工上班登录QQ,那么就需要在防火墙上做相应的配置,使QQ无法正常登录到腾讯服务器上。其实这种配置非常简单,只需要关闭QQ的端口号即可。不可能因为不让登录QQ而抛弃所有的数据包,否则这就是典型的“因噎废食”了。

4.其实,到处都是防火墙

当然,我们也可以以一种宽松的方式定义出广义的防火墙。目前的操作系统、路由器上,都带有一定的数据过滤机制。那么可以说,当前的计算机、路由器,甚至一些多媒体网关,也都可以做防火墙。

在企业局域网组网中,很多出口路由器(接入路由器)就承担了防火墙的功能。