LINUX防火墙的分析与研究
2017-06-01余飞
余飞
摘要:防火墙是网络安全的基础设施,用于网络安全防范与保护。该文分析了Linux防火墙Netfiher-iptables的基本结构,研究了Netfiher框架和iptables工具,阐述了Netfilter框架的五个钩子点以及数据包处理过程,研究表明Linux防火墙Netfil-ter-iptables是一种实用高效的防火墙。
关键词:防火墙;Netfiher-iptables;Netfiher框架
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)08-0065-02
随着计算机技术的迅猛发展,计算机网络已经渗人到社会生活的各个层面,成为人们生活不可或缺的一部分。计算机网络的快速发展使网络安全问题日益严峻,如何保障网络安全成为研究的热点。防火墙技术是一种网络防范与保护技术,它对网络数据流及数据链接按照一定的安全策略进行检查或过滤,从而来监视当前网络的运行状态,控制网络的访问权限,屏蔽不良数据及非法链接,保护网络的安全运行。网络防火墙的优劣直接影响到整个网络安全系统的性能,对防火墙技术展开研究具有十分重要的意义。
1网络防火墙
防火墙是一种计算机软件和硬件的组合,能够在内部网络与外部网络或专用网络和公用网络之间建立起一个安全网关,控制内外网之间的访问,过滤内外网传输的数据,起到保护内部网络免受攻击,防范不良信息在网络中肆意传播等作用。因此,网络防火墙技术是一种网络防范与保护技术。
防火墙的功能包括强化网络安全策略,防止内部信息泄露,监控网络操作,审计和记录网络访问信息等。防火墙广泛应用于部队机关、政府部门、学校企业的内部网络,起到屏蔽内部网络信息,保障网络安全的作用。防火墙具有以下特性:
1)信任网与非信任网之间的所有网络数据都要经过防火墙。
2)只有合法的符合安全策略的数据流才能安全通过防火墙。
3)防火墙具有非常强大的防攻击免疫力。
4)防火墙必须具有数据过滤能力,以及对非法数据屏蔽隔离的能力。
5)信任网与非信任网之间的访问必须通过防火墙。
2防火墙的分类
从形式上分类,防火墙可分为硬件防火墙和软件防火墙。软件防火墙是指将防火墙的功能通过软件层面来实现,如Linux中Netfilter-iptables防火墙。硬件防火墙是将软件防火墙的功能做成电路板固化到硬件设备中。因此,硬件防火墙一般是一种独立的硬件设备通过网线连接于外部网络接口与内部服务器或内部网络之间。如,CiscoASA 5505防火墙等。
从结构上分类,防火墙可分为单一主机防火墙,路由集成防火墙和分布式防火墙。防火墙可以是一台主机,可以与路由器集成在一起,也可以分布在计算机网络的各个位置形成一个分布式防火墙体系。
按照防火墙所处在的位置分类,可分为边界防火墙,个人防火墙,混合防火墙三类。
主流的分类方式是从技术层面上对防火墙进行分类。传统上将防火墙技术分为包过滤技术,应用代理技术和状态检测技术。此外,防火墙技术还包括深度包检测技术,流过滤技术等。
1)包过滤防火墙
包过滤防火墙是一种通用和有效的防火墙技术。大部分的路由器都集成了包过滤防火墙。包过滤防火墙并不针对具体的网络服务,而是对数据包的包头信息,包括源地址,目的地址,端口号,协议类型,生存周期等,按照相应的过滤规则进行过滤。只有满足过滤条件的数据包才能被转发,不符合条件的将被丢弃。包过滤防火墙工作在网络层。包过滤技术快速简单,代价小,广泛应用于企事业单位。
2)应用代理防火墙
应用代理防火墙工作在应用层。它能够对网络中的任何一层数据进行检索过滤,对应用层的数据进行监控,并实现对应用程序的访问控制。一般情况下,应用代理防火墙是一台代理服务器,内外网通信必须通过它。该服务器可在网络的各个层次进行控制和安全防范。
3)状态检测防火墙
状态检测防火墙是在动态包过滤技术的基础之上发展而来,是对传统包过滤的有效扩展。该技术能够提供较高的安全解决方案,具有适应性和扩展性。状态检测防火墙工作在網络层,却能够检测应用层的数据包,并从中提取需要的信息,包括IP地址,端口号,协议类型等,将这些应用层和网络层的信息组合起来,进行数学或逻辑运算,最终决定数据包是接受还是拒绝。因此,状态检测防火墙兼具了包过滤防火墙的速度优势,与应用代理防火墙的安全性优势。
4)深度包检测防火墙
随着用户要求的提高,很多防火墙技术已经不能满足网络安全的苛刻要求,深度包检测防火墙由此产生。深度包检测防火墙将会深入到数据包的内容中进行分析过滤,并上升至应用层进行安全防护,给用户带来几乎完美的安全保护。深度包检测防火墙在网络层对数据包进行过滤,这种过滤技术能够进入数据包内部对数据信息进行分析查看。数据信息在网络底层被拆分,深度包检测技术能够将被拆分的数据信息组合拼接起来,运用应用层规则进行过滤。该技术对数据包的“理解”能力完整,漏检率很低;对网络协议把握准确,拥有完整的访问控制以及网络防御能力。
5)流过滤防火墙
流过滤技术是在状态检测技术之上发展起来的,体现了状态检测技术与应用代理技术两者的融合趋势。流过滤技术是东软防火墙的核心技术,由东软集团研发。该防火墙的核心是一个TCP协议栈。该协议栈依据TCP协议的规定对出人防火墙的数据进行重组,形成数据流,并将该数据流按照应用层的过滤规则进行过滤。这种防火墙以包过滤的形态,却能够使用应用层的过滤规则,使防火墙拥有包过滤的速度和应用级的保护能力,提升了防火墙的整体性能。
3 Linux的Netfilter-iptables防火墙
Linux防火墙是Linux操作系统中自带的软件系统。该软件系统功能强大,与Linux内核完美结合,对,P信息包过滤拥有完全的控制权,可根据需要进行有效的配置和扩展。
Netfilter框架建构在Linux内核空间中,它不具有任何功能,但提供了一个具有高度扩展性通用性的框架。该框架有五个挂接点,可挂接具體的功能函数,即钩子函数。以IPV4为例,挂接点分别有:NP_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_LOCAL_OUT和NF_IP_POST_ROUT-ING。
1)NP_IP_PRE_ROUTING
NP_IP_PRE_ROUTING挂接的钩子函数,主要用于处理注册地址转换、包过滤、连线跟踪等功能。NP_IP_PRE_ROUTING挂接点位于数据包首先经过处,能够对数据包的地址、包头等信息进行检查或转换。
2)NF_IP_LOCAL_IN
NF_IP_LOCAL_IN挂接的钩子函数,主要用于处理发往本地的数据包。NP_IP_PRE_ROUTING挂接点位于路由对数据包按照目的地址分流之后,是本地在接受数据包前对其进行的最后一次处理。
3)NF_IP_FORWARD
NF_IP_FORWARD挂接的钩子函数,主要用于数据包过滤,过滤掉不符合要求的数据包。NF_IP_FORWARD挂接点位于路由对数据包按照目的地址分流之后,是针对目的地为非本地的数据包的处理与过滤。
4)NF_IP_LOCAL_OUT
NF_IP_LOCAL_OUT挂接的钩子函数,主要用于对本地数据进行处理与过滤。NF_IP_LOCAL_OUT挂接点位于本地,所有需要被本地接收或修改的数据包都将通过该挂接点。
5)NF_IP_POST_ROUTING
NF_IP_POST_ROUTING挂接的钩子函数,主要用于对本地流出的数据包进行处理,用于统计审核、地址检查等。NF_IP_POST_ROUTING挂接点位于本地接收处理的数据之后,主要针对本地处理后的数据包。
iptalbes是一个内建在Netfilter框架中的IP信息包过滤系统,主要用于设置、维护和检查Linux内核的IP包过滤规则,其功能由三张链表来实现:Fiber表,Mangle表和NAT表。
(1)Filter表
Filter表用于对数据包的过滤。它可被注册在任何需要数据过滤的钩子点上,如NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_LOCAL_OUT等。Filter表是内核中唯一负责数据包过滤的模块,所有的数据包都会被该模块过滤。一般,数据包的过滤并不是对数据包进行任何形式的修改,而是对数据包的包头或者数据包的内容进行检查校验,把不符合要求的数据包丢弃,符合要求的则接受或继续传输。
(2)NAT表
NAt表用于网络地址的转换。它可被注册在NP_IP_PRE_ROUTING、NF_IP_POST_ROUTING或NF_IP_LO_CAL_IN、NF_IP_LOCAL_OUT上。NAT模块注册于Netfilter框架的两头,即入口和出口处。该模块提供对本地数据包出入地址的转换,以达到节省地址或内网与外网分离等特性。数据包地址的转换主要是对数据包包头的源地址或目的地址进行修改,而不是修改数据包的内容,更不允许丢弃或拒绝数据包。
(3)Mangle表
Mangle表用于对数据包的内容进行修改,可注册在任何需要修改或处理数据包的钩子点上。对数据包的修改主要体现在修改数据包的TTL,TOS,MARK等内容上。修改后将处理好的数据包放回到Netfilter框架上继续传输。
Netfilter框架,iptables工具和内核的过滤规则表构成了性能强大的Linux防火墙,被称为Netfilter-iptables防火墙。该防火墙将框架与处理函数完全分开,采用注册的方式对钩子函数进行动态加载,能够自定义过滤规则,具有扩展性强等特点,是一种高效实用的防火墙。