第9章_linux防火墙配置

上传人:w****i 文档编号:108687983 上传时间:2019-10-25 格式:PDF 页数:27 大小:486.63KB
返回 下载 相关 举报
第9章_linux防火墙配置_第1页
第1页 / 共27页
第9章_linux防火墙配置_第2页
第2页 / 共27页
第9章_linux防火墙配置_第3页
第3页 / 共27页
第9章_linux防火墙配置_第4页
第4页 / 共27页
第9章_linux防火墙配置_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第9章_linux防火墙配置》由会员分享,可在线阅读,更多相关《第9章_linux防火墙配置(27页珍藏版)》请在金锄头文库上搜索。

1、 第 9 章 Linux 防火墙配置 151 第 9 章 Linux 防火墙配置 随着 Internet 规模的迅速扩大,安全问题也越来越重要,而构建防火墙是保护系统免 受侵害的最基本的一种手段。 虽然防火墙并不能保证系统绝对的安全, 但由于它简单易行、 工作可靠、适应性强,还是得到了广泛的应用。本章主要介绍与 Linux 系统紧密集成的 iptables 防火墙的工作原理、命令格式,以及一些应用实例。 9.1 iptables 防火墙介绍 netfilter/iptables 是 Linux 系统提供的一个非常优秀的防火墙工具,它完全免费、功能 强大、使用灵活、占用系统资源少,可以对经过的数

2、据进行非常细致的控制。本节首先介 绍有关 iptables 防火墙的基本知识, 包括 netfilter 框架、 iptables 防火墙结构与原理、 iptables 命令格式等内容。 9.1.1 netfilter 框架 Linux 内核包含了一个强大的网络子系统,名为 netfilter,它可以为 iptables 内核防火 墙模块提供有状态或无状态的包过滤服务,如 NAT、IP 伪装等,也可以因高级路由或连接 状态管理的需要而修改 IP 头信息。netfilter 位于 Linux 网络层和防火墙内核模块之间,如 图 9-1 所示。 图 9-1 netfilter 在内核中的位置 第

3、2 篇 Linux 主机与网络安全措施 152 虽然防火墙模块构建在 Linux 内核,并且要对流经 IP 层的数据包进行处理,但它并没 有改变 IP 协议栈的代码, 而是通过 netfilter 模块将防火墙的功能引入 IP 层, 从而实现防火 墙代码和 IP 协议栈代码的完全分离。netfilter 模块的结构如图 9-2 所示。 图 9-2 netfilter 结构框架图 对IPv4协议来说, netfilter在IP数据包处理流程的5个关键位置定义了5个钩子 (hook) 函数。当数据包流经这些关键位置时,相应的钩子函数就被调用。从图 9-2 中可以看到, 数据包从左边进入 IP 协议

4、栈, 进行 IP 校验以后, 数据包被第一个钩子函数 PRE_ROUTING 处理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。 若该数据包是送给本机的, 则要经过钩子函数 LOCAL_IN 处理后传递给本机的上层协 议;若该数据包应该被转发,则它将被钩子函数 FORWARD 处理,然后还要经钩子函数 POST_ROUTING 处理后才能传输到网络。本机进程产生的数据包要先经过钩子函数 LOCAL_OUT 处理后,再进行路由选择处理,然后经过钩子函数 POST_ROUTING 处理后 再发送到网络。 ?说明:内核模块可以将自己的函数注册到钩子函数中,每当有数据包经过该钩子点时,

5、 钩子函数就会按照优先级依次调用这些注册的函数,从而可以使其他内核模块参 与对数据包的处理。这些处理可以是包过滤、NAT 以及用户自定义的一些功能。 9.1.2 iptables 防火墙内核模块 netfilter 框架为内核模块参与 IP 层数据包处理提供了很大的方便,内核的防火墙模块 正是通过把自己的函数注册到 netfilter 的钩子函数这种方式介入了对数据包的处理。这些 函数的功能非常强大,按照功能来分的话主要有 4 种,包括连接跟踪、数据包过滤、网络 地址转换(NAT)和对数据包进行修改。其中,NAT 还分为 SNAT 和 DNAT,分别表示源 网络地址转换和目的网络地址转换,内核

6、防火墙模块函数的具体分布情况如图 9-3 所示。 由图 9-3 可以看出, 防火墙模块在 netfilter 的 LOCAL_IN、 FORWARD 和 LOCAL_OUT 3 个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包进 行过滤。这三个位置也称为三条链,名称分别为 INPUT、FORWARD 和 OUTPUT,它们 第 9 章 Linux 防火墙配置 153 共同组成了一张过滤表,每条链可以包含各种规则,每一条规则都包含 0 个或多个匹配以 及一个动作。当数据包满足所有的匹配时,则过滤函数将执行设定的动作,以便对数据包 进行过滤的。 图 9-3 iptable

7、s 防火墙内核模块结构框架图 ?注意:这些规则的次序是很重要的,过滤函数对数据包执行了某一规则动作后,对数据 包的处理即告结束,即使这个数据包还满足后面其他规则的所有匹配,也不会执 行那些规则所设定的动作。 从图 9-3 中可以看出,除了过滤表以外,在 PRE_ROUTING、LOCAL_OUT 和 POST_ ROUTING 3 个位置各有一条有关 NAT 的链,名称分别为 PREROUTING、OUTPUT 和 POSTROUTING,它们组成了 NAT 表。NAT 链里面也可以包含各种规则,它指出了如何 对数据包的地址进行转换。 此外,5 个钩子函数位置的 mangle 链还组成了一张

8、mangle 表,这个表的主要功能是 根据规则修改数据包的一些标志位,例如 TTL、TOS 等,也可以在内核空间为数据包设置 一些标志。防火墙内的其他规则或程序(如 tc 等)可以利用这种标志对数据包进行过滤或 高级路由。 以上介绍的是 iptables 防火墙的内部结构,Linux 系统还提供了 iptables 防火墙的用户 接口,它可以在上述各张表所包含的链中添加规则,或者修改、删除规则,从而可以根据 需要构建自己的防火墙。具体来说,用户是通过输入 iptables 命令来实现上述功能的。 9.1.3 iptables 命令格式 在 RHEL 5 中,iptables 命令由 iptab

9、les-1.3.5-1.2.1 软件包提供,默认时,系统已经安 装了该软件包, 因此, 用户可以直接输入 iptables 命令对防火墙中的规则进行管理。 iptables 命令相当复杂,具体格式如下所示。 iptables -t 表名 链名 规则号 规则 -j 目标 -t 选项用于指定所使用的表,iptables 防火墙默认有 filter、nat 和 mangle 3 张表,也可 第 2 篇 Linux 主机与网络安全措施 154 以是用户自定义的表。表中包含了分布在各个位置的链,iptables 命令所管理的规则就是 存在于各种链中的。该选项不是必需的,如果未指定一个具体的表,则默认使用

10、的是 filter 表。 命令选项是必须要有的,它告诉 iptables 要做什么事情,是添加规则、修改规则还是 删除规则。有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的 链进行操作。还有一些命令要指定规则号。具体的命令选项名称及其与后续选项的搭配形 式如下所示。 示例 1: -A 功能:在指定链的末尾添加一条或多条规则。 示例 2: -D -D 功能:从指定的链中删除一条或多条规则。可以按照规则的序号进行删除,也可以删 除满足匹配条件的规则。 示例 3: -R 功能:在指定的链中用新的规则置换掉某一规则号的旧规则。 示例 4: -I 规则号 功能:在给出的规则序号前插入

11、一条或多条规则,如果没有指定规则号,则默认是 1。 示例 5: -L 链名 功能:列出指定链中的所有规则,如果没有指定链,则所有链中的规则都将被列出。 示例 6: -F 链名 功能:删除指定链中的所有规则,如果没有指定链,则所有链中的规则都将被删除。 示例 7: -N 功能:建立一个新的用户自定义链。 示例 8: -X 链名 功能:删除指定的用户自定义链,这个链必须没有被引用,而且里面也不包含任何规 第 9 章 Linux 防火墙配置 155 则。如果没有给出链名,这条命令将试着删除每个非内建的链。 示例 9: -P 功能:为指定的链设置规则的默认目标,当一个数据包与所有的规则都不匹配时,将

12、采用这个默认的目标动作。 示例 10: -E 功能:重新命名链名,对链的功能没有影响。 以上是有关 iptables 命令格式中有关命令选项部分的解释。iptables 命令格式中的规则 部分由很多选项构成,主要指定一些 IP 数据包的特征。例如,上一层的协议名称、源 IP 地址、目的 IP 地址、进出的网络接口名称等,下面列出构成规则的常见选项。 ? -p:指定上一层协议,可以是 icmp、tcp、udp 和 all。 ? -s:指定源 IP 地址或子网。 ? -d:指定目的 IP 地址或子网。 ? -i:指定数据包进入的网络接口名称。 ? -o:指定数据包出去的网络接口名称。 ?注意:上述

13、选项可以进行组合,每一种选项后面的参数前可以加“!”,表示取反。 对于-p 选项来说,确定了协议名称后,还可以有进一步的子选项,以指定更细的数据 包特征。常见的子选项如下所示。 ? -p tcp -sport :指定 TCP 数据包的源端口。 ? -p tcp -dport :指定 TCP 数据包的目的端口。 ? -p tcp -syn:具有 SYN 标志的 TCP 数据包,该数据包要发起一个新的 TCP 连接。 ? -p udp -sport :指定 UDP 数据包的源端口。 ? -p udp -dport :指定 UDP 数据包的目的端口。 ? -p icmp -icmp-type :指定

14、 icmp 数据包的类型,可以是 echo-reply、 echo-request 等。 上述选项中,port 可以是单个端口号,也可以是以 port1:port2 表示的端口范围。每一 选项后的参数可以加“!”,表示取反。 上面介绍的这些规则选项都是 iptables 内置的,iptables 软件包还提供了一套扩展的规 则选项。使用时需要通过-m 选项指定模块的名称,再使用该模块提供的选项。下面列出几 个模块名称和其中的选项,大部分的选项也可以通过“!”取反。 -m multiport -sports 功能:指定数据包的多个源端口,也可以以 port1:port2 的形式指定一个端口范围。

15、 -m multiport -dports 第 2 篇 Linux 主机与网络安全措施 156 功能:指定数据包的多个目的端口,也可以以 port1:port2 的形式指定一个端口范围。 -m multiport -ports 功能:指定数据包的多个端口,包括源端口和目的端口,也可以以 port1:port2 的形式 指定一个端口范围。 -m state -state 功能:指定满足某一种状态的数据包,state 可以是 INVALID、ESTABLISHED、NEW 和 RELATED 等,也可以是它们的组合,用“,”分隔。 -m connlimit -connlimit-above 功能:

16、用于限制客户端到一台主机的 TCP 并发连接总数,n 是一个数值。 -m mac -mac-source 功能:指定数据包的源 MAC 地址,address 是 xx:xx:xx:xx:xx:xx 形式的 48 位数。 -m 选项可以提供的模块名和子选项内容非常多,为 iptables 提供了非常强大、细致的 功能,所有的模块名和子选项可以通过“man iptables”命令查看 iptables 命令的手册页 获得。 最后,iptables 命令中的-j 选项可以对满足规则的数据包执行指定的操作,其后的“目 标”可以是以下内容。 ? -j ACCEPT:将与规则匹配的数据包放行,并且该数据包将不再与其他规则匹配, 而是跳向下一条链继续处理。 ? -j REJECT:拒绝所匹配的数据包,并向该数据包的发送者回复一个 ICMP 错误通 知。该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。 ? -j

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号