论文部分内容阅读
摘要:网络的安全性日益重要,防火墙技术也越来越受到人们的关注。本文详细介绍了防火墙的原理,讨论了基于iptables/netfilter框架的Linux操作系统防火墙的实现,并结合具体情况说明了iptables命令的使用方法。
关键词:防火墙;linux;iptables;netfilter
中图法分类号:TP309文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
随着网络的开放性、共享性和互连程度扩大,特别是Internet的发展,网络的重要性和对社会的影响也越来越大。随着网络上各种新兴业务的兴起,比如电子商务、电子现金、数字货币网络银行等,以及各种专用网的建设,比如金融网等,使得安全问题显得越来越重要。因此网络安全成了数据通信领域研究和发展的一个重要方向,对网络安全技术的研究成了现在计算机和通信领域的一个热点。而防火墙技术是针对网络安全特点而建立的防范措施。而LINUX操作系统不仅具有开放源代码的巨大优势,而且能适用于多种CPU和硬件平台,性能稳定,非常适合作为一些嵌入式防火墙设备的操作系统,因此,研究基于LINUX的防火墙技术具有重要的意义。
1 防火墙原理
1.1 防火墙的概念和工作原理
防火墙技术是目前各种网络安全解决方案中常用的技术,它通过控制和检测网络之间的信息交换和访问行为来实现对网络的安全管理。防火墙技术作为目前用来实现网络安全措施的一种主要手段,它主要是用来拒绝未经授权的用户访问,阻止未经授权的用户存取敏感数据,同时允许合法用户不受阻碍地访问网络资源,从总体上看,防火墙应具有以下五大基本功能:
过滤进出网络的数据包。
管理进出网络的访问行为。
封堵某些禁止的访问行为。
记录通过防火墙的信息内容和活动。
对网络攻击进行检测和告警。
为实现以上功能,在防火墙产品的开发中,人们要应用网络拓扑技术、计算机操作系统技术、路由技术、加密技术、访问控制技术、安全审计技术等成熟或先进的技术手段。其工作原理是:按照事先规定好的配置与规则,监测并过滤通过防火墙的数据流,只允许授权的或者符合规则的数据通过。防火墙应该能够记录有关连接的信息、服务器或主机间的数据流量以及任何试图通过防火墙的非法访问记录。同时、防火墙自身也应具备较高的抗攻击性能。
1.2 防火墙的分类
按照防火墙对内外来往数据的处理方法,大致可以将防火墙分为两大体系:包过滤防火墙和代理防火墙(应用层网关防火墙)。前者以以色列的Checkpoint防火墙和Cisco公司的PIX防火墙为代表,后者以美国NAI公司的Gauntlet防火墙为代表。
表1 两种防火墙的比较
包过滤防火墙分为静态和动态。静态包过滤防火墙根据定义好的过滤规则审查每个数据包。以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制b},报头信息中包括IP源地址、IP目标地址、传输协议(TCP, UDP, ICMP等等)、TCP/UDP目标端口, ICMP消息类型等,包过滤类型的防火墙要遵循的一条基本原则是“最小特权原则”,即明确允许那些管理员希望通过的数据包,禁止其他的数据包。动态包过滤防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为所谓包状态监测技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更新条目。
代理防火墙也叫应用层网关(Application Gateway)防火墙。这种防火墙通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。代理类型防火墙的最突出的优点就是安全。由于每一个内外网络之间的连接都要通过Proxy的介入和转换,通过专门为特定的服务如Http编写的安全化的应用程序进行处理,然后由防火墙本身提交请求和应答,没有给内外网络的计算机以任何直接会话的机会,从而避免了入侵者使用数据驱动类型的攻击方式入侵内部网。
自适应代理技术(Adaptive proxy)是最近在商业应用防火墙中实现的一种革命性的技术。它可以结合代理类型防火墙的安全性和包过滤防火墙的高速度等优点,在毫不损失安全性的基础之上将代理型防火墙的性能提高10倍以上。组成这种类型防火墙的基本要素有两个:自适应代理服务器 (Adaptive Proxy Server)与动态包过滤器 (Dynamic Packet filter)。
在自适应代理与动态包过滤器之间存在一个控制通道。在对防火墙进行配置时,用户仅仅将所需要的服务类型、安全级别等信息通过相应Proxy的管理界面进行设置就可以了。然后,自适应代理就可以根据用户的配置信息,决定是使用代理服务从应用层代理请求还是从网络层转发包。如果是后者,它将动态地通知包过滤器增减过滤规则,满足用户对速度和安全性的双重要求。
2 linux防火墙的实现
2.1 linux 防火墙简介
Linux最初从2.0内核的ipfwadm开始具备了基本的包过滤功能。ipfwadm能透过IP据包头的分析,分辨出数据包的来源IP与目的地IP、数据包类型、来源端口号与目的端口号、数据包流向、数据包进入防火墙的网卡界面等,并依此分析结果来对比规则进行数据包过滤,同时也支持IP伪装的功能,利用这个功能可以解决IP不足的问题,但是这些程序缺乏弹性设计,用户无法自行建立规则组合(rule set)作更精简的设定,同时也缺乏网址转换功能,无法应付越来越复杂的网络环境,已经逐渐被淘汰。随后取而代之的是ipchains。Ipchains不但指令语法更容易理解,功能也较ipfwadm优越:ipchain允许自订规则组合(rule set),称之为user-define chains,可以将彼此相关的规则组合在一起,在需要的时候跳到该组规则进行过滤,有效的将规则数量大幅缩减,克服了以往ipfw仅能进行循序过滤,导致规则过长的缺陷。同时,ipchains能提供网址转换的能力,从而满足NAT的完整需求,基本构成一套成熟的防火墙。,
在Linux2.4内核以后,被称为iptables/netfilter的防火墙以更好的结构重新构造,并实现了许多新功能,如完整的动态NAT(2.2内核实际是多对一的"地址伪装")、基于MAC及用户的过滤、真正的基于状态的过滤(不再是简单的查看tcp的标志位等)、包速率限制等。它比以前任何一个Linux内核的防火墙子系统都要完善和强大。
2.2 iptables/netfilter框架
Netfilter提供了一个抽象的、通用的框架,该框架定义的一个子功能实现的就是包过滤子系统。Netfilter由一系列基于协议栈的钩子组成,这些钩子都对应某一具体的协议。当前的Netfilter,已经基于IPv4, IPX, IPv6等协议开发了对应的钩子函数。
Netfilter是嵌入内核IP协议栈的一系列调用入口,设置在报文处理的路径上。网络报文按照来源和去向,可以分为三类:流入的、流经的和流出的。其中流入和流经的报文需要经过路由才能区分,而流经和流出的报文则需要经过投递,此外,流经的报文还有一个FORWARD的过程,即从一个NIC转到另一个NIC。 Netfilter就是根据网络报文的流向,在以下几个点插入处理过程:
(1)NF_IP_PRE_ROUTING,在报文作路由以前执行;
(2)NF_IP_FORWARD,在报文转向另一个NIC以前执行;
(3)NF_IP_POST_ROUTING,在报文流出以前执行;
(4)NF_IP_LOCAL_IN,在流入本地的报文作路由以后执行;
(5)NF_IP_LOCAL_OUT,在本地报文做流出路由前执行。
Netfilter框架为多种协议提供了一套类似的钩子(HOOK),用一个struct list_head nf_hooks[NPROTO][NF_MAX_HOOKS]二维数组结构存储,一维为协议族,二维为上面提到的各个调用入口。每个希望嵌入Netfilter中的模块都可以为多个协议族的多个调用点注册多个钩子函数(HOOK ),这些钩子函数将形成一条函数指针链,每次协议栈代码执行到NF HOOK()函数时(有多个时机),都会依次启动所有这些函数,处理参数所指定的协议栈内容。
每个注册的钩子函数经过处理后都将返回下列值之一,告知Neifilter核心代码处理结果,以便对报文采取相应的动作:
(1)NF_ACCEPT, 继续正常传输数据报;
(2)NF_DROP, 丢弃该数据报,不再传输;
(3)NF_STOLEN, 模块接管该数据报,不要继续传输该数据报;
(4)NF_QUEUE, 对该数据报进行排队(通常用于将数据报给用户空间的进程进行处理);
(5)NF_REPEAT, 再次调用该钩子函数。
如图1所示,数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子函数NF_IP_PRE ROUTING进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子函数NF_IP_LOCAL_IN处理以后然后传递给上层协议;若该数据包应该被转发则它被NF IP FORWARD处理;经过转发的数据报经过最后一个钩子函数NF_IP_POST_ROUTING处理以后,再传输到网络上。本地产生的数据经过钩子函数NF_IP_LOCAL_OUT处理可以后,进行路由选择处理,然后经过NF_IP_POST_ROUTING处理以后发送到网络接口。
Netfilter组件也称为内核空间(kernel space),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
与之相对应的iptables组件是一种工具,也称为用户空间(user space),它使插入、修改和除去信息包过滤表中的规则变得容易。通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用日标ACCEPT允许该信息包通过。还可以使用目标DROP或REJECT来阻塞并杀死信息包。
内核模块提供三个规则表((table),分别是数据报过滤表(filter table),网络地址转换表(nat table)及数据报处理表(mangle table)。
数据报过滤表(filter table):
表格不会对数据报进行修改,而只对数据报进行过滤。iptables优于ipchains的一个方面就是它更为小巧和快速。它是通过钩子函数NF_IP_LOCAL_IN,NF_IP_FORWARD及NF_IP_LOCAL_OUT接入netfilter框架的。因此对于任何一个数据报只有一个地方对其进行过滤。这相对ipchains来说是一个巨大的改进,因为在ipchains中一个被转发的数据报会遍历三条链。
网络地址转换表(nat table):
NAT表格监听三个Netfilter钩子函数:NF_IP_PRE_ROUTING,NF_IP_POST_ROUTING及NF_ IP_LOCAL_OUT。NF_IP_PRE_ROUTING实现对需要转发的数据报的源地址进行地址转换而NF_IP_POST_ROUTING则对需要转发的数据包的目的地址进行地址转换。对于本地数据报的目的地址的转换则由NF_IP_LOCAL_OUT来实现。
NAT表格不同于filter表格,因为只有新连接的第一个数据报将遍历表格,而随后的数据报将根据第一个数据报的结果进行同样的转换处理。NAT表格被用在源NAT,目的NAT,伪装(其是源NAT的一个特例)及透明代理(其实是目的NAT的一个特例)。
数据报处理表(mangle table):
mangle表格在NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT钩子中进行注册。使用
mangle表,可以实现对数据报的修改或给数据报附上一些带外数据。当前mangle表支持修改TOS位及设置skb的nfmard字段。
3 iptables的命令配置与应用
Iptables的基本语法是:
iptables [-t table] command [match] [- j target/jump]
其中–t参数用来指定规则表,当未指定规则表时,则默认认为是filter
下面根据实例来详细解释下iptables的用法,配置防火墙的基本规则是先拒绝所有的服务,然后根据需要再添加新的规则。在实例中,我们开放了WEB服务器,邮件服务器,FTP服务器等常用的端口,在实际情况中可以根据特定的网络状况,特定的安全要求做特别的处理:
iptables –F#删除已经存在的规则
iptables -P INPUT DROP#配置默认的拒绝规则。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT#打开WEB服务端口的tcp协议
iptables -A INPUT -p tcp --dport 110 -j ACCEPT #打开POP3服务端口的tcp协议
iptables -A INPUT -p tcp --dport 25 -j ACCEPT#打开SMTP服务端口的tcp协议
iptables -A INPUT -p tcp --dport 21 -j ACCEPT#打开FTP服务端口的tcp协议
4 结论
Linux内核防火墙的iptables/netfilter框架设计得非常成功,它将所有对数据包的处理都统一到这个一个框架之下。Netfilter不仅仅有此高效的设计,同时还具备很大的灵活性,这主要表现在iptable/netfilter中的很多部分都是可扩充的,包括Table, Match, Target等。
参考文献:
[1]毛德操,胡希明.Linux内核源代码情景分析[M].浙江大学出版.2001,9.
[2]Marcus Goncalves.宋书民,等,译.防火墙技术指南[M].机械工业出版社,2000,11.
[3]Robert L.Ziegler..余青霓,等,译.LINUX防火墙[M].人民工业出版社,2000,10.
[4]博嘉科技主编.LINUX防火墙技术探秘[M].国防工业出版社,2002,10.
[5]Stephen T.Satchell,H.B.J Clifford.Linux.刘窿国,等,译.IP协议栈源代码分析[M].机械工业出版社,2000,11.
[6]贾明,严世贤.LINUX下的C编程[M].人民邮电出版社,2001,11.
关键词:防火墙;linux;iptables;netfilter
中图法分类号:TP309文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
随着网络的开放性、共享性和互连程度扩大,特别是Internet的发展,网络的重要性和对社会的影响也越来越大。随着网络上各种新兴业务的兴起,比如电子商务、电子现金、数字货币网络银行等,以及各种专用网的建设,比如金融网等,使得安全问题显得越来越重要。因此网络安全成了数据通信领域研究和发展的一个重要方向,对网络安全技术的研究成了现在计算机和通信领域的一个热点。而防火墙技术是针对网络安全特点而建立的防范措施。而LINUX操作系统不仅具有开放源代码的巨大优势,而且能适用于多种CPU和硬件平台,性能稳定,非常适合作为一些嵌入式防火墙设备的操作系统,因此,研究基于LINUX的防火墙技术具有重要的意义。
1 防火墙原理
1.1 防火墙的概念和工作原理
防火墙技术是目前各种网络安全解决方案中常用的技术,它通过控制和检测网络之间的信息交换和访问行为来实现对网络的安全管理。防火墙技术作为目前用来实现网络安全措施的一种主要手段,它主要是用来拒绝未经授权的用户访问,阻止未经授权的用户存取敏感数据,同时允许合法用户不受阻碍地访问网络资源,从总体上看,防火墙应具有以下五大基本功能:
过滤进出网络的数据包。
管理进出网络的访问行为。
封堵某些禁止的访问行为。
记录通过防火墙的信息内容和活动。
对网络攻击进行检测和告警。
为实现以上功能,在防火墙产品的开发中,人们要应用网络拓扑技术、计算机操作系统技术、路由技术、加密技术、访问控制技术、安全审计技术等成熟或先进的技术手段。其工作原理是:按照事先规定好的配置与规则,监测并过滤通过防火墙的数据流,只允许授权的或者符合规则的数据通过。防火墙应该能够记录有关连接的信息、服务器或主机间的数据流量以及任何试图通过防火墙的非法访问记录。同时、防火墙自身也应具备较高的抗攻击性能。
1.2 防火墙的分类
按照防火墙对内外来往数据的处理方法,大致可以将防火墙分为两大体系:包过滤防火墙和代理防火墙(应用层网关防火墙)。前者以以色列的Checkpoint防火墙和Cisco公司的PIX防火墙为代表,后者以美国NAI公司的Gauntlet防火墙为代表。
表1 两种防火墙的比较
包过滤防火墙分为静态和动态。静态包过滤防火墙根据定义好的过滤规则审查每个数据包。以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制b},报头信息中包括IP源地址、IP目标地址、传输协议(TCP, UDP, ICMP等等)、TCP/UDP目标端口, ICMP消息类型等,包过滤类型的防火墙要遵循的一条基本原则是“最小特权原则”,即明确允许那些管理员希望通过的数据包,禁止其他的数据包。动态包过滤防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为所谓包状态监测技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更新条目。
代理防火墙也叫应用层网关(Application Gateway)防火墙。这种防火墙通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。代理类型防火墙的最突出的优点就是安全。由于每一个内外网络之间的连接都要通过Proxy的介入和转换,通过专门为特定的服务如Http编写的安全化的应用程序进行处理,然后由防火墙本身提交请求和应答,没有给内外网络的计算机以任何直接会话的机会,从而避免了入侵者使用数据驱动类型的攻击方式入侵内部网。
自适应代理技术(Adaptive proxy)是最近在商业应用防火墙中实现的一种革命性的技术。它可以结合代理类型防火墙的安全性和包过滤防火墙的高速度等优点,在毫不损失安全性的基础之上将代理型防火墙的性能提高10倍以上。组成这种类型防火墙的基本要素有两个:自适应代理服务器 (Adaptive Proxy Server)与动态包过滤器 (Dynamic Packet filter)。
在自适应代理与动态包过滤器之间存在一个控制通道。在对防火墙进行配置时,用户仅仅将所需要的服务类型、安全级别等信息通过相应Proxy的管理界面进行设置就可以了。然后,自适应代理就可以根据用户的配置信息,决定是使用代理服务从应用层代理请求还是从网络层转发包。如果是后者,它将动态地通知包过滤器增减过滤规则,满足用户对速度和安全性的双重要求。
2 linux防火墙的实现
2.1 linux 防火墙简介
Linux最初从2.0内核的ipfwadm开始具备了基本的包过滤功能。ipfwadm能透过IP据包头的分析,分辨出数据包的来源IP与目的地IP、数据包类型、来源端口号与目的端口号、数据包流向、数据包进入防火墙的网卡界面等,并依此分析结果来对比规则进行数据包过滤,同时也支持IP伪装的功能,利用这个功能可以解决IP不足的问题,但是这些程序缺乏弹性设计,用户无法自行建立规则组合(rule set)作更精简的设定,同时也缺乏网址转换功能,无法应付越来越复杂的网络环境,已经逐渐被淘汰。随后取而代之的是ipchains。Ipchains不但指令语法更容易理解,功能也较ipfwadm优越:ipchain允许自订规则组合(rule set),称之为user-define chains,可以将彼此相关的规则组合在一起,在需要的时候跳到该组规则进行过滤,有效的将规则数量大幅缩减,克服了以往ipfw仅能进行循序过滤,导致规则过长的缺陷。同时,ipchains能提供网址转换的能力,从而满足NAT的完整需求,基本构成一套成熟的防火墙。,
在Linux2.4内核以后,被称为iptables/netfilter的防火墙以更好的结构重新构造,并实现了许多新功能,如完整的动态NAT(2.2内核实际是多对一的"地址伪装")、基于MAC及用户的过滤、真正的基于状态的过滤(不再是简单的查看tcp的标志位等)、包速率限制等。它比以前任何一个Linux内核的防火墙子系统都要完善和强大。
2.2 iptables/netfilter框架
Netfilter提供了一个抽象的、通用的框架,该框架定义的一个子功能实现的就是包过滤子系统。Netfilter由一系列基于协议栈的钩子组成,这些钩子都对应某一具体的协议。当前的Netfilter,已经基于IPv4, IPX, IPv6等协议开发了对应的钩子函数。
Netfilter是嵌入内核IP协议栈的一系列调用入口,设置在报文处理的路径上。网络报文按照来源和去向,可以分为三类:流入的、流经的和流出的。其中流入和流经的报文需要经过路由才能区分,而流经和流出的报文则需要经过投递,此外,流经的报文还有一个FORWARD的过程,即从一个NIC转到另一个NIC。 Netfilter就是根据网络报文的流向,在以下几个点插入处理过程:
(1)NF_IP_PRE_ROUTING,在报文作路由以前执行;
(2)NF_IP_FORWARD,在报文转向另一个NIC以前执行;
(3)NF_IP_POST_ROUTING,在报文流出以前执行;
(4)NF_IP_LOCAL_IN,在流入本地的报文作路由以后执行;
(5)NF_IP_LOCAL_OUT,在本地报文做流出路由前执行。
Netfilter框架为多种协议提供了一套类似的钩子(HOOK),用一个struct list_head nf_hooks[NPROTO][NF_MAX_HOOKS]二维数组结构存储,一维为协议族,二维为上面提到的各个调用入口。每个希望嵌入Netfilter中的模块都可以为多个协议族的多个调用点注册多个钩子函数(HOOK ),这些钩子函数将形成一条函数指针链,每次协议栈代码执行到NF HOOK()函数时(有多个时机),都会依次启动所有这些函数,处理参数所指定的协议栈内容。
每个注册的钩子函数经过处理后都将返回下列值之一,告知Neifilter核心代码处理结果,以便对报文采取相应的动作:
(1)NF_ACCEPT, 继续正常传输数据报;
(2)NF_DROP, 丢弃该数据报,不再传输;
(3)NF_STOLEN, 模块接管该数据报,不要继续传输该数据报;
(4)NF_QUEUE, 对该数据报进行排队(通常用于将数据报给用户空间的进程进行处理);
(5)NF_REPEAT, 再次调用该钩子函数。
如图1所示,数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子函数NF_IP_PRE ROUTING进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子函数NF_IP_LOCAL_IN处理以后然后传递给上层协议;若该数据包应该被转发则它被NF IP FORWARD处理;经过转发的数据报经过最后一个钩子函数NF_IP_POST_ROUTING处理以后,再传输到网络上。本地产生的数据经过钩子函数NF_IP_LOCAL_OUT处理可以后,进行路由选择处理,然后经过NF_IP_POST_ROUTING处理以后发送到网络接口。
Netfilter组件也称为内核空间(kernel space),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
与之相对应的iptables组件是一种工具,也称为用户空间(user space),它使插入、修改和除去信息包过滤表中的规则变得容易。通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用日标ACCEPT允许该信息包通过。还可以使用目标DROP或REJECT来阻塞并杀死信息包。
内核模块提供三个规则表((table),分别是数据报过滤表(filter table),网络地址转换表(nat table)及数据报处理表(mangle table)。
数据报过滤表(filter table):
表格不会对数据报进行修改,而只对数据报进行过滤。iptables优于ipchains的一个方面就是它更为小巧和快速。它是通过钩子函数NF_IP_LOCAL_IN,NF_IP_FORWARD及NF_IP_LOCAL_OUT接入netfilter框架的。因此对于任何一个数据报只有一个地方对其进行过滤。这相对ipchains来说是一个巨大的改进,因为在ipchains中一个被转发的数据报会遍历三条链。
网络地址转换表(nat table):
NAT表格监听三个Netfilter钩子函数:NF_IP_PRE_ROUTING,NF_IP_POST_ROUTING及NF_ IP_LOCAL_OUT。NF_IP_PRE_ROUTING实现对需要转发的数据报的源地址进行地址转换而NF_IP_POST_ROUTING则对需要转发的数据包的目的地址进行地址转换。对于本地数据报的目的地址的转换则由NF_IP_LOCAL_OUT来实现。
NAT表格不同于filter表格,因为只有新连接的第一个数据报将遍历表格,而随后的数据报将根据第一个数据报的结果进行同样的转换处理。NAT表格被用在源NAT,目的NAT,伪装(其是源NAT的一个特例)及透明代理(其实是目的NAT的一个特例)。
数据报处理表(mangle table):
mangle表格在NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT钩子中进行注册。使用
mangle表,可以实现对数据报的修改或给数据报附上一些带外数据。当前mangle表支持修改TOS位及设置skb的nfmard字段。
3 iptables的命令配置与应用
Iptables的基本语法是:
iptables [-t table] command [match] [- j target/jump]
其中–t参数用来指定规则表,当未指定规则表时,则默认认为是filter
下面根据实例来详细解释下iptables的用法,配置防火墙的基本规则是先拒绝所有的服务,然后根据需要再添加新的规则。在实例中,我们开放了WEB服务器,邮件服务器,FTP服务器等常用的端口,在实际情况中可以根据特定的网络状况,特定的安全要求做特别的处理:
iptables –F#删除已经存在的规则
iptables -P INPUT DROP#配置默认的拒绝规则。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT#打开WEB服务端口的tcp协议
iptables -A INPUT -p tcp --dport 110 -j ACCEPT #打开POP3服务端口的tcp协议
iptables -A INPUT -p tcp --dport 25 -j ACCEPT#打开SMTP服务端口的tcp协议
iptables -A INPUT -p tcp --dport 21 -j ACCEPT#打开FTP服务端口的tcp协议
4 结论
Linux内核防火墙的iptables/netfilter框架设计得非常成功,它将所有对数据包的处理都统一到这个一个框架之下。Netfilter不仅仅有此高效的设计,同时还具备很大的灵活性,这主要表现在iptable/netfilter中的很多部分都是可扩充的,包括Table, Match, Target等。
参考文献:
[1]毛德操,胡希明.Linux内核源代码情景分析[M].浙江大学出版.2001,9.
[2]Marcus Goncalves.宋书民,等,译.防火墙技术指南[M].机械工业出版社,2000,11.
[3]Robert L.Ziegler..余青霓,等,译.LINUX防火墙[M].人民工业出版社,2000,10.
[4]博嘉科技主编.LINUX防火墙技术探秘[M].国防工业出版社,2002,10.
[5]Stephen T.Satchell,H.B.J Clifford.Linux.刘窿国,等,译.IP协议栈源代码分析[M].机械工业出版社,2000,11.
[6]贾明,严世贤.LINUX下的C编程[M].人民邮电出版社,2001,11.