linux防火墙的设置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux 防火墙的设置
Linux防火墙配置(一)
随着In ternet规模的迅速扩大,安全问题也越来越重要,而构建防火墙是保护系统免受侵害的最基本的一种手段。虽然防火墙并不能保证系统绝对的安全,但由于它简单易行、工作可靠、适应性强,还是得到了广泛的应用。本章主要介绍与Linux系统紧密集成的iptables防火墙的工作原理、命令格式,以及一些应用实例。
9.1 iptables 防火墙介绍
netfilter/iptables 是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。本节首先介绍有关iptables防火墙的基本知识,包括netfilter 框架、iptables 防火墙结构与原理、iptables命令格式等内容。
9.1.1 netfilter 框架
Linux内核包含了一个强大的网络子系统,名为netfilter ,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT IP伪装
等,也可以因高级路由或连接状态管理的需要而修改IP头信息。netfilter 位
于Linux网络层和防火墙内核模块之间,如图9-1所示。
图9-1 netfilter 在内核中的位置
虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter 模块将防火墙的功能引
入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。netfilter 模块的结构如图9-2所示。
对IPv4协议来说,netfilter 在IP数据包处理流程的5个关键位置定义了
5个钩子(hook)函数。当数据包流经这些关键位置时,相应的钩子函数就被调用。从图9-2中可以看到,数据包从左边进入IP协议栈,进行IP校验以后,数据包被第一个钩子函数
PRE_ROUTING理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。
若该数据包是送给本机的,则要经过钩子函数LOCAL_IN处理后传递给本机
的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD理,然后
还要经钩子函数POST_ROUTIN处理后才能传输到网络。本机进程产生的数据包要先经过钩子函数LOCAL_OU处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING理后再发送到网络。
%说明:内核模块可以将自己的函数注册到钩子函数中,每当有数据包经过该钩子点时,钩子函数就会
按照优先级依次调用这些注册的函数,从而可以使其他内核模块参与对数据包的处理。这些处理可以是
包过滤、NAT以及用户自定义的一些功能。
9.1.2 iptables 防火墙内核模块
netfilter 框架为内核模块参与IP层数据包处理提供了很大的方便,内核
的防火墙模块正是通过把自己的函数注册到n etfilter 的钩子函数这种方式介
入了对数据包的处理。这些函数的功能非常强大,按照功能来分的话主要有4种,包括连接跟踪、数据包过滤、网络地址转换(NAT和对数据包进行修改。其中,NAT还分为SNATCH DNAT分别表示源网络地址转换和目的网络地址转换,内核防火墙模块函数的具体分布情况如图9-3所示。
由图9-3可以看出,防火墙模块在netfilter 的LOCAL_IN FORWARD LOCAL_OUT 个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包进行过滤。这三个位置也称为三条链,名称分别为INPUT
%注意:这些规则的次序是很重要的,过滤函数对数据包执行了某一规则动作后,对数据包的处理即告
结束,即使这个数据包还满足后面其他规则的所有匹配,也不会执行那些规则所设定的动作。
从图9-3中可以看出,除了过滤表以外,在PRE_ROUTINGOCAL_OU和POST_ ROUTING :个位置各有一条有关NAT的链,名称分别为PREROUTINGOUTPU和POSTROUTING它们组成了NAT表。NAT链里面也可以包含各种规则,它指出了如何对数据包的地址进行转换。
此外,5个钩子函数位置的mangle链还组成了一张mangle表,这个表的主要功能是根据规则修改数据包的一些标志位,例如TTL、TOS等,也可以在内核空间为数据包设置一些标志。防火墙内的其他规则或程序(如tc等)可以利用这种标志对数据包进行过滤或高级路由。
以上介绍的是iptables防火墙的内部结构,Linux系统还提供了iptables 防火墙的用户接口,它可以在上述各张表所包含的链中添加规则,或者修改、删除规则,从而可以根据需要构建自己的防火墙。具体来说,用户是通过输入iptables命令来实现上述功能的。
9.1.3 iptables 命令格式
在RHEL 5中,iptables 命令由iptables-1.3.5-1.2.1 软件包提供,默认时,系统已经安装了该软件包,因此,用户可以直接输入iptables命令对防火
墙中的规则进行管理。iptables命令相当复杂,具体格式如下所示。
iptables [-t 表名]v命令>[链名][规则号][规则][-j目标]
-t选项用于指定所使用的表,iptables 防火墙默认有filter 、nat和mangle 3张表,也可以是用户自定义的表。表中包含了分布在各个位置的链,iptables
命令所管理的规则就是存在于各种链中的。该选项不是必需
的,如果未指定一个具体的表,则默认使用的是filter 表。
命令选项是必须要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则。有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。还有一些命令要指定规则号。具体的命令选项名称及其与后续选项的搭配形式如下所示。
示例1:
-A v链名> v规则>
功能:在指定链的末尾添加一条或多条规则。
示例2:
-D v链名> v规则>
-D v链名> v规则号>
功能:从指定的链中删除一条或多条规则。可以按照规则的序号进行删除,也可以删除满足匹配条件的规则。
示例3:
-R v链名> v规则号> v规则>
功能:在指定的链中用新的规则置换掉某一规则号的旧规则。
示例4:
-I v链名>[规则号]v规则>
功能:在给出的规则序号前插入一条或多条规则,如果没有指定规则号,则默认是1。
示例5:
-L [链名]
功能:列出指定链中的所有规则,如果没有指定链,则所有链中的规则都将被列出。
示例6:
-F [链名]