9.1.3 iptables命令格式

来源:互联网 发布:单片机lcd显示屏原理 编辑:程序博客网 时间:2024/05/21 21:38

9.1.3  iptables命令格式

RHEL 5中,iptables命令由iptables-1.3.5-1.2.1软件包提供,默认时,系统已经安装了该软件包,因此,用户可以直接输入iptables命令对防火墙中的规则进行管理。iptables命令相当复杂,具体格式如下所示。

 

iptables [-t 表名] <命令> [链名] [规则号] [规则] [-j 目标]

 

-t选项用于指定所使用的表,iptables防火墙默认有filternatmangle 3张表,也可以是用户自定义的表。表中包含了分布在各个位置的链,iptables命令所管理的规则就是         存在于各种链中的。该选项不是必需的,如果未指定一个具体的表,则默认使用的是          filter表。

命令选项是必须要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则。有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。还有一些命令要指定规则号。具体的命令选项名称及其与后续选项的搭配形式如下所示。

示例1

 

-A  <链名>  <规则>

 

功能:在指定链的末尾添加一条或多条规则。

示例2

 

-D  <链名>  <规则>

-D  <链名>  <规则号>

 

功能:从指定的链中删除一条或多条规则。可以按照规则的序号进行删除,也可以删除满足匹配条件的规则。

示例3

 

-R  <链名>  <规则号>  <规则>

 

功能:在指定的链中用新的规则置换掉某一规则号的旧规则。

示例4

 

-I  <链名>  [规则号]  <规则>

 

功能:在给出的规则序号前插入一条或多条规则,如果没有指定规则号,则默认是1

示例5

 

-L  [链名]

 

功能:列出指定链中的所有规则,如果没有指定链,则所有链中的规则都将被列出。

示例6

 

-F  [链名]

 

功能:删除指定链中的所有规则,如果没有指定链,则所有链中的规则都将被删除。

示例7

 

-N  <链名>

 

功能:建立一个新的用户自定义链。

示例8

 

-X  [链名]

 

功能:删除指定的用户自定义链,这个链必须没有被引用,而且里面也不包含任何规则。如果没有给出链名,这条命令将试着删除每个非内建的链。

示例9

 

-P <链名> <目标>

 

功能:为指定的链设置规则的默认目标,当一个数据包与所有的规则都不匹配时,将采用这个默认的目标动作。

示例10

 

-E  <旧链名>  <新链名>

 

功能:重新命名链名,对链的功能没有影响。

以上是有关iptables命令格式中有关命令选项部分的解释。iptables命令格式中的规则部分由很多选项构成,主要指定一些IP数据包的特征。例如,上一层的协议名称、源IP地址、目的IP地址、进出的网络接口名称等,下面列出构成规则的常见选项。

q      -p<协议类型>:指定上一层协议,可以是icmptcpudpall

q      -s<IP地址/掩码>:指定源IP地址或子网。

q      -d<IP地址/掩码>:指定目的IP地址或子网。

q      -i<网络接口>:指定数据包进入的网络接口名称。

q      -o<网络接口>:指定数据包出去的网络接口名称。

%注意:上述选项可以进行组合,每一种选项后面的参数前可以加“!”,表示取反。

对于-p选项来说,确定了协议名称后,还可以有进一步的子选项,以指定更细的数据包特征。常见的子选项如下所示。

q      -p tcp --sport <port>:指定TCP数据包的源端口。

q      -p tcp --dport <port>:指定TCP数据包的目的端口。

q      -p tcp --syn:具有SYN标志的TCP数据包,该数据包要发起一个新的TCP连接。

q      -p udp --sport <port>:指定UDP数据包的源端口。

q      -p udp --dport <port>:指定UDP数据包的目的端口。

q      -p icmp --icmp-type <type>:指定icmp数据包的类型,可以是echo-replyecho-request等。

上述选项中,port可以是单个端口号,也可以是以port1:port2表示的端口范围。每一选项后的参数可以加“!”,表示取反。

上面介绍的这些规则选项都是iptables内置的,iptables软件包还提供了一套扩展的规则选项。使用时需要通过-m选项指定模块的名称,再使用该模块提供的选项。下面列出几个模块名称和其中的选项,大部分的选项也可以通过“!”取反。

 

-m multiport --sports <port, port, >

 

功能:指定数据包的多个源端口,也可以以port1:port2的形式指定一个端口范围。

 

-m multiport --dports <port, port, >

 

功能:指定数据包的多个目的端口,也可以以port1:port2的形式指定一个端口范围。

 

-m multiport --ports <port, port, >

 

功能:指定数据包的多个端口,包括源端口和目的端口,也可以以port1:port2的形式指定一个端口范围。

 

-m state --state <state>

 

功能:指定满足某一种状态的数据包,state可以是INVALIDESTABLISHEDNEWRELATED等,也可以是它们的组合,用“,”分隔。

 

-m connlimit  --connlimit-above <n>

 

功能:用于限制客户端到一台主机的TCP并发连接总数,n是一个数值。

 

-m  mac  --mac-source  <address>

 

功能:指定数据包的源MAC地址,addressxx:xx:xx:xx:xx:xx形式的48位数。

-m选项可以提供的模块名和子选项内容非常多,为iptables提供了非常强大、细致的功能,所有的模块名和子选项可以通过“man iptables”命令查看iptables命令的手册页       获得。

最后,iptables命令中的-j选项可以对满足规则的数据包执行指定的操作,其后的“目标”可以是以下内容。

q      -j ACCEPT:将与规则匹配的数据包放行,并且该数据包将不再与其他规则匹配,而是跳向下一条链继续处理。

q      -j REJECT:拒绝所匹配的数据包,并向该数据包的发送者回复一个ICMP错误通知。该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

q      -j DROP:丢弃所匹配的数据包,不回复错误通知。该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

q      -j REDIRECT:将匹配的数据包重定向到另一个位置,该动作完成后,会继续与其他规则进行匹配。

q      -j LOG:将与规则匹配的数据包的相关信息记录在日志(/var/log/message)中,并继续与其他规则匹配。

q      -j <规则链名称>:数据包将会传递到另一规则链,并与该链中的规则进行匹配。

除了上述目标动作外,还有一些与NAT有关的目标,将在9.4节中讲述。所有的目标也可以通过查看iptables命令的手册页获得。