分类: LINUX
2012-02-16 14:49:14
iptables内有3个table 每个table内有不同的chain(链)每个链都有策略动作
例如:iptables默认使用的是filter table
Filter table 的chain内容使用iptables -L 查看:
[root@CentOS6-78 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
filter内有3个链,input,forward,和output
策略规则和动作:
-A -append
在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换为多个地址时,这条规则会加到所有可能的地址(组合)后面。
例如:iptables -A INPUT -s 192.168.2.219 -p tcp --dport 22 -j ACCEPT
以上是添加一条规则, 允许从219 发送ssh连接请求到本机
-D -delete
从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。
例如:iptables -D INPUT 7 删除刚刚添加的规则,是input链中的第七条规则
-R -replace
从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地址,该命令会失败。规则序号从1开始。
-L -list
显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。
-F -flush
清空所选链。这等于把所有规则一个个的删除。
-X -delete-chain
删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链。
参数:
-p [!]protocol 协议类型tcp udp icmp等
例:iptables -A INPUT -p ! tcp -j ACCEPT
只允许除tcp协议意外的包进入
-s [!] source 包来源主机地址,(ip,域名)
例:iptables -A INPUT -s 192.168.2.1 -j Drop
不允许来自192.168.2.1 的任何数据进入
-d [!] destination 包的目的主机地址
-j jump 跳转
-j ACCEPT符合此规则的包跳转允许,-j DROP 符合此条件包被丢弃
-i [!] in-interface 进入网络接口
-o [!] out-interface 输出网络接口
-p protocol选择tcp时有以下选项可选:
--sport --source-port [!] 源端口
--dport --destionation-port [!] 目的端口
--tcp-flags [!] 匹配指定的tcp标记包
标记如下:SYN ACK FIN RST URG PSH ALL NONE