1防火墙的概论1.1防火墙技术现代计算机环境中,由于环境的复杂性和多样性,使得单纯的主机安全防卫越来越无法适应网络时代的要求,网络安全防卫模式在这种情况下应运而生。网络安全服务的最大特点就是将分散的各种安全任务集中到一点来管理,把注意力集中到控制不同主机的网络通信和它们所提供的服务上来。采用网络安全防卫可以获得很多的好处,例如,一个单独的网络防火墙可以保护几百几千台计算机免于防火墙外的攻击,即使内部个别主机的主机防卫水平比较低。防火墙是网络安全防卫的一种典型实例。通常,防火墙被安装在被保护的内部网和外部网/Internet之间的连接点之上,所有进出内部网络的活动都必须经过防火墙的检查,并且实施网络安全策略。也可以吧防火墙看成是一种访问控制机制,决定哪些内部服务允许外部访问,哪些不允许外部访问,反之亦然。从逻辑角度上讲,防火墙是一个分离器和限制器,同时也是一个分析器。防火墙是有效的网络安全控制机制之一。防火墙可以阻止外部网络发生的危险波及内部网络,总的来说其主要功能包括:(1)对特殊端点的访问进行控制:防火墙可以允许外部网访问受保护网的一些主机,而另一些主机被保护起来,防止不必要的访问。(2)提供监视Internet安全和预警的方便端点:防火墙可以对所有通过它的访问进行记录并提供网络使用情况的统计数据。同时它也是审查和记录Internet使用情况的最佳点,帮助网络管理员掌握Internet连接费用和带宽拥挤的详细情况,同时提供了一个减轻部门负担的方法。(3)限制某些用户或信息进入或离开一个被严格控制的子网:通过防火墙可以过滤掉不安的全服务和非法的用户,禁止未授权的用户访问受保护的网络。可以把防火墙设置成为只有预先被允许的服务和用户才能通过防火墙。这样就降低了被保护子网遭受非法攻击的风险性,大大提高了网络安全性。不同的防火墙构造是不一样的,有的是一台主机,有的甚至是一个网络系统。具体要取决于站点的安全要求和投资等综合因素。1.2防火墙的定义防火墙的原始含义是一种建筑,用以防止着火的时候火不至从一个房间蔓延到另一个房间。后来,将其引入到计算机安全的领域来,特别是近年来多用于飞速发展的Internet网络中。所以,有时也叫Internet防火墙。防火墙是在两个网络之间强制实施访问控制策略的一个或一组系统,是有多个部件组成的一个集合,防火墙被放在两个网络之间,并且具有以下特性:所有的从内部到外部或从外部到内部的通信都必须经过防火墙;只有经过内部访问策略授权后的通信才被允许通过;系统本身要具有较高的可靠性。简而言之,防火墙就是用来保护可信网络不受非可信网络侵入的一种机制,但它允许在这两个网络之间的进行通信。这两种网络的最典型的例子就是企业内部网和Internet。从安全策略和网络配置的角度来看,防火墙就是附加了许多安全机制的主机系统或路由器,使得内部网络与Internet之间或者与其他外部网络互相隔离,通过限制网络互访,隐藏主机或子网中的协议和服务,并保护其内部资源不受外部的攻击或滥用。1.3防火墙的基本类型经过十余年的发展过程,目前存在应用不同技术的多种防火墙,这些技术之间的区分不很明显,但从处理的数据对象和实现层次的角度说,大体上可分为包过滤防火墙和应用层网关防火墙两种类型。1.3.1包过滤防火墙的定义包过滤防火墙是在IP层实现的,其处理对象是网络报文/IP包。因此,它可以只用路由器完成。包过滤防火墙根据网络报文的目的IP地址、源IP地址、目的端口、源端口及报文传递方向等报头信息来判断是否允许该报文通过。1.3.2应用网关防火墙的定义应用网关防火墙:它是在应用层实现的,通过对网络服务的代理,检查进出网络的各种服务。其处理对象是各种不同的应用服务。1.4防火墙的应用由于网络通讯基于层次参考模型,所以,不同类型的防火墙也就处理不同层次抽象出的通讯数据。IP包过滤处理网络层数据,应用代理处理应用层数据。随着防火墙技术的不断发展,近年来出现了许多加强功能的防火墙,本质上讲,它们都是这两类基本类型。例如,现在出现了一种可以分析IP包数据区内容的智能型包过滤器,它通过深入检查IP包而得出的有关各种Internet服务的信息,进而进行访问控制,实际上属于包过滤型防火墙。另外,有些防火墙是控制TCP通信会话层,如SOCKS,这种防火墙本质上是应用网关,只是对所有的应用都通过控制连接会话来实施。2LINUX下的防火墙iptables2.1iptables的包过滤功能任何防火墙所具备的最基本的功能就是对数据包进行过滤,从某个角度讲,LINUX防火墙本身也是一种“包过滤防火墙”。在LINUX防火墙中,LINUX内核对到来的每一个数据包进行检查,并从它们的包头中提取出所需要的信息,如目的IP地址、源IP地址、目的端口号、源端口号等,再与已建立的防火墙规则逐条进行比较,并执行所匹配规则的策略,或执行默认策略。必须要注意的是,在制定防火墙过滤规则的时候一般有两个基本的策略方法可供选择:第一个策略是默认允许一切,即在接受所有数据包的基础上明确地禁止那些特殊的、不希望收到的数据包;第二就是默认禁止一切,即首先对所有数据包禁止通过,然后再根据所希望提供的服务去一项一项允许所需要的数据包通过防火墙。一般情况下,第一种策略使启动和运行防火墙变得更加容易,但是却更容易留下安全隐患。通过在防火墙外部接口处对进来的数据包进行过滤的方法可以有效地阻止绝大多数有意或无意地网络攻击,同时,对发出的数据包进行限制,可以明确地指定内部网中哪些主机可以访问互联网,哪些主机只能享用哪些服务或登陆哪些站点,从而实现对内部主机的管理。可以说,在对一些小型内部局域网进行安全保护和网络管理时,包过滤确实是一种简单而有效的手段。2.2iptables的优点netfilter/iptables最大的优点也是ipfwadm和ipchains等以前的工具都无法提供的一种重要功能,就是配置有状态的防火墙。这种防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。防火墙在决定新的信息包过滤时所使用的这些状态信息可以增加其效率和速度。这其中包括4种有效状态,名称分别为INVALID、ESTABLISHED、NEW和RELATED。INVALID状态指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头。状态ESTABLISHED指出该信息包属于已经建立的连接,该连接一直用于发送和接收信息包并且完全有效。状态NEW表示该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。最后,RELATED表示该信息包正在启动新连接,以及它与已建立的连接想关联。netflter/iptables另一个重要的优点是使用非常方便。它使得用户可以轻松完全控制防火墙配置和信息包过滤。并且可以定制自己的规则来满足特定需求,只允许想要的网络流量进入系统。2.3iptables的工作原理2.3.1Netfilter/iptables的概念和作用Netfilter/iptablesIP信息包过滤系统是一种功能强大的工具,它可用于编辑,添加和除去规则。这些规则是防火墙在决定信息包过滤时所遵循和组成的规则,这些规则被存储在专用的信息包过滤表中,而这些表集成在Linux内核中。信息包过滤表的过程中,规则被分组放在所谓的链(chain)中。虽然称Netfilter/iptablesIP信息包过滤系统为“单个实体”,但它实际上由两个组件组成,即Netfilter和iptables。Netfilter组件被称之为“内核空间”(Kernelspace),是内核组成的一部分。Netfilter由一些信息包过滤表组成,这些表中包含内核用来控制信息包过滤处理的规则集和。而Iptables组件是一种工具,也叫“用户空间”(Userspace),它使插入,修改和除去信息包过滤表中的规则变的简单容易。通过使用iptables可以构件自己的定制规则,这些规则存储在内核空间的信息包过滤表中。而且这些规则具有目标,它们告诉内核对来自某些源,前往某些目的地或如何处理具有某些协议类型的信息包。如果某个信息包与规则匹配,那么使用目标ACCEPT允许该信息包通过,还可以使用目标DROP或REJECT来阻塞并杀死信息包。对于信息包执行的其他操作,还有许多其他目标。2.3.2链的作用根据规则处理的信息包的类型,可以将规则分组在链中。处理出站信息包的规则被添加到OUTPUT链中;处理入站信息包的规则被添加到INPUT链中;而处理正在转发的信息包的规则被添加到FORWARD链中,这3个链是基本信息包过滤表中内置的默认主链。此外,还有其他很多可用链的类型(如POSTROUTING和PREROUTING),以及用户自定义的链。每一个链都可以有一个策略来定义“默认目标”。也就是要执行的默认操作,当信息包与链中的任何规则都不匹配的时候执行此操作。2.3.3信息包过滤过程建立规则并将链放在适当的位置后就可以开始进行真正的信息包过滤的工作了,这时候内核空间从用户空间接管工作。信息包到达防火墙的时候,内核先检查信息包的头部信息。特别是信息包的目的地址,这个过程叫“路由”。假如信息包来自外界并前往系统,而且防火墙是打开的,那么内核将其传递到内核空间信息包过滤表的INPUT链中。假如信息包来自系统内部或系统所连接的内部网络上的其他源,并且此信息包要前往另一个外部系统,那么信息包被传递到OUTPUT链中。同样的,将来自外部系统并前往内部系统的信息包传到FORWARD链。然后将信息包的头信息和其所传递到的链中的每条规则进行比对,看它是否与某条规则完全匹配。如果信息包和某条规则匹配,那么内核就对该信息包执行该规则的目标指所定的操作;反之,将它与链中的下一条规则进行比较。如果信息包与链中的任何规则都不匹配,那么内核将参考该链的策略来决定如何处理该信息包。理想的策略应该告诉内核DROP该信息包,如图1所示为这个信息包过滤的过程。图1信息包过滤图3防火墙iptables的配置方法3.1iptables的规则介绍通过向防火墙提供有关对源自某个源地址、到某个目的地址或者具有特定协议类型的信息包要做些什么的指令、规则控制信息包的过滤。通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。3.2iptables的规则要素iptables的语法可以简化为:iptables[-ttable]CMD[chain][rule-matcher][-jtarget]其中:table是表名,CMD是操作命令,chain是链名,rule-matcher是规则匹配器,target是目标动作。表1规则要素功能介绍表table表。Iptables根据其使用的3个表而命名,分别是filter、nat和mangle。包过滤防火墙只使用filter表。表filter是默认的表。command操作命令。其中包括添加、删除、更新等。chains链。对于包过滤防火墙可操作filter表中的INPUT链、OUTPUT链和FORWARD链。也可以操作由用户自己定义的自定义链。matcher规则匹配器。可以指定各种规则匹配,如IP地址、端口、包类型等。3.2.1表[-ttable]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和mangle。该防火墙INPUTchain(输入链)OUTPUTchain(输出链)FORWARDchain(转发链)输入包转发包接受接受内部处理系统接受输出包丢弃DROP选项不是必需的,如果未指定,则filter作为缺省表。各表实现的功能如表2所示。表2表功能介绍表表名实现功能filter用于一般的信息包过滤,包含INPUT、OUTPUT、和FORWAED链nat用于要转发的信息包,包含PREROUTING、OUTPUT和POSTROUTING链mangle包含一些规则来标记用于高级路由信息包,包含PR