iptables常⽤命令解析
查看当前iptables规则:
iptables -n -L --line-numbers
该命令会以列表的形式显⽰出当前使⽤的 iptables 规则,并不做解析,每⼀条规则前⾯的编号可以⽤来做为其它操作,例如后⾯的删除操作的参数,很有⽤。
[root@localhost ~]# iptables -n -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/00.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/00.0.0.0/0
ACCEPT all -- 0.0.0.0/00.0.0.0/0
ACCEPT tcp -- 0.0.0.0/00.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/00.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/00.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables 规则中各指令(command)的含义:
各种指令如下。既可以使⽤长指令,也可以使⽤短指令字母,例如,
iptables --append chain firewall-rule
等价于
iptables -A chain firewall-rule
另外,指令后⾯所带的参数/选项,如果以 [ ] 包括,则表⽰该参数/选项可省略(有缺省值)。
--APPEND,-A
指令形式:
iptables -A chain firewall-rule
-A chain – 指定规则应该添加到的 chain 的名称。例如,使⽤ INPUT 将会把规则添加到默认的 INPUT(⼊站)链的末尾,⽽使⽤OUTPUT 则会将规则添加到出站链的末尾。
firewall-rule – 包含各种参数选项的防⽕墙规则,⼀次⼀条规则
“-A” 的意思是附加(append),并不是添加(Add)的意思。它是将规则添加到已有的防⽕墙链(chain)的末尾的操作指令。这是特别重要的,因为规则在 iptables 中的位置⾮常重要,所以千万要记住, -A 的意思是将规则添加到末尾。因为⼀般情况下 iptables 中最后⼀条规则是丢弃所有数据包。如果你已经有了⼀条这样的规则,使⽤ -A 参数添加的规则将会在丢弃规则之后,以⾄于新规则根本⽆法起作⽤。如果要插⼊到中间位置,需要⽤ -I 指令。
--DELETE,-D
从 chain 中删除与指定规则匹配,或指定编号的条⽬。
指令形式:
iptables -D chain firewall-rule
表⽰从 chain 中删除对应规则 firewall-rule 的那⼀条⽬。这种形式删除规则⽐较⿇烦,通常⽤下⾯的形式
iptables -D chain rulenum
删除 chain 中编号为 rulenum 的那条规则。1 表⽰第⼀条。
--INSERT,-I
指令形式:
iptables -I chain [rulenum] firewall-rule
将 firewall-rule 添加为 chain 中的第 rulenum 条规则,原先的第 rulenum 条及以后各条的需要顺次 +1。如上⾯⼀样,1 表⽰该
chain 中第⼀条。默认为 1,即,如果没有指定 rulenum 则将该 chain 中第⼀条规则替换掉。
--REPLACE,-R
指令形式:
iptables -R chain [rulenum] firewall-rule
将 chain 中原来的第 rulenum 条规则替换为 firewall-rule。如果没有指定 rulenum,则替换该 chain 中第⼀条。
--LIST,-L
指令形式:
iptables -L [chain [rulenum]]
列出 chain 或者所有 chain(当未指定 chain 名称时)中的第 rulenum 条规则或者所有规则(当未指定 rulenum 时)。不过要注意,如果未指定 chain 则不能带 rulenum 参数。
如果在 -L 后再加上 –line-numbers,则表⽰在每条规则前⾯显⽰序号。如,iptables -L --line-numbers
--LIST-RULES,-S
指令形式:
iptables -S [chain [rulenum]]
打印出 chain 或者所有 chain(当未指定 chain 名称时)中的第 rulenum 条规则或者所有规则(当未指定 rulenum 时)。不过要注意,如果未指定 chain 则不能带 rulenum 参数。
--FLUSH,-F
指令形式:
iptables -F [chain]
清空 chain 或所有 chain (当未指定 chain 名称时)中的规则。
--ZERO,-Z
指令形式:
iptables -Z [chain [rulenum]]
把 chain 或者所有 chain(当未指定 chain 名称时)的包及字节的计数器清空。
--NEW,-N
指令形式:
--new -N chain
创建⼀个名称为 chain 的新链。
--DELETE-CHAIN,-X
指令形式:
iptables -X [chain]
删除⽤户⾃定义 chain 或者所有⽤户⾃定义 chain(当未指定 chain 名称时)。该指令不影响预设规则(如 INPUT、OUTPUT、FORWARD 等)。
--POLICY,-P
指令形式:
iptables -P chain target
改变 chain 的策略为 target。
--RENAME-CHAIN,-E
指令形式:
iptables -E old-chain new-chain
将 old-chain 名称更改为 new-chain。这样做可以使所有引⽤ old-chain 的规则失效。
iptables 规则中各参数的含义:
-P 代表协议(PROTOCOL)
ssh命令指定端口指明当前规则针对的传输协议(如 TCP、UDP、ICMP 等)
可能的参数值有:tcp, udp, icmp, all
使⽤ “all” 表⽰适⽤于所有协议。⽽如果在规则中不指定 -p 参数,则默认使⽤ “all” 参数。⼀般不使⽤ “all” 这个值,要么指定某个特定的协议,要么就指定 -p 参数。
-p 的参数值既可以⽤名称(如 tcp)也可以⽤协议对应的数值(如 6 代表 tcp 协议)
/etc/protocols ⽂件中包含了所有允许的协议名称和相应数值
也可以⽤长的参数名 --protocol
-S 代表源地址(SOURCE)
指定数据包的源地址
可以是 ip 地址,或者⽹络地址,或者主机名(hostname)
例如:-s 192.168.1.101 表⽰针对特定的 ip 地址
对于⽹络掩码,使⽤ /mask。例如,“-s 192.168.1.0/24″表⽰⽹络掩码为 255.255.255.0 的所有 192.168.1.x 地址都匹配。
如果不指定 -s 参数,默认匹配所有源地址
也可以⽤长参数名 --src 或者 --source
-D 代表⽬的地址(DESTINATION)
指定数据包的⽬的地址
使⽤⽅式与上⾯的 “-s” ⼀样(不同之处仅在于 -s 指源,⽽ -d 表⽰⽬的地址)
也可以⽤长参数名 --dst 或者 --destination
-J 代表跳转(TARGET)
j 的意思是 “jump”(跳转)到⽬标
指定当某个数据包满⾜该规则的时候的就跳转到的下⼀个处理规则,⽽不再顺序执⾏后⾯的规则判断
可能的值有:ACCEPT, DROP, QUEUE, RETURN,分别表⽰接受、丢弃、进⼊队列,返回(跳出,通常是从某个 chain 中跳回到调⽤该 chain 的上层 chain)
也可以跳转到某个⾃定义的 chain 中,使⽤该 chain 的名称做为跳转⽬标
-I 代表 IN INTERFACE(⼊站接⼝)
i 表⽰ “input interface”(输⼊接⼝,即,指定⽹络数据处理的⽹卡,⼀般 eth0 即表⽰第⼀块有线⽹卡的外⽹接⼝,lo 表⽰局域⽹接
⼝)
可以直接理解为 “-i” 表⽰接⼝。不过,-i 和 -o 都表⽰接⼝,-i 表⽰输⼊时的接⼝,⽽ -o 特指输出⽤的接⼝。
指定数据包进⼊ INPUT、FORWARD 和 PREROUTING 链时经由的接⼝。
例如:-i eth0 表⽰该规则应该针对从 eth0 接⼝进来的数据包。
如果不指定 -i 参数,则经由系统中所有可⽤的接⼝进⼊的数据包都可以匹配该规则。
也可以使⽤长参数 –in-interface
-O 代表 OUT INTERFACE(出站接⼝)
o 表⽰ “output interface”(出站经由接⼝)
指定发送出去的数据包进⼊ INPUT、FORWARD 和 PREROUTING 链时经由的接⼝。
如果不指定 -o 参数,则经由系统中所有可⽤的接⼝发出的数据包都可以匹配该规则。
也可以使⽤长参数 --out-interface
其它防⽕墙参数选项
上⾯某些防⽕墙参数还有属于它⾃⼰的参数选项,可以与其配合使⽤。下⾯是⼀些常⽤的选项。
要使⽤这些参数选项,需要指定相应的参数,例如,要使⽤ “--sport” 选项,应该在规则中指定 “-p tcp” (或者 “-p udp”)等参数。
注意:所有这些选项前⾯都是 --(2个短横线 -- )。
--SPORT 表⽰ SOURCE PORT (源端⼝,⽤于 -P TCP, 或者 -P UDP)
默认匹配所有端⼝(未特别指定时)
可以指定端⼝号(数字),也可以指定端⼝名称。例如,默认的 SSH 端⼝号码为 22,名称为 ssh,可以表⽰为 “–sport 22″或者 “–sport ssh”。
/etc/services ⽂件包含了所有允许的端⼝名称和对应的端⼝号码。
在规则中使⽤号码⽐使⽤名称要好(效率⾼些)
要匹配⼀个端⼝范围,使⽤英⽂半⾓冒号(:),如 22:100 匹配从 22 到 100 的所有端⼝号。
也可以使⽤长名称 --source-port
--DPORT 表⽰ DESTINATION PORT (⽬的端⼝,-P TCP, 或者 -P UDP)
与 –sport 的⽤法相同,区别仅在于对象是⽬的端⼝
也可以使⽤长名称 –destination-port
--TCP-FLAGS 表⽰ TCP FLAGS (⽤于 -P TCP)
可以使⽤英⽂半⾓逗号(,)来指定多个 TCP 状态标识
可能值有:SYN, ACK, FIN, RST, URG, PSH。可以全⽤,也可以不⽤。
--ICMP-TYPE 表⽰ ICMP TYPE (ICMP 类型,⽤于 -P ICMP)
当使⽤ icmp 协议 “-p icmp” 的时候,可以使⽤ “–icmp-type” 特别指定 ICMP 类型
例如,使⽤ “–icmp-type 0″表⽰ “Echo Reply”,“–icmp-type 8″表⽰ “Echo”。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论