首页 百科知识 的语法规则

的语法规则

时间:2022-10-18 百科知识 版权反馈
【摘要】:关于添加、去除、编辑规则的命令,iptables一般语法如下:$ iptables[-t table]command[chain][match][-j target][-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。若不指定链,则删除所有的用户链。iptables命令的可选match部分指定信息包与规则匹配所应具有的特征。符号表示取反,不匹配指定的协议。此外还有iptables能够使用一些与模块匹配的扩展包。

8.3.3 iptables的语法规则

典型的防火墙配置双网卡:一个流入,一个流出。iptables读取流入和流出数据包的报头,将它们与规则集(Ruleset)进行匹配,将允许通过的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照规则所定义的方式来处理。通过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用iptables系统提供的特殊命令建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,iptables一般语法如下:

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

注意:iptables中的命令,均需区分大小写。

(1)表(table)

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

filter表用于一般的信息包过滤,是默认表。包括INPUT、OUTPUT和FORWARD链。

nat表用于要转发的信息包,包括PREROUTING、OUTPUT和POSTROUTING链。

mangle表包括一些规则来标记用于高级路由的信息包,包括INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING链。只有在信息包及其头部进行了任何修改,才可以使用mangle表。

(2)命令(command)

命令是iptables语法中最重要的部分。它告诉iptables指令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则。下面介绍一些常用的命令及作用。

●-A或--append,该命令将一条或多条规则附加到链的末尾。

●-D或--delete,该命令从链中删除指定编号或匹配条件的规则。

●-R或--replace,该命令从所选链中替换一条匹配的规则。

●-I或--insert,该命令在链的指定位置插入一条规则。

●-L或--list,该命令列出指定链中的所有规则。

●-F或--flush,该命令用于快速清除规则,如果指定链名,则该命令将清除链中所有规则,如果未指定链名,则清除所有链中的所有规则。

●-Z或--zero,该命令将指定链中所有规则的包字节计数器清零。

●-N或--new-chain,该命令用于创建一个指定名字的新链。

●-X或--delete-chain,该命令用于删除指定的用户自定义的链,必须保证链中的规则没有被使用时才能删除。若不指定链,则删除所有的用户链。

●-P或--policy,该命令用于设置默认规则,所有与链中任何规则都不匹配的信息包将被强制使用此链的策略。

●-E或--rename-chain,根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用户自定义链都不能是规则的目标。

●-H或--help,帮助。给出当前命令语法非常简短的说明。

(3)链(chain)

指定操作的链名。链指定处理分组的状态。在信息包过滤表中,规则被分组放在所谓的链(chain)中。INPUT链用于处理流入信息报的规则,凡是流入的信息包规则都被添加到IN-PUT链中;OUTPUT链用于处理流出信息报的规则;FORWARD链用于处理正在转发的信息包规则;PREROUTING链主要由指定信息包到达防火墙就改变它们的规则组成;POSTROUTING链由指定正当信息包离开防火墙时改变它们的规则所组成。

(4)匹配(match)参数

iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议匹配两大类。以下参数构成规则详述,如用于add、delete、replace、append和check命令。

●-p或--protocol[!]protocol,用于匹配特定协议类型的数据包。包括TCP、UDP、ICMP或用逗号分隔的任何这3种协议的组合列表以及ALL(用于所有协议),ALL是默认匹配的,当然也可以使用在/etc/protocols中定义的协议名。可以在协议前使用“!”符号表示取反,不匹配指定的协议。

●-s或--source[!]address[/mask],用于匹配数据包的源地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边“1”的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上“!”说明指定了相反的地址段。标志--src是这个选项的简写。

●-d或--destination[!]address[/mask],用于匹配数据包的目的地址。详细说明请参见-s标志的说明。标志--dst是这个选项的简写。

●-i或--in-interface[!][name],这是包经由该接口接收的可选的入口名称,包通过该接口接收(在链INPUT、FORWORD和PREROUTING中进入的包)。当在接口名前使用“!”说明后,指的是相反的名称。

●-o或--out-interface[!][name],这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)。当在接口名前使用“!”说明后,指的是相反的名称。

●[!]-f或--fragment,这意味着在分片的包中,规则只询问第二及以后的片。自那以后由于无法判断这种把包的源端口或目标端口(或者是ICMP类型的),这类包将不能匹配任何指定匹配的规则。如果“!”说明用在了“-f”标志之前,表示相反的意思。

此外还有iptables能够使用一些与模块匹配的扩展包。以下就是含于基本包内的扩展包,而且大多数都可以通过在前面加上“!”来表示相反的意思。

当--protocol tcp被指定,且其他匹配的扩展未被指定时,这些扩展被装载。它提供以下选项:

●--source-port[!][port[:port],源端口或端口范围指定。这可以是服务名或端口号,也可以指定包含的(端口)范围。如果首端口号被忽略,默认是“0”,如果末端口号被忽略,默认是“65535”,如果第二个端口号大于第一个,那么它们会被交换。这个选项可以使用--sport的别名。

●--destionation-port[!][port:[port],目标端口或端口范围指定。这个选项可以使用--dport别名来代替。

●--tcp-flags[!]mask comp,匹配指定的TCP标记。第一个参数是检查的标记,一个用逗号分开的列表,第二个参数是用逗号分开的标记表,是必须被设置的。标记如下:SYN ACK FIN RST URG PSH ALL NONE。因此这条命令:iptables-A FORWARD-p tcp--tcp-flags SYN,ACK,FIN,RST SYN只匹配那些SYN标记被设置而ACK、FIN和RST标记没有设置的包。

●[!]--syn,只匹配那些设置了SYN位而清除了ACK和FIN位的TCP包。这些包用于TCP连接初始化时发出请求;例如,大量的这种包进入一个接口发生堵塞时会阻止进入的TCP连接,而出去的TCP连接不会受到影响。这等于--tcp-flags SYN,RST,ACK SYN。如果“--syn”前面有“!”标记,表示相反的意思。

●--tcp-option[!]number,匹配设置了TCP选项的。

当protocol udp被指定,且其他匹配的扩展未被指定时,这些扩展被装载,它提供以下选项:

●--source-port[!][port:[port],源端口或端口范围指定。详见TCP扩展的--source-port选项说明。

●--destination-port[!][port:[port],目标端口或端口范围指定。详见TCP扩展的--destination-port选项说明。

当protocol icmp被指定,且其他匹配的扩展未被指定时,该扩展被装载。它提供以下选项:

●--icmp-type[!]typename,这个选项允许指定ICMP类型,可以是一个数值型的ICMP类型,或者是某个由命令iptables-p icmp-h所显示的ICMP类型名。

还有两个常用的扩展参数:

●mac匹配扩展,可以使用-m选项来扩展匹配内容。使用--match mac/-m mac匹配扩展可以用来检查ip数据包的源mac地址。只要在--mac-source后面跟上mac地址就可以了。

●limit匹配扩展,limit扩展是一个非常有用的匹配扩展。使用-m nat来指定,其后可以有两个选项:--limit avg:指定单位时间内允许通过的数据包的个数。单位时间可以是/second、/minute、/hour、/day或使用第一个字母,比如5/second和5/s是一样的,都是表示每秒可以通过5个数据包,缺省值是3/hour;--limit-burst number:指定触发事件的阀值,缺省值是5。

(5)目标(target)

目标是指对与规则匹配的信息包执行的操作。例如允许数据包通行的操作,还有其他许多可用的目标选项。下面介绍一些常用的目标。

●ACCEPT,接受数据包,允许数据包通过。

●DROP,丢弃数据包,不过任何响应。

●REJECT,丢弃数据包,并返回错误消息。

●RETURN,退出当前链。

●SNAT,转换数据包的源IP地址。

●DNAT,转换数据包的目的IP地址。

●LOG,用于写入日志。

●MARK,在mangle表中使用给指定数据包设置标记。

●TOS,在mangle表中使用给数据包设置特定TOS值。

●TTL,在mangle表中使用修改数据包的TTL参数。

●REDIRECT,转换数据包的目的IP地址为自身IP地址。上述列出的并不是所有的参数,详细参见iptables使用手册。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈