防火墙的相关知识
防火墙在网络中经常是以两种图标出现的。一种图标非常形象,真正像一堵墙一样。而另一种图标则是从防火墙的过滤机制来形象化的,在图标中有一个二极管图标。而二极管我们知道,它具有单向导电性,这样也就形象地说明了防火墙具有单向导通性。这看起来与防火墙过滤机制有些矛盾,不过它却完全体现了防火墙初期的设计思想,同时也在相当大程度上体现了当前防火墙的过滤机制。因为防火最初的设计思想是对内部网络总是信任的,而对外部网络却总是不信任的,所以最初的防火墙是只对外部进来的通信进行过滤,而对内部网络用户发出的通信不作限制。当然防火墙在过滤机制上有所改变,不仅对外部网络发出的通信连接要进行过滤,对内部网络用户发出的部分连接请求和数据包同样需要过滤,但防火墙仍只对符合安全策略的通信通过,也可以说具有“单向导通”性。
防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称之为“防火墙”。其实与防火墙一起起作用的就是“门”。如果没有门,各房间的人如何沟通呢,这些房间的人又如何进去呢?当火灾发生时,这些人又如何逃离现场呢?这个门就相当于我们这里所讲的防火墙的“安全策略”,所以在此我们所说的防火墙实际并不是一堵实心墙,而是带有一些小孔的墙。这些小孔就是用来留给那些允许进行的通信,在这些小孔中安装了过滤机制,也就是上面所介绍的“单向导通性”。
我们通常所说的网络防火墙是借鉴了古代真正用于防火的防火墙的喻义,它指的是隔离在本地网络与外界网络之间的一道防御系统。防火可以使企业内部局域网(LAN)网络与Internet之间或者与其他外部网络互相隔离、限制网络互访用来保护内部网络。 防火墙的硬件体系结构曾经历过通用CPU架构、ASIC架构和网络处理器架构,他们各自的特点分别如下:
通用CPU架构
通用CPU架构最常见的是基于Intel X86架构的防火墙,在百兆防火墙中Intel X86架构的硬件以其高灵活性和扩展性一直受到防火墙厂商的青睐;由于采用了PCI总线接口,Intel X86架构的硬件虽然理论上能达到2Gbps的吞吐量甚至更高,但是在实际应用中,尤其是在小包情况下,远远达不到标称性能,通用CPU的处理能力也很有限。
国内安全设备主要采用的就是基于X86的通用CPU架构。
ASIC架构
ASIC(Application Specific Integrated Circuit,专用集成电路)技术是国外高端网络设备几年前广泛采用的技术。由于采用了硬件转发模式、多总线技术、数据层面与控制层面分离等技术, ASIC架构防火墙解决了带宽容量和性能不足的问题,稳定性也得到了很好的保证。
ASIC技术的性能优势主要体现在网络层转发上,而对于需要强大计算能力的应用层数据的处理则不占优势,而且面对频繁变异的应用安全问题,其灵活性和扩展性也难以满足要求。
由于该技术有较高的技术和资金门槛,主要是国内外知名厂商在采用,国外主要代表厂商是Netscreen,国内主要代表厂商为天融信、网御神州。
网络处理器架构
由于网络处理器所使用的微码编写有一定技术难度,难以实现产品的最优性能,因此网络处理器架构的防火墙产品难以占有大量的市场份额。
基于国产CPU的防火墙
随着国内通用处理器的发展,逐渐发展了基于中国芯的防火墙,主要架构为国产龙芯2F+FPGA的协议处理器,主要应用政府、军队等对国家安全敏感的行业。代表厂商有中科院计算所、博华科技等公司。 防火墙配置有三种:Dual-homed方式、Screened- host方式和Screened-subnet方式。
Dual-homed方式最简单。 Dual-homedGateway放置在两个网络之间,这个Dual-omedGateway又称为bastionhost。这种结构成本低,但是它有单点失败的问题。这种结构没有增加网络安全的自我防卫能力,而它往往是受“黑客”攻击的首选目标,它自己一旦被攻破,整个网络也就暴露了。
Screened-host方式中的Screeningrouter为保护Bastionhost的安全建立了一道屏障。它将所有进入的信息先送往Bastionhost,并且只接受来自Bastionhost的数据作为出去的数据。这种结构依赖Screeningrouter和Bastionhost,只要有一个失败,整个网络就暴露了。
Screened-subnet包含两个Screeningrouter和两个Bastionhost。在公***网络和私有网络之间构成了一个隔离网,称之为”停火区”(DMZ,即DemilitarizedZone),Bastionhost放置在“停火区”内。这种结构安全性好,只有当两个安全单元被破坏后,网络才被暴露,但是成本也很昂贵。 第一代防火墙
第一代防火墙技术几乎与路由器同时出现,采用了包过滤(Packet filter)技术。
第二代防火墙
第一代防火墙技术主要在路由器上实现,后来将此安全功能独立出来专门用来实现安全过滤功能。1989年,贝尔实验室的Dave Presotto和Howard Trickey推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙——应用层防火墙(代理防火墙)的初步结构。
第三代防火墙
代理防火墙出现,原来从路由器上独立出来的安全软件迅速发展,并引发了对承载安全软件本身的操作系统的安全需求。即对防火墙本身的安全问题的安全需求。
第四代防火墙
1992年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamic packet filter)技术的第四代防火墙,后来演变为所说的状态监视(Stateful inspection)技术。1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的产品。
第五代防火墙
1998年,NAI公司推出了一种自适应代理(Adaptive proxy)技术,并在其产品Gauntlet Firewall for NT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。
一体化安全网关UTM
UTM统一威胁管理,在防火墙基础上发展起来的,具备防火墙、IPS、防病毒、防垃圾邮件等综合功能的设备。由于同时开启多项功能会大大降低UTM的处理性能,因此主要用于对性能要求不高的中低端领域。在中低端领域,UTM已经出现了代替防火墙的趋势,因为在不开启附加功能的情况下,UTM本身就是一个防火墙,而附加功能又为用户的应用提供了更多选择。在高端应用领域,比如电信、金融等行业,仍然以专用的高性能防火墙、IPS为主流。 防火墙就是一种过滤塞(你这么理解不算错),你可以让你喜欢的东西通过这个塞子,别的玩意都统统过滤掉。在网络的世界里,要由防火墙过滤的就是承载通信数据的通信包。
天下的防火墙至少都会说两个词:Yes或者No。直接说就是接受或者拒绝。最简单的防火墙是以太网桥。但几乎没有人会认为这种原始防火墙能管多大用。大多数防火墙采用的技术和标准可谓五花八门。这些防火墙的形式多种多样:有的取代系统上已经装备的TCP/IP协议栈;有的在已有的协议栈上建立自己的软件模块;有的干脆就是独立的一套操作系统。还有一些应用型的防火墙只对特定类型的网络连接提供保护(比如SMTP或者HTTP协议等)。还有一些基于硬件的防火墙产品其实应该归入安全路由器一类。以上的产品都可以叫做防火墙,因为他们的工作方式都是一样的:分析出入防火墙的数据包,决定放行还是把他们扔到一边。
所有的防火墙都具有IP地址过滤功能。这项任务要检查IP包头,根据其IP源地址和目标地址作出放行/丢弃决定。看看下面这张图,两个网段之间隔了一个防火墙,防火墙的一端有台UNIX计算机,另一边的网段则摆了台PC客户机。
当PC客户机向UNIX计算机发起telnet请求时,PC的telnet客户程序就产生一个TCP包并把它传给本地的协议栈准备发送。接下来,协议栈将这个TCP包“塞”到一个IP包里,然后通过PC机的TCP/IP栈所定义的路径将它发送给UNIX计算机。在这个例子里,这个IP包必须经过横在PC和UNIX计算机中的防火墙才能到达UNIX计算机。
我们“命令”(用专业术语来说就是配制)防火墙把所有发给UNIX计算机的数据包都给拒了,完成这项工作以后,“心肠”比较好的防火墙还会通知客户程序一声呢!既然发向目标的IP数据没法转发,那么只有和UNIX计算机同在一个网段的用户才能访问UNIX计算机了。
还有一种情况,你可以命令防火墙专给那台可怜的PC机找茬,别人的数据包都让过就它不行。这正是防火墙最基本的功能:根据IP地址做转发判断。但要上了大场面这种小伎俩就玩不转了,由于黑客们可以采用IP地址欺骗技术,伪装成合法地址的计算机就可以穿越信任这个地址的防火墙了。不过根据地址的转发决策机制还是最基本和必需的。另外要注意的一点是,不要用DNS主机名建立过滤表,对DNS的伪造比IP地址欺骗要容易多了。
服务器TCP/UDP 端口过滤
仅仅依靠地址进行数据过滤在实际运用中是不可行的,还有个原因就是目标主机上往往运行着多种通信服务,比方说,我们不想让用户采用 telnet的方式连到系统,但这绝不等于我们非得同时禁止他们使用SMTP/POP邮件服务器吧?所以说,在地址之外我们还要对服务器的TCP/ UDP端口进行过滤。
比如,默认的telnet服务连接端口号是23。假如我们不许PC客户机建立对UNIX计算机(在这时我们当它是服务器)的telnet连接,那么我们只需命令防火墙检查发送目标是UNIX服务器的数据包,把其中具有23目标端口号的包过滤就行了。这样,我们把IP地址和目标服务器TCP/UDP端口结合起来不就可以作为过滤标准来实现相当可靠的防火墙了吗?不,没这么简单。
客户机也有TCP/UDP端口
TCP/IP是一种端对端协议,每个网络节点都具有唯一的地址。网络节点的应用层也是这样,处于应用层的每个应用程序和服务都具有自己的对应“地址”,也就是端口号。地址和端口都具备了才能建立客户机和服务器的各种应用之间的有效通信联系。比如,telnet服务器在端口23侦听入站连接。同时telnet客户机也有一个端口号,否则客户机的IP栈怎么知道某个数据包是属于哪个应用程序的呢?
由于历史的原因,几乎所有的TCP/IP客户程序都使用大于1023的随机分配端口号。只有UNIX计算机上的root用户才可以访问1024以下的端口,而这些端口还保留为服务器上的服务所用。所以,除非我们让所有具有大于1023端口号的数据包进入网络,否则各种网络连接都没法正常工作。
这对防火墙而言可就麻烦了,如果阻塞入站的全部端口,那么所有的客户机都没法使用网络资源。因为服务器发出响应外部连接请求的入站(就是进入防火墙的意思)数据包都没法经过防火墙的入站过滤。反过来,打开所有高于1023的端口就可行了吗?也不尽然。由于很多服务使用的端口都大于1023,比如X client、基于RPC的NFS服务以及为数众多的非UNIX IP产品等(NetWare/IP)就是这样的。那么让达到1023端口标准的数据包都进入网络的话网络还能说是安全的吗?连这些客户程序都不敢说自己是足够安全的。
双向过滤
OK,咱们换个思路。我们给防火墙这样下命令:已知服务的数据包可以进来,其他的全部挡在防火墙之外。比如,如果你知道用户要访问Web服务器,那就只让具有源端口号80的数据包进入网络:
不过新问题又出现了。首先,你怎么知道你要访问的服务器具有哪些正在运行的端口号呢? 象HTTP这样的服务器本来就是可以任意配置的,所采用的端口也可以随意配置。如果你这样设置防火墙,你就没法访问哪些没采用标准端口号的的网络站点了!反过来,你也没法保证进入网络的数据包中具有端口号80的就一定来自Web服务器。有些黑客就是利用这一点制作自己的入侵工具,并让其运行在本机的80端口!
检查ACK位
源地址我们不相信,源端口也信不得了,这个不得不与黑客***舞的疯狂世界上还有什么值得我们信任呢?还好,事情还没到走投无路的地步。对策还是有的,不过这个办法只能用于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带来的困难
一般的Internet服务对所有的通信都只使用一对端口号,FTP程序在连接期间则使用两对端口号。第一对端口号用于FTP的“命令通道”提供登录和执行命令的通信链路,而另一对端口号则用于FTP的“数据通道”提供客户机和服务器之间的文件传送。
在通常的FTP会话过程中,客户机首先向服务器的端口21(命令通道)发送一个TCP连接请求,然后执行LOGIN、DIR等各种命令。一旦用户请求服务器发送数据,FTP服务器就用其20端口 (数据通道)向客户的数据端口发起连接。问题来了,如果服务器向客户机发起传送数据的连接,那么它就会发送没有设置ACK位的数据包,防火墙则按照刚才的规则拒绝该数据包同时也就意味着数据传送没戏了。通常只有高级的、也就是够聪明的防火墙才能看出客户机刚才告诉服务器的端口,然后才许可对该端口的入站连接。
UDP端口过滤
好了,我们回过头来看看怎么解决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”防火墙应用程序,你同样得配置其他机器(例如你的网络服务器)来与之一同运行。这些其他的机器被认为是防火墙的一部分,这包含了对这些机器的配置和管理方式,他们所信任的是什么,什么又将他们作为可信的等等。你不能简单的选择一个叫做“防火墙”的设备却期望其担负所有安全责任。
2. 防火墙并不是现成的随时获得的产品
选择防火墙更像买房子而不是选择去哪里度假。防火墙和房子很相似,你必须每天和它待在一起,你使用它的期限也不止一两个星期那么多。都需要维护否则都会崩溃掉。建设防火墙需要仔细的选择和配置一个解决方案来满足你的需求,然后不断的去维护它。需要做很多的决定,对一个站点是正确的解决方案往往对另外站点来说是错误的。
3. 防火墙并不会解决你所有的问题
并不要指望防火墙靠自身就能够给予你安全。防火墙保护你免受一类攻击的威胁,人们尝试从外部直接攻击内部。但是却不能防止从LAN内部的攻击,它甚至不能保护你免受所有那些它能检测到的攻击。
4. 使用默认的策略
正常情况下你的手段是拒绝除了你知道必要和安全的服务以外的任何服务。但是新的漏洞每天都出现,关闭不安全的服务意味着一场持续的战争。
5. 有条件的妥协,而不是轻易的
人们都喜欢做不安全的事情。如果你允许所有的请求的话,你的网络就会很不安全。如果你拒绝所有的请求的话,你的网络同样是不安全的,你不会知道不安全的东西隐藏在哪里。那些不能和你一同工作的人将会对你不利。你需要找到满足用户需求的方式,虽然这些方式会带来一定量的风险。
6. 使用分层手段
并在一个地点以来单一的设备。使用多个安全层来避免某个失误造成对你关心的问题的侵害。
7. 只安装你所需要的
防火墙机器不能像普通计算机那样安装厂商提供的全部软件分发。作为防火墙一部分的机器必须保持最小的安装。即使你认为有些东西是安全的也不要在你不需要的时候安装它。
8. 使用可以获得的所有资源
不要建立基于单一来源的信息的防火墙,特别是该资源不是来自厂商。有许多可以利用的资源:例如厂商信息,我们所编写的书,邮件组,和网站。
9. 只相信你能确定的
不要相信图形界面的手工和对话框或是厂商关于某些东西如何运行的声明,检测来确定应当拒绝的连接都拒绝了。检测来确定应当允许的连接都允许了。
10. 不断的重新评价决定
你买的房子今天可能已经不适合你了。同样的,你一年以前所安装的防火墙对于你现在的情况已经不是最好的解决方案了。对于防火墙你应当经常性的评估你的决定并确认你仍然有合理的解决方案。更改你的防火墙,就像搬新家一样,需要明显的努力和仔细的计划。
11. 要对失败有心理准备
做好最坏的心理准备。防火墙不是万能的,对一些新出现的病毒和木马可能没有反映,要时常的更新.机器可能会停止运行,动机良好的用户可能会做错事情,有恶意动机的用户可能做坏的事情并成功的打败你。但是一定要明白当这些事情发生的时候这并不是一个完全的灾难,因为病毒发展迅速,而且品种繁多,防火墙不可能全部都能阻拦,所以要做好最坏的心理准备的同时还要为下一步预防做好打算,加强自身的安全防护。 Online Armor Free 4.0.0.35-免费版本
Malware Defender 2.6.0-国产防火墙
Kaspersky Internet Security 2010 9.0.0.736
Privatefirewall 7.0.20.36-免费版本
Outpost Firewall Free 2009 6.5.1.2725.381.0687-免费版本
ZoneAlarm Extreme Security 9.1.008.000
Norton Internet Security 2010 17.5.0.127
Jetico Personal Firewall 2.1.0.7.2412
BitDefender Internet Security 2010 13.0.19.347
Trend Micro Internet Security Pro 2010 17.50.1647.0000
avast! Internet Security 5.0.418.0
McAfee Internet Security 2010 11.0.378
Panda Internet Security 2010 15.01.00 1、如何关闭windows防火墙 a:打开“开始”菜单,“运行”输入control命令打开控制面板; b:在控制面板中找到“防火墙”图标双击打开; c:选择“关闭(不推荐)”并确定即可关闭防火墙。
2、如何打开windows防火墙 只需将关闭防火墙的第三步改成“启用(推荐)”即可开启示windows防火墙。