规则类别

规则表

  1. 表作用:容纳各种规则链<br /> 划分依据:根据防火墙对数据的处理方式<br /> 四表:<br /> raw表:确定是否对该数据包进行状态跟踪<br /> mangle表:为数据包设置标记<br /> nat表:修改数据包中的源、目标IP地址或端口<br /> filter表:确定是否放行该数据包(过滤)

规则链

  1. 规则作用:对数据包进行过滤或处理<br /> 链作用:容纳各种防火墙规则<br /> 链的分类依据:处理数据包的不同时机<br /> 五链:<br /> INPUT:处理入站数据包<br /> OUTPUT:处理出站数据包<br /> FORWARD:处理转发数据包<br /> POSTROUTING链:在进行路由选择后处理数据包<br /> PREROUTING

应用顺序

  1. 规则表之间<br /> raw---mangle---nat---filter<br /> 规则链之间的顺序<br /> 入站:PREROUTING INPUT<br /> 出站:OUTPUT POSTROUTING<br /> 转发:PREROUTING FORWARD POSTROUTING<br /> 规则链内的匹配顺序<br /> 按顺序依次检查,匹配即停止(LOG策略例外)<br /> 若找不到相匹配规则,则按该链的默认策略处理

规则定义

语法构成

  1. iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
  2. 几个注意事项<br /> 不指定表名时,默认指filter表<br /> 不指定链名时,默认指表内的所有链<br /> 除非设置链的默认策略,否则必须指定匹配条件<br /> 选项、链名、控制类型使用大写字母,其余均为小写
  3. 数据包的常见控制类型<br /> ACCEPT:允许通过<br /> DROP:直接丢弃,不给出任何回应<br /> REJECT:拒绝通过,必要时会给出提示<br /> LOG:记录日志信息,然后传给下一条规则继续匹配

添加新的规则

  1. -A:在链的末尾追加一条规则<br /> -I:(i大写)在链的开头(或指定序号)插入一条规则

查看规则列表

  1. -L:列出所有的规则条目<br /> -n:以数字形式显示地址、端口等信息<br /> -v:以更详细的方式显示规则信息<br /> --line-numbers:查看规则时,显示规则的序号

删除、清空规则

  1. -D:删除链内指定序号(或内容)的一条规则<br /> -F:清空所有的规则<br />实例如下:<br />iptables -D INPUT 3<br />#删除INPUT链中的第三行

设置默认策略

默认策略一般是其余规则路由全部设好以后再设置的,最后设置
-P:为指定的链设置默认规则
如下:
iptables -t filter -P FORWARD DROP
#在filter表的FORWARD链中,拒绝所有信息通过

iptables -P OUTPUT ACCEPT
#在OUTPUT链中,允许所有信息通过

条件匹配

常用的通用匹配条件
1) 协议匹配:-p 协议名
2) 地址匹配:-s 源地址、-d 目的地址
3) 接口匹配:-i 入站网卡、-o 出站网卡
4) 端口匹配:—sport 源端口、—dport 目的端口
5) Icmp类型匹配:—icmp-type ICMP类型
6) 多端口匹配:-m multiport —sport 源端口列表
7) Ip范围匹配:-m iprange —src-range ip范围
8) MAC地址匹配:-m mac-mac1-source MAC地址
9) 状态匹配:-m state —state 连接状态

实例如下:
#iptables -t filter -A INPUT -p tcp -j ACCEPT
#在filter表INPUT链的末尾添加允许所有tcp协议(入站)规则

iptables -I INPUT -p udp -j ACCEPT
#在filter表INPUT链的开头添加允许所有udp协议(入站)规则

iptables -I INPUT 2 -p icmp -j ACCEPT
#在filter表INPUT链的开头第二行添加允许所有icmp协议(入站)规则

iptables –A INPUT –p icmp REJECT
允许外界ping本机服务器

iptables –I INPUT –i eth0 –s 10.20.30.0/24 –j DROP
禁止某网段的所有信息进入

iptables –A INPUT –p tcp/udp/icmp DROP
禁止某协议进入

iptables -A FORWARD -p ! icmp -j ACCEPT
#除icmp协议以外的任何信息都可以通过FORWARD

iptables -A FORWARD -s 192.168.4.0/24 -p udp —dport 53 -j ACCEPT

iptables -A INPUT -p icmp —icmp-type 8 -j DROP
# iptables -A INPUT -p icmp —icmp-type 0 -j ACCEPT

iptables -A FORWARD -p tcp -m iprange —src-range 192.168.4.21-192.168.4.28 -j ACCEPT
# iptables -A INPUT -m mac —mac-source 00:0c:29:c0:55:3f -j DROP