ITPub博客

首页 > Linux操作系统 > Linux操作系统 > iptables的应用

iptables的应用

原创 Linux操作系统 作者:av200501 时间:2008-01-03 14:11:10 0 删除 编辑

iptables的应用

iptales实现包过虑型防火墙()

http://LinuxAid.com.cn bye2000

  本文版权由linuxAid和作者所有

摘要:本文介绍linux2.4.x内核中的防火墙工具--iptables的原理与配置,同时还给出了实际运用的例子,在文章的最后归纳了iptablesipchains的区别。

一、 概述

1.1内核开始,linux就已经具有包过虑功能了,在2.0的内核中我们采用ipfwadm来操作内核包过虑规则。之后在2.2内核中,采用了大家并不陌生的ipchains来控制内核包过虑规则。现在最新linux内核版本是2.4.1,在2.4内核中我们不再使用ipchains,而是采用一个全新的内核包过虑管理工具--iptables 这个全新的内核包过虑工具将使用户更易于理解其工作原理,更容易被使用,当然也将具有更为强大的功能。

我们说过iptables只是一个管理内核包过虑的工具,iptables 可以加入、插入或删除核心包过滤表格()中的规则。实际上真正来执行这些过虑规则的是netfilter(Linux 核心中一个通用架构)及其相关模块(iptables模块和nat模块),下面我们一起来看看netfilter的工作原理。

二、 原理

netfilterLinux 核心中一个通用架构,它提供了一系列的""(tables),每个表由若干""(chains)组成,而每条链中可以有一条或数条规则(rule)组成。我们可以这样来理解,netfilter是表的容器,表是链的容器,而链又是规则的容器(如图一所示)

系统缺省的表为"filter",该表中包含了INPUTFORWARDOUTPUT 3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的如果数据包头符合这样的条件,就这样处理这个数据包。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略(policy)来处理该数据包。

数据包在filter表中的流程如图二所示。有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有三种情况:

1. 如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

2. 如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

3. 如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉。

从以上我们可以看出,netfilter比起以前的ipfwadmipchains思路上清晰了好多,也好理解了好多,这对于原先对ipfwadmipchains总是感到一头雾水的用户来说无疑是一个福音。

三、 准备工作

1. 系统需求

netfilter要求内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目。这些项目通常都是位于“Networking options”子项下。以2.4.0内核为例,我们应该选中的项目有:

[*] Kernel/User netlink socket

[ ] Routing messages

<*> Netlink device emulation

[*] Network packet filtering (replaces ipchains)

.......

然后,在“IP: Netfilter Configuration ---->”选中:

Connection tracking (required for masq/NAT)

FTP protocol support

IP tables support (required for filtering/masq/NAT)

limit match support

MAC address match support

Netfilter MARK match support

Multiple port match support

TOS match support

Connection state match support

Packet filtering

REJECT target support

Full NAT

MASQUERADE target support

REDIRECT target support

Packet mangling

TOS target support

MARK target support

LOG target support

ipchains (2.2-style) support

ipfwadm (2.0-style) support

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchiansipfwadm。但是需要注意的是,iptables是和ipchians/ipfwadm相对立的,在使用iptables的同时就不能同时使用ipchains/ipfwadm。编译成功后,这些模块文件都位于以下目录中

/lib/modules/2.4.0/kernel/net/ipv4/netfilter

编译2.4.0的新内核时还应该注意要在“Processor type and features”中选择和你的CPU相对应的正确的CPU选项,否则新内核可能无法正常工作。

2. 载入模块

要使用iptables,还必须载入相关模块。可以使用以下命令载入相关模块:

#modprobe iptable_tables

modprobe命令会自动载入指定模块及其相关模块。iptables_filter模块会在运行时自动载入。

三、 语法

1. 对链的操作

建立一个新链 (-N)

删除一个空链 (-X)

改变一个内建链的原则 (-P)

列出一个链中的规则 (-L)

清除一个链中的所有规则 (-F)

归零(zero) 一个链中所有规则的封包字节(byte) 记数器 (-Z)

2. 对规则的操作

加入(append) 一个新规则到一个链 (-A)的最后。

在链内某个位置插入(insert) 一个新规则(-I),通常是插在最前面。

在链内某个位置替换(replace) 一条规则 (-R)

在链内某个位置删除(delete) 一条规则 (-D)

删除(delete) 链内第一条规则 (-D)

3. 指定源地址和目的地址

通过--source/--src/-s来指定源地址(这里的/表示或者的意思,下同),通过--destination/--dst/-s来指定目的地址。可以使用以下四中方法来指定ip地址:

a. 使用完整的域名,如“www.linuxaid.com.cn”

b. 使用ip地址,如“192.168.1.1”

c. x.x.x.x/x.x.x.x指定一个网络地址,如“192.168.1.0/255.255.255.0”;

d. x.x.x.x/x指定一个网络地址,如“192.168.1.0/24”这里的24表明了子网掩码的有效位数,这是 UNIX环境中通常使用的表示方法。

缺省的子网掩码数是32,也就是说指定192.168.1.1等效于192.168.1.1/32

4. 指定协议

可以通过--protocol/-p选项来指定协议,比如-p tcp

5. 指定网络接口将

可以使用--in-interface/-i--out-interface/-o来指定网络接口。需要注意的是,对于INPUT链来说,只可能有-i,也即只会有进入的包;通理,对于OUTPUT链来说,只可能有-o,也即只会有出去的包。只有FORWARD链既可以有-i的网络接口,也可以有-o的网络接口。我们也可以指定一个当前并不存在的网络接口,比如ppp0,这时只有拨号成功后该规则才有效。

6. 指定ip碎片

TCP/IP通讯过程中,每一个网络接口都有一个最大传输单元(MTU),这个参数定义了可以通过的数据包的最大尺寸。如果一个数据包大于这个参数值时,系统会将其划分成更小的数个数据包(称之为ip碎片)来传输,而接收方则对这些ip碎片再进行重组以还原整个包。

但是再进行包过滤的时候,ip碎片会导致这样一个问题:当系统将大数据包划分成ip碎片传送时,第一个碎片含有完整的包头信息,但是后续的碎片只有包头的部分信息,比如源地址,目的地址。因此假如我们有这样一条规则:

iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 --dport 80 -j ACCEPT

并且这时的FORWARD的策略(policy)DROP时,系统只会让第一个ip

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12626361/viewspace-85562/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-01-03

  • 博文量
    1
  • 访问量
    680