防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称之为“防火墙”。与防火墙一起起作用的就是“门”。如果没有门,各房间的人将无法沟通。当火灾发生时,这些人还须从门逃离现场。这个门就相当于我们这里所讲的防火墙的“安全策略”,所以在此我们所说的防火墙实际并不是一堵实心墙,而是带有一些小门的墙。这些小门就是用来留给那些允许进行的通信,在这些小门中安装了过滤机制。
网络防火墙是借鉴了古代真正用于防火的防火墙的喻义,它指的是隔离在本地网络与外界网络之间的一道防御系统。防火墙可以使企业内部局域网(LAN)网络与Internet之间或者与其他外部网络互相隔离、网络互访用来保护内部网络,防止发生不可预测的、潜在破坏性的侵入。
典型的防火墙具有以下三个方面的基本特性:
(1)内部网络和外部网络之间的所有网络数据流都必须经过防火墙
这是防火墙所处网络位置特性,同时也是一个前提。因为只有当防火墙是内、外部网络之间通信的唯一通道,才可以全面、有效地保护企业内部网络不受侵害。 根据美国国家制定的《信息保障技术框架》,防火墙适用于用户网络系统的边界,属于用户网络边界的安全保护设备。所谓网络边界即是采用不同安全策略的两个网络的连接处,比如用户网络和Internet之间连接、和其它业务往来单位的网络连接、用户内部网络不同部门之间的连接等。防火墙的目的就是在网络连接之间建立一个安全控制点,通过允许、拒绝或重新定向经过防火墙的数据流,实现对进、出内部网络的服务和访问的审计和控制。
(2)只有符合安全策略的数据流才能通过防火墙
防火墙最基本的功能是确保网络流量的合法性,并在此前提下将网络的流量快速地从一条链路转发到另外的链路上去。从最早的防火墙模型开始谈起,原始的防火墙是一台“双穴主机”,即具备两个网络接口,同时拥有两个网络层地址。防火墙将网络流量通过相应的网络接口接收上来,按照协议栈的层次结构顺序上传,在适当的协议层进行访问规则和安全审查,然后将符合通过条件的报文从相应的网络接口送出,而对于那些不符合通过条件的报文则予以阻断。因此,从这个角度上来说,防火墙是一个类似于桥接或路由器的、多端口的(网络接口>=2)转发设备,它跨接于多个分离的物理网段之间,并在报文转发过程之中完成对报文的审查工作。
(3)防火墙自身应具有非常强的抗攻击能力
这是防火墙之所以能担当企业内部网络安全防护重任的先决条件。防火墙处于网络边缘,它就像一个边界卫士一样,每时每刻都要面对黑客的入侵,这样就要求防火墙自身要具有非常强的抗击入侵的能力。其中防火墙操作系统本身的安全性是关键。其次就是防火墙自身具有非常少的服务功能,除了专门的防火墙嵌入系统外,再没有其它应用程序在防火墙上运行。
自从1986年美国Digital公司在Internet上安装了全球第一个商用防火墙系统以来,防火墙技术得到了飞速的发展。目前有几十家公司推出了功能不同的防火墙系统。第一代防火墙,又称包过滤防火墙,主要通过对数据包源地址、目的地址、端口号等参数的检查来决定是否允许该数据包通过,对其进行转发,但这种防火墙很难抵御IP地址欺骗等攻击,而且审计功能很差。第二代防火墙,也称代理服务器,它可提供对网络服务层的控制,在外部网络向被保护的内部网络申请服务时充当代理的作用,这种方法可以有效地防止对内部网络的
1 / 12
直接攻击,安全性较高。第三代防火墙有效地提高了防火墙的安全性,称为状态监控功能防火墙,它可以对每一层的数据包进行检测和监控。随着网络攻击手段和信息安全技术的发展,新一代的功能更加强大、安全性更好的防火墙已经问世,这个阶段的防火墙已超出了传统意义上防火墙的范畴,已经演变成一个全方位的安全技术集成系统,可称之为防火墙,它可以抵御目前常见的网络攻击手段,如IP地址欺骗、特洛伊木马攻击、Internet蠕虫、口令探寻攻击、邮件攻击等等。实际上,这种防火墙具有很多的IDS功能。IDS与防火墙的相互配合使用,VPN和防火墙的相互配合使用将能提供更全面的安全性,也是防火墙发展的趋势。
7.1 防火墙功能及分类 7. 1.1 防火墙的功能
防火墙是网络安全的第一道防线。防火墙在一个机构的私有网络和外部网络间建立一个检查点。这种实现要求所有的流量都要通过这个检查点。一旦这些检查点清楚地建立,防火墙设备就可以监视、过滤所有流入和流出的网络流量。只有经过精心选择的数据包才能通过防火墙,所以网络环境变得更安全。如防火墙可以禁止诸如众所周知的不安全的NFS协议进出受保护网络,这样外部的攻击者就不可能利用这些脆弱的协议来攻击内部网络。防火墙同时可以保护网络免受基于路由的攻击,如IP选项中的源路由攻击和ICMP重定向中的重定向路径。防火墙可以拒绝所有以上类型攻击的报文并通知防火墙管理员。
防火墙可以强化网络安全策略。通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各个主机上相比,防火墙的集中式安全管理在经济性方面占优势。例如在网络访问时,一次一密口令系统和其它的身份认证系统完全可以不必分散在各个主机上,而集中在防火墙一身上。
防火墙可以对网络存取和访问进行监控审计。如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并记录在日志中,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙还能进行适当的报警,并提供网络是否受到监听和攻击的详细信息;另外,收集一个网络的使用和误用情况也是非常重要的。首先可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的控制是否充足。而网络使用统计对网络需求分析和威胁分析等而言也是非常重要的。
防火墙可以防止内部信息的外泄。防火墙在内部网络周围创建了一个保护的边界。并且对于公网隐藏了内部系统的信息。当远程节点侦测内部网络时,他们仅仅能看到防火墙。内部细节如Finger,DNS等服务被很好地隐蔽起来。Finger显示了主机的所有用户的注册名、真名,最后登录时间和使用shell类型等。Finger所显示的信息非常容易被攻击者所获悉并利用。通过Finger攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线上网,这个系统是否在被攻击时引起注意等等。防火墙同样可阻塞有关内部网络中的DNS信息,这样一台主机的域名和IP地址就不会被外界所了解。另外,利用防火墙对内部网络的划分,可实现对内部网的重点网段的隔离,从而了局部重点或敏感网络安全问题对全局网络造成的影响。
除了安全作用,防火墙还可以支持虚拟专用网(VPN)。通过VPN,将企事业单位在地域上分布在全世界各地的LAN或专用子网,通过Internet有机地联成一个整体。不必使用昂
2 / 12
贵的专用通信线路,而且通过使用IPsec等通信安全协议可保证信息在Internet上传递时的安全性。
7.1.2 防火墙的分类
防火墙有许多种形式,有以软件形式运行在普通计算机上的,也有以固件形式设置在路由器之中的。按照不同的角度可对防火墙做出不同的分类。
7.1.2.1 按照软硬件功能分配分类
软件防火墙 软件防火墙运行于特定的计算机上,它需要客户预先安装好的计算机操作系统的支持,一般来说这台计算机就是整个网络的网关。常用的“个人防火墙”也属于这类。软件防火墙就像其它的软件产品一样需要先在计算机上安装并做好配置才可以使用。软件防火墙中具有代表性的产品是Checkpoint。
硬件防火墙 这里说的硬件防火墙是指“所谓的硬件防火墙”。之所以加上\"所谓\"二字是针对芯片级防火墙来说的。它们最大的差别在于是否基于专用的硬件平台。目前市场上大多数防火墙都是这种所谓的硬件防火墙,他们都基于PC架构,就是说,它们和普通的家庭用的PC没有太大区别。在这些PC架构计算机上运行一些经过裁剪和简化的操作系统,最常用的有Unix、Linux和FreeBSD系统。值得注意的是,此类防火墙采用的是别人的内核,因此依然会受到操作系统本身的安全性影响。
芯片级防火墙 芯片级防火墙基于专门的硬件平台。专有的ASIC芯片使它们比其他种类的防火墙速度更快,处理能力更强,性能更高。做这类防火墙最出名的厂商有NetScreen、FortiNet、Cisco等。这类防火墙采用固化于硬件的专用操作系统,防火墙本身的漏洞比较少,不过价格相对比较高昂。
7.1.2.2 按照检查协议深度分类
包(packet)是网络上信息流动的单位,在网上传输的文件一般在发送端被划分成一系列包,经过网络上的中间站点转发,最终到达目的地,然后这些包中的数据又重新组成原来的信息。每个包包括两部分:数据部分和包头,包头中含有源地址和目的地址等信息。防火墙按照其分析网络包的协议深度可分为三种:包过滤防火墙、应用级网关和状态检测防火墙。
包过滤防火墙
包过滤通过拦截数据包,检查包头,过滤掉不应转发的信息,放行合法数据包。包过滤器又称为筛选路由器,它通过将包头信息和管理员设定的规则表比较,如果有一条规则不允许发送某个包,路由器将它丢弃。规则表又称为访问控制表(Access Control Table)。
包过滤规则一般基于网络层之上的部分的或全部的包头信息,例如对于TCP包头信息为:
1.IP协议类型 2.IP源地址 3.IP目的地址 4.IP选择域的内容
3 / 12
5.TCP源端口号 6.TCP目的端口号 7.TCP ACK标识。
另外,TCP的序列号、确认号,IP校验和、分片偏移也往往是要检查的内容。
这类防火墙几乎是与路由器同时产生的。防火墙常常就是一个具备包过滤功能的简单路由器,包过滤是路由器的固有功能。包过滤方式是一种通用、廉价和有效的安全手段。之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能在很大程度上满足绝大多数企业安全要求。
包过滤对于拒绝一些TCP或UDP应用程序的IP地址进入或离开你的网络是很有效的。举个例子,如果想禁止从Internet TELNET到你的内部网络设备中,你需要建立一条包过滤规则。如果在包过滤防火墙的默认是允许所有都可访问,则一条禁止TELNET的包过滤规则如表7-1所示 。
表7-1 包过滤规则 规则号 功能 源IP地址 目标IP地址 源端口 目标端口 协议 1 Discard * * 23 * TCP 2 Discard * * * 23 TCP
上表列出的信息告诉路由器丢弃所有从TCP 23端口出去和进来的数据包。星号说明是
该字段里的任何值。在上面的例子中,如果一个数据包通过这条规则时,若源端口为23,那么它将立刻被丢弃。如果一个数据包通过这条规则时,若目的端口为23时,则当规则中的第二条应用时它会被丢弃。所有其它的数据包都允许通过。
其它一些Internet服务在一条规则里需要更多的项目。例如,FTP使用TCP的20和21端口。假设包过滤防火墙禁止所有的数据包直到遇到特殊的允许时才放行,则该规则如表7-2所示:
表7-2 包过滤规则 规则号 功能 源IP地址 目标IP地址 源端口 目标端口 协议 1 Allow 192.168.1.0 * * * TCP 2 Allow * 192.168.1.0 20 * TCP
上表中规则的第一条允许内部网络地址为192.168.10.0的网段内源端口和目的端口为任意的主机初始化一个TCP的会活。第二条允许任意源端口为20的远程IP地址可以连接内部网络地址为192.168.10.0的任意端口上。规则的第二条不能目标端口是因为主动的FTP客户端是不使用20端口的、当一个主动的FTP客户端发起一个FTP会话时,客户端是使用动态分配的端口号叫做瞬间端口(ephemeral port)。而远程的FTP服务器只探查192.168.10.0 这个网络内端口为20的设备。有经验的黑客可以利用这些规则访问你网络内的任何资源。所以更好的FTP包过滤规则应该如表7-3所示:
表7-3 包过滤规则 规则号 功能 源IP地址 目标IP地址 源端口 目标端口 协议 1 Allow 192.168.1.0 * * 21 TCP 2 Block * 192.168.1.0 20 <1024 TCP 3 Allow * 192.168.1.0 20 * TCPACK=1 第一条规则允许子网192.168. 1.0内的任何主机与任意目标地址且端口为21的进程建立TCP的会话连接。第二条阻止任何源端口为20的远程IP地址访问网络地址为192.168.1.0
4 / 12
且端口小于1024的任意主机。第三条允许源端口为20的任意远程主机访问192.168.1.0网络内主机任意端口。要记住的是这些规则的应用是按照顺序执行的。第三条看上去好像是矛盾的。任何违反第二条规则的包,都会被立刻丢弃掉,第三条规则不会执行。但第三条规则仍然需要是因为包过滤对所有进来和出去的流量进行过滤直到遇到特定的允许规则。
包过滤的优点简单实用,实现成本较低,在应用环境比较简单的情况下,能够以较小的代价在一定程度上保证系统的安全。而且不用改动客户机和主机上的应用程序。但其弱点也是明显的:它用来进行过滤和判别的信息只有网络层和传输层的有限信息,因而各种安全要求不可能充分满足,无法识别基于应用层的恶意侵入,如恶意的Java小程序以及电子邮件中附带的病毒。有经验的黑客很容易伪造IP地址骗过包过滤型防火墙。在许多过滤器中,过滤规则的数目是有的,且随着规则数目的增加,性能会受到很大的影响;由于缺少上下文关联信息,不能有效地过滤如UDP、RPC一类的协议;另外,大多数过滤器中缺少审计和报警机制;而且对安全管理人员素质要求高,建立安全规则时,必须对协议本身及其在不同应用程序中的作用有较深入的理解。因此,过滤器通常是和应用网关配合使用,共同组成防火墙系统。
状态检测防火墙
这类防火墙检查的包内容不局限于IP包头,而是深入到更高层协议。状态检测防火墙具有跟踪TCP连接的能力,记录每个连接的状态,根据这些信息对包进行过滤。并且采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为包状态监测(Stateful Inspection)技术。状态多层检测允许检查OSI七层模型的所有层以决定是否过滤,而不仅仅是网络层。目前很多公司在它们的包过滤防火墙中都使用状态多层检测,也称为基于内容的过滤。
代理
应用代理型防火墙工作在OSI的最高层,即应用层。其特点是完全\"阻隔\"了网络通信流,通过对每种应用服务编制专门的代理程序,实现监视和控制应用层通信流的作用。代理技术与包过滤技术完全不同,包过滤技术是在网络层拦截所有的信息流,代理技术针对每一个特定服务都有一个程序。代理是在应用层实现防火墙的功能,代理的主要特点是有状态性。通过代理网络管理员可以实现比包过滤路由器更严格的安全策略。代理把网络IP地址替换成其它的暂时的地址。这种方法有效地隐藏了真正的网络IP地址,保护了整个网络。代理还有一个用处。当黑客开始活动的时候,所做的第一件事就是踩点,侦查的网络上的弱点。通常都是利用端口扫描。为了防止暴露有用信息,应该尽可能地隐蔽内部系统的配置信息,使之不暴露给潜在的攻击者。代理可以隐藏这些信息,并能对合法用户提供有效的通信。
在代理型防火墙可分为两个不同的类型。
(1)应用网关(Application Gateway)型防火墙
这类防火墙是通过一种代理(Proxy)技术监视并参与一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。它的核心技术就是代理服务器技术。应用级网关能够理解应用层上的协议,能够做复杂一些的访问控制,并做精细的注册。但每一种协议需要相应的代理软件,使用时工作量大,效率不如包过滤防火墙。常用的应用级防火墙已有了相应的代理服务器, 例如: HTTP、 NNTP、 、rlogin、X-Window等,但是,对于新开发的应用,尚没有相应的代理服务,它们将通过包过滤防火墙和一般的代理服务。应用级网关有较好的访问控制,是目前最安全的防火墙技术,但实现困难,而且有的应用级网关缺乏“透明度”。在实际使用中,用户在受信任的网络上通过防火墙访问Internet时,经常会发现存在延迟并且必须进行多次登录(Login)才能访问Internet或Intranet。常见的一些代理防火墙产品有Axent Raptor防火墙和微软
5 / 12
Microsoft Proxy Server。
(2)自适应代理(Adaptive proxy)型防火墙
它是近几年才得到广泛应用的一种新防火墙类型。它可以结合代理类型防火墙的安全性和包过滤防火墙的高速度等优点,在毫不损失安全性的基础之上将代理型防火墙的性能提高10倍以上。组成这种类型防火墙的基本要素有两个:自适应代理服务器与动态包过滤器。
在“自适应代理服务器”与“动态包过滤器”之间存在一个控制通道。在对防火墙进行配置时,用户仅仅将所需要的服务类型、安全级别等信息通过相应Proxy的管理界面进行设置就可以了。然后,自适应代理就可以根据用户的配置信息,决定是使用代理服务从应用层代理请求还是从网络层转发包。如果是后者,它将动态地通知包过滤器增减过滤规则,满足用户对速度和安全性的双重要求。
代理型防火墙的优点是安全性较高,可以针对应用层进行侦测和扫描,对付基于应用层的侵入和病毒都十分有效。而不是像包过滤那样,只是对网络层的数据进行过滤。
代理防火墙的最大缺点就是速度相对比较慢,当用户对内外部网络网关的吞吐量要求比较高时,代理防火墙就会成为内外部网络之间的瓶颈。因为防火墙需要为不同的网络服务建立专门的代理服务,在自己的代理程序为内、外部网络用户建立连接时消耗大量的处理器和存储资源,所以给系统性能带来了一些负面影响,而且可能容易受到拒绝服务攻击。
7.2 防火墙结构
目前比较流行的防火墙结构分别是:双主机型防火墙、主机屏蔽型防火墙和子网屏蔽型防火墙。主机屏蔽防火墙和子网屏蔽防火墙是把路由器和代理服务器结合使用;而双主机防火墙是使用两块的网络适配器。
7.2.1双主机防火墙
双主机防火墙是一种简单而且安全的配置。在双主机防火墙中把一台主机作为本地网和Internet之间的分界线。这台计算机使用两块的网络适配器把每个网络连接起来。当使用双主机防火墙时,系统管理员必须使主机的路由功能失效,这样,该计算机不能通过软件把两个网络连接起来。 双主机防火墙配置的最大缺点是,用户很容易意外地使内部路由有效,并攻破防火墙。图7-1说明了双主机防火墙的配置情况。
双网卡主机
本地网络 网卡1 网卡2 Internet
图7-1双主机防火墙 双主机防火墙是运行一组应用层代理软件或链路层代理软件来工作的。Proxy软件控制数据包从一个网络流向另一个网络。由于主机具有双网络适配器(连接两个网络),这使防火墙可以检测到两个网络上的数据包。防火墙运行proxy软件来控制两个网络上的信息传输,包括两个本地网之间或者一个本地网和Internet之间。
6 / 12
在使用双主机防火墙时,安全性中最重要的是必须使主机内部路由功能失效。随着路由功能的失效,应用层成为网络或者网段之间的唯一路径。网段可以是网络中的任何部分,例如,系统管理员可以把办公网分成销售网段和固定资产网段,并用路由器或者防火墙将这两个网段分开。 在双主机防火墙中,如果用户使内部路由有效,则防火墙将变得无用。例如,如果通过设置主机的内部路由使IP向前,则数据包非常容易避开双主机防火墙应用层的作用。 在Unix环境下双主机防火墙在配置中很容易发生上述错误。一些Unix系统(例如Berkeley Unix)缺省时使路由功能有效。因此在基于Unix系统的网络中,系统管理员必须确认已经使在双主机防火墙中的所有路由无效。如果操作系统没有提供使路由功能无效的接口,系统管理员必须在防火墙内重新配置并重建Unix内核以保证操作系统使路由能力无效。
7.2.2 主机屏蔽防火墙
一个包过滤路由器连接外部网络,同时一个堡垒主机安装在内部网络上。堡垒主机只有一
个网卡,与内部网络连接(如图7-2)。通常在路由器上设立过滤规则,并使这个单网卡堡垒主机成为从Internet惟一可以访问的主机,确保了内部网络不受未被授权的外部用户的攻击。而Intranet内部的客户机,可以受控制地通过屏蔽主机和路由器访问Internet。。图7-2说明了主机
屏蔽防火墙的配置情况。
主机屏
路由器 本地网络 蔽防火
墙
图7-2主机屏蔽防火墙
Internet 7.2.3 子网屏蔽防火墙
这种方法是在Intranet和Internet之间建立一个被隔离的子网,用两个包过滤路由器将这一子网分别与Intranet和Internet分开。两个包过滤路由器放在子网的两端,在子网内构成一个“缓冲地带”(如图7-3),两个路由器一个控制Intranet 数据流,另一个控制Internet数据流,Intranet和Internet均可访问屏蔽子网,但禁止它们穿过屏蔽子网通信。可根据需要在屏蔽子网中安装堡垒主机,为内部网络和外部网络的互相访问提供代理服务,但是来自两网络的访问都必须通过两个包过滤路由器的检查。对于向Internet公开的服务器,像、Mail等Internet服务器也可安装在屏蔽子网内,这样无论是外部用户,还是内部用户都可访问。这种结构的防火墙安全性能高,具有很强的抗攻击能力,但需要的设备多,造价高。
7 / 12
子网
路由器 路由器 屏蔽Internet 本地网络
防火
墙
图7-3子网屏蔽防火墙
子网屏蔽防火墙能够有效地抵制进攻,由于防火墙在一个单独的网络中把主机了。它可以网络进攻,并把损害内部网络的可能性最小化。
7.3 Linux中的防火墙
Linux提供了一个非常优秀的防火墙工具---netfilter/iptables。它完全免费、功能强大、使用灵活、可以对流入和流出的网络包进行精确的控制,且可以在一台低配置机器上很好地运行。netfilter/iptables包含在2.4版本以后的内核中,它可以实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。简单的说,netfilter工作在操作系统内核,iptables是一个工作在用户空间的让用户定义防火墙规则集的程序。Iptables中还包含名为ip6tables的程序,它实现了对IPv6 协议的包过滤功能。
7.3.1 Netfilter框架
Netfilter提供了一个抽象、通用化的框架,该框架定义的一个子功能的实现就是包过滤系统。Netfilter为每种网络协议(IPv4、IPv6等)定义了一套钩子函数(IPv4定义了5个钩子函数),这些钩子函数在数据包流过协议栈的几个关键点时被调用。在这几个点中,协议栈把数据包及钩子函数指针作为参数调用netfilter框架。
内核的任何模块都可以对每种协议的一个或多个钩子进行注册,实现挂接。这样当某个数据包被传递给netfilter框架时,内核能检测是否有任何模块对该协议和钩子函数进行了注册。若注册了,则调用该模块的注册时提供的回调函数,这样,这些模块就有机会检查(可能还会修改)该数据包、丢弃该数据包及指示netfilter将该数据包传入用户空间的队列。那些排队的数据包被传递给用户空间并被异步地处理。通过这种方式,一个用户进程能检查数据包,修改数据包,甚至可以重新将该数据包通过离开内核的同一个钩子函数中注入到内核中。 任何在IP层要被抛弃的IP数据包在真正抛弃之前都要进行检查。例如允许模块检查ip-spoofed包(被路由抛弃)。
IP层的五个HOOK点的位置如下图所示:
8 / 12
Pre ROUTING route Forward Post ROUTING Local In Local Out 本机进程
图7-4 IPv4 的NetFilter框架
五个HOOK点的功能分别是:
1. NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验和等检测),源地址转换在此点进行;ip_input.c中IP_rcv调用。
2. NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;ip_local_deliver中调用
3. NF_IP_FORWARD:要转发的包通过此检测点,FORWORD包过滤在此点进行; 4. NF_IP_POST_ROUTING:所有马上要通过网络设备出去的包通过此检测点,内置的目的地址转换功能(包括地址伪装)在此点进行;
5. NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。
这些点是已经在内核中定义好的,内核模块能够注册在这些HOOK点进行的处理,可使用nf_register_hook函数指定。在数据报经过这些钩子函数时被调用,从而模块可以修改这些数据报,并向netfilter返回如下值: NF_ACCEPT 继续正常传输数据报 NF_DROP 丢弃该数据报,不再传输
NF_STOLEN 模块接管该数据报,不要继续传输该数据报
NF_QUEUE 对该数据报进行排队(通常用于将数据报给用户空间的进程进行处理)
NF_REPEAT 再次调用该钩子函数
Netfilter-iptables由两部分组成,一部分是Netfilter的\"钩子\",另一部分则是指导这些钩子函数如何工作的一套规则,这些规则存储在被称为iptables的数据结构之中。钩子函数通过访问iptables来判断应该返回什么值给Netfilter框架。 在现有内核2.4中已缺省内建了三个iptables:filter、nat和mangle,绝大部分报文处理功能都可以通过在这些内建(built-in)的表格中填入规则完成:
9 / 12
filter,该模块的功能是过滤报文,不作任何修改,或者接受,或者拒绝。它在NF_IP_LOCAL_IN、NF_IP_FORWARD和NF_IP_LOCAL_OUT三处注册了钩子函数,也就是说,所有报文都将经过filter模块的处理。
nat,网络地址转换(Network Address Translation),该模块以Connection Tracking模块为基础,仅对每个连接的第一个报文进行匹配和处理,然后交由Connection Tracking模块将处理结果应用到该连接之后的所有报文。nat在NF_IP_PRE_ROUTING、
NF_IP_POST_ROUTING注册了钩子函数,如果需要,还可以在NF_IP_LOCAL_IN和NF_IP_LOCAL_OUT两处注册钩子,提供对本地报文(出/入)的地址转换。nat仅对报文头的地址信息进行修改,而不修改报文内容,按所修改的部分,nat可分为源NAT(SNAT)和目的NAT(DNAT)两类,前者修改第一个报文的源地址部分,而后者则修改第一个报文的目的地址部分。SNAT可用来实现IP伪装,而DNAT则是透明代理的实现基础。
mangle,属于可以进行报文内容修改的IP Tables,可供修改的报文内容包括MARK、TOS、TTL等,mangle表的操作函数嵌入在Netfilter的NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT两处。
内核编程人员还可以通过注入模块,调用Netfilter的接口函数创建不同于上述三个表的新的iptables。
7.3.2 IPTables
iptables是专门针对2.4.x内核的Netfilter制作的核外配置工具。iptables功能强大,可以对核内的表进行操作,这些操作主要指对其中规则链的添加、修改、清除。关于添加/清除/修改规则的命令的一般语法如下:
$ iptables [-t table] command [match] [target] 其中:
● 表(table):
[-t table] 选项允许使用标准表之外的任何表。Netfilter的五个HOOK点对应着内核中五条不同的规则链和三个不同的规则表。Linux中规则链被组织在三个不同的规则表
中:Filter 、NAT、Mangle。其中Filter针对过滤系统,NAT针对地址转换系统,Mangle针对策略路由和特殊应用。规则链与HOOK点的关系如下:
· Filter:INPUT、FORWARD、OUTPUT · NAT:PREROUTING、POSTROUTING · Mangle:PREROUTING、POSTROUTING
针对主机的安全性主要集中在Filter表中的INPUT和OUTPUT规则链,这两个关键字在添加规则的时候会使用到。表是包含处理特定类型信息包的规则和链的信息包过滤表。该选项不是必需的,如果未指定,则 filter 用作缺省表。
● 命令(command):
command 部分是 iptables 命令的最重要部分。它告诉 iptables 命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则等。
● 匹配(match):
iptables 命令的可选项match 部分指定规则的特征(如源和目的地址、协议等)。匹配分为两大类:通用匹配和特定于协议的匹配。下面是一些重要且常用的通用匹配及其示例和说明:
-p 或 --protocol:协议,规则或者包检查(待检查包)的协议。协议可包含tcp、udp、icmp中的一个或者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在
10 / 12
/etc/protocols中定义的协议名。在协议名前加上\"!\"表示相反的规则。数字0相当于所有all。All是匹配所有协议,是缺省时的选项。
-s 或 --source:指定源地址,可以是主机名、网络名和清楚的IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边\"1\"的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上\"!\"说明指定了相反的地址段。
-d 或 --destination:指定目标地址,具体细节与-s选项相同。 ● 目标(target):
防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定。该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过],DROP[删除], QUEUE[排队],或者 RETURN[返回]。下面是常用的一些目标及其示例和说明:
ACCEPT:当信息包与具有ACCEPT目标的规则完全匹配时,会被接受(允许它前往目的地)。
DROP: 当信息包与具有DROP目标的规则完全匹配时,该信息包将被丢弃,不对它做进一步处理。该目标被指定为“-j DROP”。
REJECT:该目标的工作方式与DROP目标相同,但它比DROP好。和DROP不同,REJECT不会在服务器和客户机上留下死套接字。另外,REJECT将错误消息发回给信息包的发送方。该目标被指定为“-j REJECT”。
RETURN:在规则中设置的 RETURN目标让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的缺省策略处理信息包。它被指定为“-jump RETURN”。
下面给出运用iptables构造防火墙规则的一些简单实例: (1)接受来自指定IP地址的所有流入的数据报: $ iptables -A INPUT -s 203.159.0.10 -j ACCEPT (2)只接受来自指定端口(服务)的数据报: $ iptables -D INPUT --dport 80 -j DROP
(3)(网关)允许转发所有到本地(198.168.10.13)smtp服务器的数据报: $ iptables -A FORWARD -p tcp -d 198.168.10.13 --dport smtp -i eth0 -j ACCEPT (4)(网关)允许转发所有到本地的udp数据报(诸如即时通信等软件产生的数据报): $ iptables -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT (5)拒绝发往WWW服务器的客户端的请求数据报:
$ iptables -A FORWARD -p tcp -d 198.168.80.11 --dport eth0 -j REJECT
(6)将访问10.0.0.1的53端口(DNS)的TCP连接引导到192.168.0.1地址上。 $ iptables -t nat -A PREROUTING -p TCP -i eth0 -d 10.0.0.1 --dport 53 -j DNAT --to-destination 192.168.0.1
根据实际情况,灵活运用Netfilter/iptables框架,生成的相应防火墙规则可以方便、高效地阻断部分网络攻击以及非法数据报,其中的技巧和用法都需要用户通过实践来掌握。另外,如果防火墙配置不当,可能引起诸如、MSN等协议和软件无法使用或者某些功能无法正常使用,也有可能引起RPC(远程过程调用)无法执行,这需要根据实际情况添加配置规则打开相应端口,或配置相应的服务代理程序来开启这些服务。需要特别提醒的是,防火墙并不是万能的,它也可能被内部攻击,完整地网络安全防护体系需要综合使用其他多种防护手段。内部人员由于无法通过Telnet浏览邮件或使用FTP向外发送信息,个别人会对防火墙攻击、破坏。而且,攻击的目标常常是防火墙或防火墙运行的操作系统,这极大地危害了防火墙系统甚至是关键信息系统的安全。
11 / 12
7.4 小结
防火墙是隔离本地网络与外界网络的一道防御系统。防火墙可以使企业内部局域网(LAN)网络与Internet之间或者与其他外部网络互相隔离、网络互访用来保护内部网络。按照防火墙分析网络包的协议深度可分为三种:包过滤防火墙、应用级网关和状态检测防火墙。目前比较流行的防火墙结构分别是:双主机型防火墙、主机屏蔽型防火墙和子网屏蔽型防火墙。主机屏蔽防火墙和子网屏蔽防火墙是把路由器和代理服务器结合使用;而双主机防火墙是使用两块的网络适配器。
本章还介绍了Linux系统中的了防火墙工具netfilter/iptables的原理和使用方法。通过它可它可以实现防火墙、NAT(网络地址翻译)和数据包的各种处理功能。且可以在一台低配置机器上很好地运行。
12 / 12
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- zrrp.cn 版权所有 赣ICP备2024042808号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务