⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1628.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<br>
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要从 netfilter.org 下载该工具并安装使用它。<br>
<br>
通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用目标 ACCEPT 允许该信息包通过。还可以使用目标 DROP 或 REJECT 来阻塞并杀死信息包。对于可对信息包执行的其它操作,还有许多其它目标。<br>
<br>
根据规则所处理的信息包的类型,可以将规则分组在链中。处理入站信息包的规则被添加到 INPUT 链中。处理出站信息包的规则被添加到 OUTPUT 链中。处理正在转发的信息包的规则被添加到 FORWARD 链中。这三个链是基本信息包过滤表中内置的缺省主链。另外,还有其它许多可用的链的类型(如 PREROUTING 和 POSTROUTING),以及提供用户定义的链。每个链都可以有一个策略,它定义“缺省目标”,也就是要执行的缺省操作,当信息包与链中的任何规则都不匹配时,执行此操作。<br>
<br>
建立规则并将链放在适当的位置之后,就可以开始进行真正的信息包过滤工作了。这时内核空间从用户空间接管工作。当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地。我们将这个过程称为路由。<br>
<br>
如果信息包源自外界并前往系统,而且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表的 INPUT 链。如果信息包源自系统内部或系统所连接的内部网上的其它源,并且此信息包要前往另一个外部系统,那么信息包被传递到 OUTPUT 链。类似的,源自外部系统并前往外部系统的信息包被传递到 FORWARD 链。<br>
<br>
接下来,将信息包的头信息与它所传递到的链中的每条规则进行比较,看它是否与某条规则完全匹配。如果信息包与某条规则匹配,那么内核就对该信息包执行由该规则的目标指定的操作。但是,如果信息包与这条规则不匹配,那么它将与链中的下一条规则进行比较。最后,如果信息包与链中的任何规则都不匹配,那么内核将参考该链的策略来决定如何处理该信息包。理想的策略应该告诉内核 DROP 该信息包。图 1 用图形说明了这个信息包过滤过程。<br>
<br>
图 1. 信息包过滤过程<br>
http://www-900.ibm.com/developerWorks/cn/linux/network/s-netip/diagram1.jpg<br>
<br>
安装 netfilter/iptables 系统<br>
因为 netfilter/iptables 的 netfilter 组件是与内核 2.4.x 集成在一起的,所以只需要下载并安装 iptables 用户空间工具。<br>
<br>
需求<br>
下面是安装 netfilter/iptables 系统的需求:<br>
<br>
硬件:要使用 netfilter/iptables,需要有一个运行 Linux OS 并连接到因特网、LAN 或 WAN 的系统。<br>
软件:带有内核 2.4 或更高版本的任何版本的 Linux OS。可以从 http://www.kernel.org 下载最新版本的内核。还需要从 http://www.netfilter.org 下载 iptables 这个用户空间工具,因为这个工具不是内核的一部分。但对于 RedHat Linux 版本 7.1 或更高版本,不需要下载此工具,因为在版本 7.1 或更高版本中,标准安装中已经包含了此工具。<br>
用户:至少对 Linux OS 有中等水平的了解,以及具备配置 Linux 内核的经验。<br>
<br>
安装前的准备<br>
在开始安装 iptables 用户空间工具之前,需要对系统做某些修改。首先,需要使用 make config 命令来配置内核的选项。在配置期间,必须通过将 CONFIG_NETFILTER 和 CONFIG_IP_NF_IPTABLES 选项设置为 Y 来打开它们,因为这是使 netfilter/iptables 工作所必需的。下面是可能要打开的其它选项:<br>
<br>
CONFIG_PACKET:如果要使应用程序和程序直接使用某些网络设备,那么这个选项是有用的。<br>
CONFIG_IP_NF_MATCH_STATE:如果要配置有状态的防火墙,那么这个选项非常重要而且很有用。这类防火墙会记得先前关于信息包过滤所做的决定,并根据它们做出新的决定。我将在 netfilter/iptables 系统的优点一节中进一步讨论这方面的问题。<br>
CONFIG_IP_NF_FILTER:这个选项提供一个基本的信息包过滤框架。如果打开这个选项,则会将一个基本过滤表(带有内置的 INPUT、FORWARD 和 OUTPUT 链)添加到内核空间。<br>
CONFIG_IP_NF_TARGET_REJECT:这个选项允许指定:应该发送 ICMP 错误消息来响应已被 DROP 掉的入站信息包,而不是简单地杀死它们。<br>
现在,可以准备安装这个用户空间工具了。<br>
<br>
安装用户空间工具<br>
在下载 iptables 用户空间工具的源代码(它类似于 iptables-1.2.6a.tar.bz2)之后,可以开始安装。您需要以 root 身份登录来执行安装。清单 1 给出了一个示例,它指出了安装该工具所需的命令、其必要的次序及其说明。<br>
<br>
清单 1. 用户空间工具安装的示例<br>
First, unpack the tool package into a directory:<br>
<br>
# bzip2 -d iptables-1.2.6a.tar.bz2<br>
# tar -xvf iptables-1.2.6a.tar<br>
<br>
This will unpack the tool source into a directory named iptables-1.2.6a.<br>
Now change to the iptables-1.2.6a directory:<br>
<br>
# cd iptables-1.2.6a<br>
<br>
The INSTALL file in this directory contains a lot of useful information<br>
on compiling and installing this tool.<br>
Now compile the userspace tool using the following command:<br>
<br>
# make KERNEL_DIR=/usr/src/linux/<br>
<br>
Here the KERNEL_DIR=/usr/src/linux/ specifies the path to the kernel's<br>
directory. If the directory of kernel happens to be different on some<br>
systems, the appropriate directory path should be substituted for<br>
/usr/src/linux.<br>
Now install the source binaries using the following command:<br>
<br>
# make install KERNEL_DIR=/usr/src/linux/<br>
<br>
Now the installation is complete.<br>
<br>
注:如果您有 RedHat Linux 版本 7.1 或更高版本,就不需要执行这里说明的前两个步骤。正如我们所知道的,该 Linux 分发版(distribution)的标准安装中包含了 iptables 用户空间工具。但在缺省情况下,这个工具是关闭的。为了使该工具运行,需要执行以下步骤(清单 2):<br>
<br>
清单 2. 在 RedHat 7.1 系统上设置用户空间工具的示例<br>
First you'll have to turn off the old ipchains module (predecessor of<br>
iptables) available in this OS package.<br>
This can be done using the following command:<br>
<br>
# chkconfig --level 0123456 ipchains off<br>
<br>
Next, to completely stop the ipchains module from running, so that it<br>
doesn't conflict with the iptables tool, you will have to stop the ipchains<br>
service using the following command:<br>
<br>
# service ipchains stop<br>
<br>
Now if you don't want to keep this old ipchains module on your system,<br>
uninstall it using the following command:<br>
<br>
# rpm -e ipchains<br>
<br>
Now you can turn on the iptables userspace tool with the following command:<br>
<br>
# chkconfig --level 235 iptables on<br>
<br>
Finally, you'll have to activate the iptables service to make the userspace<br>
tool work by using this command:<br>
<br>
# service iptables start<br>
<br>
Now the userspace tool is ready to work on a RedHat 7.1 or higher system.<br>
<br>
现在,一切都已妥当,并且 netfilter/iptables 系统应该正在运行,接下来,需要建立一些规则和链来过滤信息包。<br>
<br>
建立规则和链<br>
通过向防火墙提供有关对来自某个源、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用 netfilter/iptables 系统提供的特殊命令 iptables,建立这些规则,并将其添加到内核空间的特定信息包过滤表内的链中。关于添加/除去/编辑规则的命令的一般语法如下:<br>
<br>
$ iptables [-t table] command [match] [target]<br>
<br>
表(table)<br>
[-t table] 选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三种可用的表选项:filter、nat 和 mangle。该选项不是必需的,如果未指定,则 filter 用作缺省表。<br>
<br>
filter 表用于一般的信息包过滤,它包含 INPUT、OUTPUT 和 FORWARD 链。nat 表用于要转发的信息包,它包含 PREROUTING、OUTPUT 和 POSTROUTING 链。如果信息包及其头内进行了任何更改,则使用 mangle 表。该表包含一些规则来标记用于高级路由的信息包,该表包含 PREROUTING 和 OUTPUT 链。<br>
<br>
注:PREROUTING 链由指定信息包一到达防火墙就改变它们的规则所组成,而 POSTROUTING 链由指定正当信息包打算离开防火墙时改变它们的规则所组成。<br>
<br>
命令(command)<br>
上面这条命令中具有强制性的 command 部分是 iptables 命令的最重要部分。它告诉 iptables 命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则。以下是最常用的一些命令:<br>
<br>
-A 或 --append:该命令将一条规则附加到链的末尾。<br>
示例:<br>
$ iptables -A INPUT -s 205.168.0.1 -j ACCEPT<br>
<br>
该示例命令将一条规则附加到 INPUT 链的末尾,确定来自源地址 205.168.0.1 的信息包可以 ACCEPT。<br>
<br>
-D 或 --delete:通过用 -D 指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则。下面的示例显示了这两种方法。<br>
示例:<br>
$ iptables -D INPUT --dport 80 -j DROP<br>
$ iptables -D OUTPUT 3<br>
<br>
第一条命令从 INPUT 链删除规则,它指定 DROP 前往端口 80 的信息包。第二条命令只是从 OUTPUT 链删除编号为 3 的规则。<br>
<br>
-P 或 --policy:该命令设置链的缺省目标,即策略。<br>
所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略。<br>
示例:<br>
$ iptables -P INPUT DROP<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -