乔部落格

世界上有10种人:认识二进制的和不认识二进制的

netfilter/iptables 简介

joe posted @ 2010年4月24日 17:44 in Unix/Linux with tags iptables , 3433 阅读

netfilter/iptables是linux下的防火墙软件,netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的 链(chain)中。我马上会详细讨论这些规则以及如何建立这些规则并将它们分组在链中。

虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件 netfilter和 iptables 组成。

netfilter 组件也称为 内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为 用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。

下图简要说明iptables的组成:

iptables由三个表(table)组成:filter, nat, mangle. 每个表又由多个链(chain)组成。

iptables的规则如下图所示:

通过向防火墙提供有关对来自某个源、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用 netfilter/iptables 系统提供的特殊命令 iptables ,建立这些规则,并将其添加到内核空间的特定信息包过滤表内的链中。关于添加/除去/编辑规则的命令的一般语法如下:

$ iptables [-t table] command [match] [target]

表(table)

[-t table] 选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三种可用的表选项: filter 、 nat 和 mangle 。该选项不是必需的,如果未指定,则 filter 用作缺省表。

filter 表用于一般的信息包过滤,它包含 INPUT 、 OUTPUT 和 FORWARD 链。nat 表用于要转发的信息包,它包含 PREROUTING 、 OUTPUT 和 POSTROUTING 链。如果信息包及其头内进行了任何更改,则使用 mangle 表。该表包含一些规则来标记用于高级路由的信息包,该表包含 PREROUTING 和 OUTPUT 链。

注: PREROUTING 链由指定信息包一到达防火墙就改变它们的规则所组成,而 POSTROUTING 链由指定正当信息包打算离开防火墙时改变它们的规则所组成。

命令(command)

上面这条命令中具有强制性的 command 部分是 iptables 命令的最重要部分。它告诉 iptables 命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则。以下是最常用的一些命令:

* -A 或 –append : 该命令将一条规则附加到链的末尾。
示例:

$ iptables -A INPUT -s 205.168.0.1 -j ACCEPT

该示例命令将一条规则附加到 INPUT 链的末尾,确定来自源地址 205.168.0.1 的信息包可以 ACCEPT 。
* -D 或 –delete : 通过用 -D 指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则。下面的示例显示了这两种方法。
示例:

$ iptables -D INPUT --dport 80 -j DROP
$ iptables -D OUTPUT 3

第一条命令从 INPUT 链删除规则,它指定 DROP 前往端口 80 的信息包。第二条命令只是从 OUTPUT 链删除编号为 3 的规则。
* -P 或 –policy : 该命令设置链的缺省目标,即策略。所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略。
示例:

$ iptables -P INPUT DROP

该命令将 INPUT 链的缺省目标指定为 DROP 。这意味着,将丢弃所有与 INPUT 链中任何规则都不匹配的信息包。
* -N 或 –new-chain : 用命令中所指定的名称创建一个新链。
示例:

$ iptables -N allowed-chain

* -F 或 –flush : 如果指定链名,该命令删除链中的所有规则,如果未指定链名,该命令删除所有链中的所有规则。此参数用于快速清除。
示例:

$ iptables -F FORWARD
$ iptables -F

* -L 或 –list : 列出指定链中的所有规则。
示例:

$ iptables -L allowed-chain

匹配(match)

iptables 命令的可选 match 部分指定信息包与规则匹配所应具有的特征(如源和目的地地址、协议等)。匹配分为两大类: 通用匹配和 特定于协议的匹配。这里,我将研究可用于采用任何协议的信息包的通用匹配。下面是一些重要的且常用的通用匹配及其示例和说明:

* -p 或 –protocol : 该通用协议匹配用于检查某些特定协议。协议示例有 TCP 、 UDP 、 ICMP 、用逗号分隔的任何这三种协议的组合列表以及 ALL (用于所有协议)。 ALL 是缺省匹配。可以使用 ! 符号,它表示不与该项匹配。
示例:

$ iptables -A INPUT -p TCP, UDP
$ iptables -A INPUT -p ! ICMP

在上述示例中,这两条命令都执行同一任务 — 它们指定所有 TCP 和 UDP 信息包都将与该规则匹配。通过指定 ! ICMP ,我们打算允许所有其它协议(在这种情况下是 TCP 和 UDP ),而将 ICMP 排除在外。
* -s 或 –source : 该源匹配用于根据信息包的源 IP 地址来与它们匹配。该匹配还允许对某一范围内的 IP 地址进行匹配,可以使用 ! 符号,表示不与该项匹配。缺省源匹配与所有 IP 地址匹配。
示例:

$ iptables -A OUTPUT -s 192.168.1.1
$ iptables -A OUTPUT -s 192.168.0.0/24
$ iptables -A OUTPUT -s ! 203.16.1.89

第二条命令指定该规则与所有来自 192.168.0.0 到 192.168.0.24 的 IP 地址范围的信息包匹配。第三条命令指定该规则将与除来自源地址 203.16.1.89 外的任何信息包匹配。
* -d 或 –destination : 该目的地匹配用于根据信息包的目的地 IP 地址来与它们匹配。该匹配还允许对某一范围内 IP 地址进行匹配,可以使用 ! 符号,表示不与该项匹配。
示例:

$ iptables -A INPUT -d 192.168.1.1
$ iptables -A INPUT -d 192.168.0.0/24
$ iptables -A OUTPUT -d ! 203.16.1.89

目标(target)

我们已经知道,目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。下面是常用的一些目标及其示例和说明:

* ACCEPT : 当信息包与具有 ACCEPT 目标的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历链(虽然该信息包可能遍历另一个表中的其它链,并且有可能在那里被丢弃)。该目标被指定为 -j ACCEPT 。
* DROP : 当信息包与具有 DROP 目标的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。该目标被指定为 -j DROP 。
* REJECT : 该目标的工作方式与 DROP 目标相同,但它比 DROP 好。和 DROP 不同, REJECT 不会在服务器和客户机上留下死套接字。另外, REJECT 将错误消息发回给信息包的发送方。该目标被指定为 -j REJECT 。
示例:

$ iptables -A FORWARD -p TCP --dport 22 -j REJECT

* RETURN : 在规则中设置的 RETURN 目标让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如 INPUT 之类的主链,则使用该链的缺省策略处理信息包。它被指定为 -jump RETURN 。示例:

$ iptables -A FORWARD -d 203.16.1.89 -jump RETURN
CBSE Class 2 English 说:
2022年9月15日 12:26

Download the PDF version of every chapter of Marigold & Raindrops for the CBSE Board Class 2 English Sample Paper 2023. The Marigold & Raindrops solved question paper has been created by subject specialists from the board and is recommended for at-home practise. CBSE Class 2 English Question Paper It is advised to obtain a comprehensive set of practise questions in order to improve one's performance on all Class II level exams.

net worth 说:
2023年12月12日 16:00

All the basic information about every celebrity is available now on the largest database of idol net worth where you can find all the information and net worth of a singer, actor, businessman...


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter