防火墙(Firewall),又称防护墙、火墙,是由吉尔·舍伍德于1993年发明并引入国际互联网的网络安全系统,[1]包括软件防火墙和硬件防火墙两类,路由器将网络从网络提供商带到家庭或办公室时一般运行硬件防火墙,Windows或macOS操作系统计算机一般运行软件防火墙。[2]
防火墙的主要作用是及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性。[3]
电脑关闭防火墙的步骤如下:进入电脑的控制面板,依次点击“系统和安全”“Windows防火墙”“启用或关闭Windows防火墙”,选择关闭即可。[4]
第一代防火墙技术主要在路由器上实现,后来将此安全功能独立出来专门用来实现安全过滤功能。1989年,贝尔实验室的DavePresotto和HowardTrickey推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙——应用层防火墙(代理防火墙)的初步结构。
代理防火墙出现,原来从路由器上独立出来的安全软件迅速发展,并引发了对承载安全软件本身的操作系统的安全需求。即对防火墙本身的安全问题的安全需求。
1992年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamicpacketfilter)技术的第四代防火墙,后来演变为所说的状态监视(Statefulinspection)技术。1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的产品。
1998年,NAI公司推出了一种自适应代理(Adaptiveproxy)技术,并在其产品GauntletFirewallforNT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。
UTM统一威胁管理,在防火墙基础上发展起来的,具备防火墙、IPS、防病毒、防垃圾邮件等综合功能的设备。由于同时开启多项功能会大大降低UTM的处理性能,因此主要用于对性能要求不高的中低端领域。在中低端领域,UTM已经出现了代替防火墙的趋势,因为在不开启附加功能的情况下,UTM本身就是一个防火墙,而附加功能又为用户的应用提供了更多选择。在高端应用领域,比如电信、金融等行业,仍然以专用的高性能防火墙、IPS为主流。
网络层防火墙可视为一种IP封包过滤器,运作在底层的TCP/IP协议堆栈上。我们可以以枚举的方式,只允许符合特定规则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。网络层防火墙
我们也能以另一种较宽松的角度来制定防火墙规则,只要封包不符合任何一项“否定规则”就予以放行。操作系统及网络设备大多已内置防火墙功能。
防火墙应用层防火墙是在TCP/IP堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用FTP时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕虫或是木马程序的快速蔓延。不过就实现而言,这个方法既烦且杂(软件有千千百百种啊),所以大部分的防火墙都不会考虑以这种方法设计。
数据库防火墙是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。
数据库防火墙通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使与之间建立起一个安全网关(SecurityGateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
防火墙在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问,上的人也无法和公司内部的人进行通信。
XP系统相比于以往的Windows系统新增了许多的网络功能(Windows7的防火墙一样很强大,可以很方便地定义过滤掉数据包),例如连接防火墙(ICF),它就是用一段"代码墙"把电脑和分隔开,时刻检查出入防火墙的所有数据包,决定拦截或是放行那些数据包。防火墙可以是一种硬件、固件或者软件,例如专用防火墙设备就是硬件形式的防火墙,包过滤路由器是嵌有防火墙固件的路由器,而代理服务器等软件就是软件形式的防火墙。
ICF被视为状态防火墙,状态防火墙可监视通过其路径的所有通讯,并且检查所处理的每个消息的源和目标地址。为了防止来自连接公用端的未经请求的通信进入专用端,ICF保留了所有源自ICF计算机的通讯表。在单独的计算机中,ICF将跟踪源自该计算机的通信。与ICS一起使用时,ICF将跟踪所有源自ICF/ICS计算机的通信和所有源自专用网络计算机的通信。所有传入通信都会针对于该表中的各项进行比较。只有当表中有匹配项时(这说明通讯交换是从计算机或专用网络内部开始的),才允许将传入通信传送给网络中的计算机。
源自外部源ICF计算机的通讯(如)将被防火墙阻止,除非在“服务”选项卡上设置允许该通讯通过。ICF不会向你发送活动通知,而是静态地阻止未经请求的通讯,防止像端口扫描这样的常见黑客袭击。
从结构上来分,防火墙有两种:即代理主机结构和路由器 过滤器结构,后一种结构如下所示:内部网络过滤器(Filter)路由器(Router)
从原理上来分,防火墙则可以分成4种类型:特殊设计的硬件防火墙、数据包过滤型、电路层网关和应用级网关。安全性能高的防火墙系统都是组合运用多种类型防火墙,构筑多道防火墙“防御工事”。[5]
网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要耗费资源。吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。其测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示。
吞吐量和报文转发率是关系防火墙应用的主要指标,一般采用FDT(FullDuplexThroughput)来衡量,指64字节数据包的全双工吞吐量,该指标既包括吞吐量指标也涵盖了报文转发率指标。
防火墙
(3)防火墙具有很好的保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。你可以将防火墙配置成许多不同保护级别。高级别的保护可能会禁止一些服务,如视频流等。
防火墙最基本的功能就是控制在计算机网络中,不同信任程度区域间传送的数据流。例如互联网是不可信任的区域,而内部网络是高度信任的区域。以避免安全策略中禁止的一些通信,与建筑中的防火墙功能相似。它有控制信息基本的任务在不同信任的区域。典型信任的区域包括互联网(一个没有信任的区域)和一个内部网络(一个高信任的区域)。最终目标是提供受控连通性在不同水平的信任区域通过安全政策的运行和连通性模型之间根据最少特权原则。
例如:TCP/IPPort135~139是MicrosoftWindows的【网上邻居】所使用的。如果计算机有使用【网上邻居】的【共享文件夹】,又没使用任何防火墙相关的防护措施的话,就等于把自己的【共享文件夹】公开到,供不特定的任何人有机会浏览目录内的文件。且早期版本的Windows有【网上邻居】系统溢出的无密码保护的漏洞(这里是指【共享文件夹】有设密码,但可经由此系统漏洞,达到无须密码便能浏览文件夹的需求)。
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。如防火墙可以禁止诸如众所周知的不安全的NFS协议进出受保护网络,这样外部的攻击者就不可能利用这些脆弱的协议来攻击内部网络。防火墙同时可以保护网络免受基于路由的攻击,如IP选项中的源路由攻击和ICMP重定向中的重定向路径。防火墙应该可以拒绝所有以上类型攻击的报文并通知防火墙管理员。
通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各个主机上相比,防火墙的集中安全管理更经济。例如在网络访问时,一次一密口令系统和其它的身份认证系统完可以不必分散在各个主机上,而集中在防火墙一身上。
如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信息。另外,收集一个网络的使用和误用情况也是非常重要的。首先的理由是可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的控制是否充足。而网络使用统计对网络需求分析和威胁分析等而言也是非常重要的。
通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部网络的某些安全漏洞。使用防火墙就可以隐蔽那些透漏内部细节如Finger,DNS等服务。Finger显示了主机的所有用户的注册名、真名,最后登录时间和使用shell类型等。但是Finger显示的信息非常容易被攻击者所获悉。攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线上网,这个系统是否在被攻击时引起注意等等。防火墙可以同样阻塞有关内部网络中的DNS信息,这样一台主机的域名和IP地址就不会被外界所了解。
防火墙的英文名为“FireWall”,它是一种最重要的网络防护设备。从专业角度讲,防火墙是位于两个(或多个)网络间,实施网络之间访问控制的一组组件集合。
尽管这种方法听起来很容易,但是由于防火墙没有内置的变动管理流程,因此文件更改对于许多企业来说都不是最佳的实践方法。如果防火墙管理员因为突发情况或者一些其他形式的业务中断做出更改,那么他撞到枪口上的可能性就会比较大。但是如果这种更改抵消了之前的协议更改,会导致宕机吗?这是一个相当高发的状况。
防火墙管理产品的中央控制台能全面可视所有的防火墙规则基础,因此团队的所有成员都必须达成共识,观察谁进行了何种更改。这样就能及时发现并修理故障,让整个协议管理更加简单和高效。
另一个常见的安全问题是权限过度的规则设置。防火墙规则是由三个域构成的:即源(IP地址),目的地(网络/子网络)和服务(应用软件或者其他目的地)。为了确保每个用户都有足够的端口来访问他们所需的系统,常用方法是在一个或者更多域内指定打来那个的目标对象。当你出于业务持续性的需要允许大范围的IP地址来访问大型企业的网络,这些规则就会变得权限过度释放,因此就会增加不安全因素。服务域的规则是开放65535个TCP端口的ANY。防火墙管理员真的就意味着为黑客开放了65535个攻击矢量?
在防火墙操作中,日常工作都是以寻找问题,修正问题和安装新系统为中心的。在安装最新防火墙规则来解决问题,应用新产品和业务部门的过程中,我们经常会遗忘防火墙也是企业安全协议的物理执行者。每项规则都应该重新审核来确保它能符合安全协议和任何法规协议的内容和精神,而不仅是一篇法律条文。
规则膨胀是防火墙经常会出现的安全问题,因为多数运作团队都没有删除规则的流程。业务部门擅长让你知道他们了解这些新规则,却从来不会让防火墙团队知道他们不再使用某些服务了。了解退役的服务器和网络以及应用软件更新周期对于达成规则共识是个好的开始。运行无用规则的报表是另外一步。黑客喜欢从来不删除规则的防火墙团队。
如果你是名信用卡活动频繁的商人,那么除非必须的话这项不是向你推荐的最佳实践方法,因为支付卡行业标准1.1.6规定至少每隔半年要对防火墙进行一次审核。[6]
防火墙布置图这是防火墙所处网络位置特性,同时也是一个前提。因为只有当防火墙是内、外部网络之间通信的唯一通道,才可以全面、有效地保护企业网内部网络不受侵害。
根据美国国家安全局制定的《信息保障技术框架》,防火墙适用于用户网络系统的边界,属于用户网络边界的安全保护设备。所谓网络边界即是采用不同安全策略的两个网络连接处,比如用户网络和互联网之间连接、和其它业务往来单位的网络连接、用户内部网络不同部门之间的连接等。防火墙的目的就是在网络连接之间建立一个安全控制点,通过允许、拒绝或重新定向经过防火墙的数据流,实现对进、出内部网络的服务和访问的审计和控制。
典型的防火墙体系网络结构如下图所示。从图中可以看出,防火墙的一端连接企事业单位内部的局域网,而另一端则连接着互联网。所有的内、外部网络之间的通信都要经过防火墙。
防火墙最基本的功能是确保网络流量的合法性,并在此前提下将网络的流量快速的从一条链路转发到另外的链路上去。从最早的防火墙模型开始谈起,原始的防火墙是一台“双穴主机”,即具备两个网络接口,同时拥有两个网络层地址。防火墙将网络上的流量通过相应的网络接口接收上来,按照OSI协议栈的七层结构顺序上传,在适当的协议层进行访问规则和安全审查,然后将符合通过条件的报文从相应的网络接口送出,而对于那些不符合通过条件的报文则予以阻断。因此,从这个角度上来说,防火墙是一个类似于桥接或路由器的、多端口的(网络接口>=2)转发设备,它跨接于多个分离的物理网段之间,并在报文转发过程之中完成对报文的审查工作。
这是防火墙之所以能担当企业内部网络安全防护重任的先决条件。防火墙处于网络边缘,它就像一个边界卫士一样,每时每刻都要面对黑客的入侵,这样就要求防火墙自身要具有非常强的抗击入侵本领。它之所以具有这么强的本领防火墙操作系统本身是关键,只有自身具有完整信任关系的操作系统才可以谈论系统的安全性。其次就是防火墙自身具有非常低的服务功能,除了专门的防火墙嵌入系统外,再没有其它应用程序在防火墙上运行。当然这些安全性也只能说是相对的。
国内的防火墙几乎被国外的品牌占据了一半的市场,国外品牌的优势主要是在技术和知名度上比国内产品高。而国内防火墙厂商对国内用户了解更加透彻,价格上也更具有优势。防火墙产品中,国外主流厂商为思科(Cisco)、CheckPoint、NetScreen等,国内主流厂商为东软、天融信、山石网科、网御神州、联想、方正等,它们都提供不同级别的防火墙产品。
自从Gartner提出下一代防火墙概念以来,信息安全行业越来越认识到应用层攻击成为当下取代传统攻击,较大程度危害用户的信息安全,而传统防火墙由于不具备区分端口和应用的能力,以至于传统防火墙仅仅只能防御传统的攻击,基于应用层的攻击则毫无办法。
从2011年开始,国内厂家通过多年的技术积累,开始推出下一代防火墙,在国内从第一家推出真正意义的下一代防火墙的网康科技开始,至今包扩东软,天融信等在内的传统防火墙厂商也开始相互[7]效仿,陆续推出了下一代防火墙,下一代防火墙具备应用层分析的能力,能够基于不同的应用特征,实现应用层的攻击过滤,在具备传统防火墙、IPS、防毒等功能的同时,还能够对用户和内容进行识别管理,兼具了应用层的高性能和智能联动两大特性,能够更好的针对应用层攻击进行防护。
高危访问控制技术:提供对数据库用户的登录、操作行为,提供根据地点、时间、用户、操作类型、对象等特征定义高危访问行为。
代理服务设备(可能是一台专属的硬件,或只是普通机器上的一套软件)也能像应用程序一样回应输入封包(例如连接要求),同时封锁其他的封包,达到类似于防火墙的效果。
代理使得由外在网络窜改一个内部系统更加困难,并且一个内部系统误用不一定会导致一个安全漏洞可从防火墙外面(只要应用代理剩下的原封和适当地被配置)被入侵。相反地,入侵者也许劫持一个公开可及的系统和使用它作为代理人为他们自己的目的;代理人然后伪装作为那个系统对其它内部机器。当对内部地址空间的用途加强安全,破坏狂也许仍然使用方法譬如IP欺骗试图通过小包对目标网络。
防火墙经常有网络地址转换(NAT)的功能,并且主机被保护在防火墙之后共同地使用所谓的“私人地址空间”,依照被定义在[RFC1918]。管理员经常设置了这样的情节:假装内部地址或网络是安全的。
防火墙的适当的配置要求技巧和智能。它要求管理员对网络协议和电脑安全有深入的了解。因小差错可使防火墙不能作为安全工具。[8]
(3)防火墙限制暴露用户点。防火墙能够用来隔开网络中一个网段与另一个网段。这样,能够防止影响一个网段的问题通过整个网络传播。
(4)防火墙是一个安全策略的检查站。所有进出的信息都必须通过防火墙,防火墙便成为安全问题的检查点,使可疑的访问被拒绝于门外。
动态更新的应用识别技术。随着网络应用的快速增长,基于各种协议的网络应用日趋增加,新一代防火墙必须能够依据协议特点识别各种网络应用和网络动作,并且内置到防火墙内部且应用和动作的识别可以动态更新。
用户识别技术。可以根据用户类型、用户部门、用户权限、IP组等不同分类对网络用户进行分类,使每一类用户有不同的网络权限。同时应该与AD和RADIUS、单点登录、智能卡等结合完善接入用户的认证。
全面的内容防护至少要包括漏洞扫描、WEB防护、内容过滤三个内容。漏洞扫描要能发现对操作系统、应用系统、网络协议、用户设备漏洞的防护,对利用漏洞进行的攻击进行阻断。WEB防护功能应包括网站攻击防护、应用隐藏、口令保护和权限控制。内容过滤功能应该能显现对关键字、URL集、病毒、木马、恶意控件/脚本的过滤。
如果使用传统的硬件架构方式对报文进行处理,不仅对硬件要求高,同时应用层报文处理会大量占用设备资源,很难突破千兆处理。必须对防火墙进行新架构设计,抛弃了传统防火墙NP、ASIC等适合执行网络层重复计算工作的硬件设计,采用了更加适合应用层灵活计算能力的多核并行处理技术;在系统架构上也要放弃了UTM多引擎,多次解析的架构,需要采用了更为先进的一体化单次解析引擎,将漏洞、病毒、Web攻击、恶意代码/脚本、URL库等众多应用层威胁统一进行检测匹配,能够一次对报文实现从网络层到应用层的解析,达到万兆处理能力。
防火墙是好,但是,若选择不当的话,可能会起到相反的作用。在这里,笔者想跟大家交流一下防火墙选购的经验。笔者结合自己与朋友防火墙管理方面的心得,总结出了防火墙选购中的五大误区。权当抛砖引玉。
在防火墙的产品说明中,往往会有一些性能、功能方面的参考数字。如吞吐量有6G,抗病毒能力有多强等等。对于这些数字我们在防火墙选购的时候不能够太过于迷信。而应该以辩证的眼光去看待这些数字。
一方面,这些数字都是实验数据。也就是说,是在一个相对合理的、干扰因素比较少的情况下得出的数据。但是,说实话,任何一个企业的网络环境都不可能达到他们测试产品的那种水准。当企业主机数量比较多,若分段不合理,就会造成比较多的网络广播,那时也会影响到这个最终的有效吞吐量。所以,对于实验室出来的数据,我们往往要打个对折。
另一方面,不能够光看某个指标。在选购防火墙的时候,有多大几十项的指标,若其中一个指标,如吞吐量,即使高达10G,但是,若其他指标跟不上去的话,那么一切都是白搭。有时候,厂商在测试产品的时候,往往会把某些功能关掉后再进行测试。在这种情况下,测试出来的数据,实用价值不会很大。因为若把其他功能关掉,就启用一项功能,则CPU等硬件资源就不会发生争夺。如此,某个指标的数字看起来就会好看许多。而在企业中部署防火墙的时候,不可能只用一项功能。把其他功能开起来的话,则这个数字就会打折扣了。
总之,在防火墙选购的时候,不要太过于相信实验数据。对于他们从实验室得出来的数字,笔者往往会给他们打个对折。打折后的数据,可能水分会少一点。所以,实验数据只能拿来参考。在有条件的情况下,网络管理员要结合自己的公司网络环境,对防火墙产品进行测试。这测试出来的结果,对于我们防火墙选购才会有参考价值。
信息化技术越来越复杂,而且防火墙的竞争也越来越激烈。所以,防火墙厂商为了提供自己产品的市场竞争力,就往往在自己的防火墙产品中集成比较多的功能,以增加市场的卖点。
一方面,要看看这些额外的功能企业是否需要。如有些防火墙产品中会集成VPN等功能。但是,企业是否需要这项功能呢?网络管理员要事先考虑清楚。因为VPN服务不仅在防火墙上可以实现,而且在路由器上也可以实现。如果企业对于VPN有比较高的性能要求的话,甚至可以部署一个专用的VPN服务器等等。若在防火墙上实现VPN功能,笔者个人认为,有着画蛇添足的味道。在管理上,没有其他实现方式那边简便与人性化。
另一方面,一些额外的功能会耗费防火墙的资源。上面笔者说过,在实验室中测试产品的时候,往往只是测试单一的功能。如测试吞吐量的话,会把其他功能关闭掉。若把防火墙的功能都启用起来的话,则某个指标的数字可能需要打个两折了。所以,花哨功能多了,就会大大影响防火墙的性能。这就好像一个巨无霸,网络管理员必须为他提供更好的硬件配置,才能够让其正常的运行[9]。
防火墙在网络中经常是以两种图标出现的。一种图标非常形象,真正像一堵墙一样。而另一种图标则是从防火墙的过滤机制来形象化的,在图标中有一个二极管图标。而二极管我们知道,它具有单向导电性,这样也就形象地说明了防火墙具有单向导通性。这看起来与防火墙过滤机制有些矛盾,不过它却完全体现了防火墙初期的设计思想,同时也在相当大程度上体现了当前防火墙的过滤机制。因为防火最初的设计思想是对内部网络总是信任的,而对外部网络却总是不信任的,所以最初的防火墙是只对外部进来的通信进行过滤,而对内部网络用户发出的通信不作限制。当然防火墙在过滤机制上有所改变,不仅对外部网络发出的通信连接要进行过滤,对内部网络用户发出的部分连接请求和数据包同样需要过滤,但防火墙仍只对符合安全策略的通信通过,也可以说具有“单向导通”性。
防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称之为“防火墙”。其实与防火墙一起起作用的就是“门”。如果没有门,各房间的人如何沟通呢,这些房间的人又如何进去呢?当火灾发生时,这些人又如何逃离现场呢?这个门就相当于我们这里所讲的防火墙的“安全策略”,所以在此我们所说的防火墙实际并不是一堵实心墙,而是带有一些小孔的墙。这些小孔就是用来留给那些允许进行的通信,在这些小孔中安装了过滤机制,也就是上面所介绍的“单向导通性”。
我们通常所说的网络防火墙是借鉴了古代真正用于防火的防火墙的喻义,它指的是隔离在本地网络与外界网络之间的一道防御系统。防火可以使企业内部局域网(LAN)网络与之间或者与其他外部网络互相隔离、限制网络互访用来保护内部网络。
防火墙的硬件体系结构曾经历过通用CPU架构、ASIC架构和网络处理器架构,他们各自的特点分别如下:
通用CPU架构最常见的是基于IntelX86架构的防火墙,在百兆防火墙中IntelX86架构的硬件以其高灵活性和扩展性一直受到防火墙厂商的青睐;由于采用了PCI总线接口,IntelX86架构的硬件虽然理论上能达到2Gbps的吞吐量甚至更高,但是在实际应用中,尤其是在小包情况下,远远达不到标称性能,通用CPU的处理能力也很有限。
ASIC(ApplicationSpecificIntegratedCircuit,专用集成电路)技术是国外高端网络设备几年前广泛采用的技术。由于采用了硬件转发模式、多总线技术、数据层面与控制层面分离等技术,ASIC架构防火墙解决了带宽容量和性能不足的问题,稳定性也得到了很好的保证。
ASIC技术的性能优势主要体现在网络层转发上,而对于需要强大计算能力的应用层数据的处理则不占优势,而且面对频繁变异的应用安全问题,其灵活性和扩展性也难以满足要求。
由于该技术有较高的技术和资金门槛,主要是国内外知名厂商在采用,国外主要代表厂商是Netscreen,国内主要代表厂商为天融信、网御神州。
由于网络处理器所使用的微码编写有一定技术难度,难以实现产品的最优性能,因此网络处理器架构的防火墙产品难以占有大量的市场份额。
随着国内通用处理器的发展,逐渐发展了基于中国芯的防火墙,主要架构为国产龙芯2F FPGA的协议处理器,主要应用政府、军队等对国家安全敏感的行业。代表厂商有中科院计算所、博华科技等公司。
Dual-homed方式最简单。Dual-homedGateway放置在两个网络之间,这个Dual-omedGateway又称为bastionhost。这种结构成本低,但是它有单点失败的问题。这种结构没有增加网络安全的自我防卫能力,而它往往是受“黑客”攻击的首选目标,它自己一旦被攻破,整个网络也就暴露了。
Screened-host方式中的Screeningrouter为保护Bastionhost的安全建立了一道屏障。它将所有进入的信息先送往Bastionhost,并且只接受来自Bastionhost的数据作为出去的数据。这种结构依赖Screeningrouter和Bastionhost,只要有一个失败,整个网络就暴露了。
包含两个Screeningrouter和两个Bastionhost。在公共网络和私有网络之间构成了一个隔离网,称之为”停火区”(DMZ,即DemilitarizedZone),Bastionhost放置在“停火区”内。这种结构安全性好,只有当两个安全单元被破坏后,网络才被暴露,但是成本也很昂贵。
防火墙就是一种过滤塞(你这么理解不算错),你可以让你喜欢的东西通过这个塞子,别的玩意都统统过滤掉。在网络的世界里,要由防火墙过滤的就是承载通信数据的通信包。
防火墙天下的防火墙至少都会说两个词:Yes或者No。直接说就是接受或者拒绝。最简单的防火墙是以太网桥。但几乎没有人会认为这种原始防火墙能管多大用。大多数防火墙采用的技术和标准可谓五花八门。这些防火墙的形式多种多样:有的取代系统上已经装备的TCP/IP协议栈;有的在已有的协议栈上建立自己的软件模块;有的干脆就是独立的一套操作系统。还有一些应用型的防火墙只对特定类型的网络连接提供保护(比如SMTP或者HTTP协议等)。还有一些基于硬件的防火墙产品其实应该归入安全路由器一类。以上的产品都可以叫做防火墙,因为他们的工作方式都是一样的:分析出入防火墙的数据包,决定放行还是把他们扔到一边。
所有的防火墙都具有IP地址过滤功能。这项任务要检查IP包头,根据其IP源地址和目标地址作出放行/丢弃决定。看看下面这张图,两个网段之间隔了一个防火墙,防火墙的一端有台UNIX计算机,另一边的网段则摆了台PC客户机。
防火墙当PC客户机向UNIX计算机发起请求时,PC的客户程序就产生一个TCP包并把它传给本地的协议栈准备发送。接下来,协议栈将这个TCP包“塞”到一个IP包里,然后通过PC机的TCP/IP栈所定义的路径将它发送给UNIX计算机。在这个例子里,这个IP包必须经过横在PC和UNIX计算机中的防火墙才能到达UNIX计算机。
我们“命令”(用专业术语来说就是配制)防火墙把所有发给UNIX计算机的数据包都给拒了,完成这项工作以后,“心肠”比较好的防火墙还会通知客户程序一声呢!既然发向目标的IP数据没法转发,那么只有和UNIX计算机同在一个网段的用户才能访问UNIX计算机了。
防火墙还有一种情况,你可以命令防火墙专给那台可怜的PC机找茬,别人的数据包都让过就它不行。这正是防火墙最基本的功能:根据IP地址做转发判断。但要上了大场面这种小伎俩就玩不转了,由于黑客们可以采用IP地址欺骗技术,伪装成合法地址的计算机就可以穿越信任这个地址的防火墙了。不过根据地址的转发决策机制还是最基本和必需的。另外要注意的一点是,不要用DNS主机名建立过滤表,对DNS的伪造比IP地址欺骗要容易多了。
仅仅依靠地址进行数据过滤在实际运用中是不可行的,还有个原因就是目标主机上往往运行着多种通信服务,比方说,我们不想让用户采用的方式连到系统,但这绝不等于我们非得同时禁止他们使用SMTP/POP邮件服务器吧?所以说,在地址之外我们还要对服务器的TCP/UDP端口进行过滤。
比如,默认的服务连接端口号是23。假如我们不许PC客户机建立对UNIX计算机(在这时我们当它是服务器)的连接,那么我们只需命令防火墙检查发送目标是UNIX服务器的数据包,把其中具有23目标端口号的包过滤就行了。这样,我们把IP地址和目标服务器TCP/UDP端口结合起来不就可以作为过滤标准来实现相当可靠的防火墙了吗?不,没这么简单。
防火墙TCP/IP是一种端对端协议,每个网络节点都具有唯一的地址。网络节点的应用层也是这样,处于应用层的每个应用程序和服务都具有自己的对应“地址”,也就是端口号。地址和端口都具备了才能建立客户机和服务器的各种应用之间的有效通信联系。比如,服务器在端口23侦听入站连接。同时客户机也有一个端口号,否则客户机的IP栈怎么知道某个数据包是属于哪个应用程序的呢?
由于历史的原因,几乎所有的TCP/IP客户程序都使用大于1023的随机分配端口号。只有UNIX计算机上的root用户才可以访问1024以下的端口,而这些端口还保留为服务器上的服务所用。所以,除非我们让所有具有大于1023端口号的数据包进入网络,否则各种网络连接都没法正常工作。
这对防火墙而言可就麻烦了,如果阻塞入站的全部端口,那么所有的客户机都没法使用网络资源。因为服务器发出响应外部连接请求的入站(就是进入防火墙的意思)数据包都没法经过防火墙的入站过滤。反过来,打开所有高于1023的端口就可行了吗?也不尽然。由于很多服务使用的端口都大于1023,比如Xclient、基于RPC的NFS服务以及为数众多的非UNIXIP产品等(NetWare/IP)就是这样的。那么让达到1023端口标准的数据包都进入网络的话网络还能说是安全的吗?连这些客户程序都不敢说自己是足够安全的。
OK,咱们换个思路。我们给防火墙这样下命令:已知服务的数据包可以进来,其他的全部挡在防火墙之外。比如,如果你知道用户要访问Web服务器,那就只让具有源端口号80的数据包进入网络:
不过新问题又出现了。首先,你怎么知道你要访问的服务器具有哪些正在运行的端口号呢?象HTTP这样的服务器本来就是可以任意配置的,所采用的端口也可以随意配置。如果你这样设置防火墙,你就没法访问哪些没采用标准端口号的的网络站点了!反过来,你也没法保证进入网络的数据包中具有端口号80的就一定来自Web服务器。有些黑客就是利用这一点制作自己的入侵工具,并让其运行在本机的80端口!
防火墙源地址我们不相信,源端口也信不得了,这个不得不与黑客共舞的疯狂世界上还有什么值得我们信任呢?还好,事情还没到走投无路的地步。对策还是有的,不过这个办法只能用于TCP协议。
TCP是一种可靠的通信协议,“可靠”这个词意味着协议具有包括纠错机制在内的一些特殊性质。为了实现其可靠性,每个TCP连接都要先经过一个“握手”过程来交换连接参数。还有,每个发送出去的包在后续的其他包被发送出去之前必须获得一个确认响应。但并不是对每个TCP包都非要采用专门的ACK包来响应,实际上仅仅在TCP包头上设置一个专门的位就可以完成这个功能了。所以,只要产生了响应包就要设置ACK位。连接会话的第一个包不用于确认,所以它就没有设置ACK位,后续会话交换的TCP包就要设置ACK位了。
举个例子,PC向远端的Web服务器发起一个连接,它生成一个没有设置ACK位的连接请求包。当服务器响应该请求时,服务器就发回一个设置了ACK位的数据包,同时在包里标记从客户机所收到的字节数。然后客户机就用自己的响应包再响应该数据包,这个数据包也设置了ACK位并标记了从服务器收到的字节数。通过监视ACK位,就可以将进入网络的数据限制在响应包的范围之内。于是,远程系统根本无法发起TCP连接但却能响应收到的数据包了。
这套机制还不能算是无懈可击,简单地举个例子,假设我们有台内部Web服务器,那么端口80就不得不被打开以便外部请求可以进入网络。还有,对UDP包而言就没法监视ACK位了,因为UDP包压根就没有ACK位。还有一些TCP应用程序,比如FTP,连接就必须由这些服务器程序自己发起。
一般的服务对所有的通信都只使用一对端口号,FTP程序在连接期间则使用两对端口号。第一对端口号用于FTP的“命令通道”提供登录和执行命令的通信链路,而另一对端口号则用于FTP的“数据通道”提供客户机和服务器之间的文件传送。
在通常的FTP会话过程中,客户机首先向服务器的端口21(命令通道)发送一个TCP连接请求,然后执行LOGIN、DIR等各种命令。一旦用户请求服务器发送数据,FTP服务器就用其20端口(数据通道)向客户的数据端口发起连接。问题来了,如果服务器向客户机发起传送数据的连接,那么它就会发送没有设置ACK位的数据包,防火墙则按照刚才的规则拒绝该数据包同时也就意味着数据传送没戏了。通常只有高级的、也就是够聪明的防火墙才能看出客户机刚才告诉服务器的端口,然后才许可对该端口的入站连接。
好了,回过头来看看怎么解决UDP问题。刚才说了,UDP包没有ACK位所以不能进行ACK位过滤。UDP是发出去不管的“不可靠”通信,这种类型的服务通常用于广播、路由、多媒体等广播形式的通信任务。NFS、DNS、WINS、NetBIOS-over-TCP/IP和NetWare/IP都使用UDP。
看来最简单的可行办法就是不允许建立入站UDP连接。防火墙设置为只许转发来自内部接口的UDP包,来自外部接口的UDP包则不转发。问题是,比方说,DNS名称解析请求就使用UDP,如果你提供DNS服务,至少得允许一些内部请求穿越防火墙。还有IRC这样的客户程序也使用UDP,如果要让你的用户使用它,就同样要让他们的UDP包进入网络。我们能做的就是对那些从本地到可信任站点之间的连接进行限制。但是,什么叫可信任!如果黑客采取地址欺骗的方法不又回到老路上去了吗?
有些新型路由器可以通过“记忆”出站UDP包来解决这个问题:如果入站UDP包匹配出站UDP包的目标地址和端口号就让它进来。如果在内存中找不到匹配的UDP包就只好拒绝它了!但是,如何确信产生数据包的外部主机就是内部客户机希望通信的服务器呢?如果黑客诈称DNS服务器的地址,那么他在理论上当然可以从附着DNS的UDP端口发起攻击。只要你允许DNS查询和反馈包进入网络这个问题就必然存在。办法是采用代理服务器。
所谓代理服务器,顾名思义就是代表你的网络和外界打交道的服务器。代理服务器不允许存在任何网络内外的直接连接。它本身就提供公共和专用的DNS、邮件服务器等多种功能。代理服务器重写数据包而不是简单地将其转发了事。给人的感觉就是网络内部的主机都站在了网络的边缘,但实际上他们都躲在代理的后面,露面的不过是代理这个假面具。
防火墙加强了一些安全策略。如果你没有在放置防火墙之前制定安全策略的话,那么就是制定的时候了。它可以不被写成书面形式,但是同样可以作为安全策略。如果你还没有明确关于安全策略应当做什么的话,安装防火墙就是你能做的最好的保护你的站点的事情,并且要随时维护它也是很不容易的事情。要想有一个好的防火墙,你需要好的安全策略---写成书面的并且被大家所接受。
除非在特别简单的案例中,防火墙很少是单一的设备,而是一组设备。就算你购买的是一个商用的“all-in-one”防火墙应用程序,你同样得配置其他机器(例如你的网络服务器)来与之一同运行。这些其他的机器被认为是防火墙的一部分,这包含了对这些机器的配置和管理方式,他们所信任的是什么,什么又将他们作为可信的等等。你不能简单的选择一个叫做“防火墙”的设备却期望其担负所有安全责任。
选择防火墙更像买房子而不是选择去哪里度假。防火墙和房子很相似,你必须每天和它待在一起,你使用它的期限也不止一两个星期那么多。都需要维护否则都会崩溃掉。建设防火墙需要仔细的选择和配置一个解决方案来满足你的需求,然后不断的去维护它。需要做很多的决定,对一个站点是正确的解决方案往往对另外站点来说是错误的。
并不要指望防火墙靠自身就能够给予你安全。防火墙保护你免受一类攻击的威胁,人们尝试从外部直接攻击内部。但是却不能防止从LAN内部的攻击,它甚至不能保护你免受所有那些它能检测到的攻击。
正常情况下你的手段是拒绝除了你知道必要和安全的服务以外的任何服务。但是新的漏洞每天都出现,关闭不安全的服务意味着一场持续的战争。
人们都喜欢做不安全的事情。如果你允许所有的请求的话,你的网络就会很不安全。如果你拒绝所有的请求的话,你的网络同样是不安全的,你不会知道不安全的东西隐藏在哪里。那些不能和你一同工作的人将会对你不利。你需要找到满足用户需求的方式,虽然这些方式会带来一定量的风险。
防火墙机器不能像普通计算机那样安装厂商提供的全部软件分发。作为防火墙一部分的机器必须保持最小的安装。即使你认为有些东西是安全的也不要在你不需要的时候安装它。
不要建立基于单一来源的信息的防火墙,特别是该资源不是来自厂商。有许多可以利用的资源:例如厂商信息,我们所编写的书,邮件组,和网站。
你买的房子今天可能已经不适合你了。同样的,你一年以前所安装的防火墙对于你现在的情况已经不是最好的解决方案了。对于防火墙你应当经常性的评估你的决定并确认你仍然有合理的解决方案。更改你的防火墙,就像搬新家一样,需要明显的努力和仔细的计划。
做好最坏的心理准备。防火墙不是万能的,对一些新出现的病毒和木马可能没有反映,要时常的更新.机器可能会停止运行,动机良好的用户可能会做错事情,有恶意动机的用户可能做坏的事情并成功的打败你。但是一定要明白当这些事情发生的时候这并不是一个完全的灾难,因为病毒发展迅速,而且品种繁多,防火墙不可能全部都能阻拦,所以要做好最坏的心理准备的同时还要为下一步预防做好打算,加强自身的安全防护。
OutpostFirewallFree20096.5.1.2725.381.0687-免费版本
搜狗百科词条内容由用户共同创建和维护,不代表搜狗百科立场。如果您需要医学、法律、投资理财等专业领域的建议,我们强烈建议您独自对内容的可信性进行评估,并咨询相关专业人士。