iptables的使用

iptables的使用

一、iptables的规则链

规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中
规则链是防火墙规则 / 策略的集合
默认的5种规则链
INPUT :处理入站数据包
OUTPUT :处理出站数据包
FORWARD :处理转发数据包
POSTROUTING 链:在进行路由选择后处理数据包

           PREROUTING链:在进行路由选择前处理数据包

二、iptables的规则表

具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的“表”中
规则表是规则链的集合
默认的 4 个规则表
raw 表:确定是否对该数据包进行状态跟踪
mangle 表:为数据包设置标记
nat 表:修改数据包中的源、目标 IP 地址或端口

           filter表:确定是否放行该数据包(过滤)


三、数据包过滤匹配流程

规则表间的优先顺序
依次为: raw mangle nat filter
规则链间的匹配顺序
入站数据: PREROUTING INPUT
出站数据: OUTPUT POSTROUTING
转发数据: PREROUTING FORWARD POSTROUTING
规则链内的匹配顺序
按顺序依次进行检查,找到相匹配的规则即停止( LOG 策略会有例外)
若在该链内找不到相匹配的规则,则按该链的默认策略处理



四、iptables命令的语法格式

iptables 命令的语法格式
iptables  [-t 表名 ] 管理选项 [ 链名 ] [ 条件匹配 ] [-j 目标动作或跳转 ]
几个注意事项
不指定表名时,默认表示 filter
不指定链名时,默认表示该表内所有链

除非设置规则链的缺省策略,否则需要指定匹配条件


五、设置匹配数据包的条件

1、通用条件匹配
可直接使用,不依赖于其他的条件或扩展模块

           包括网络协议、IP地址、网络接口等匹配方式

(1)协议匹配
使用“ -p 协议名”的形式
协议名可使用在“ / etc /protocols ”文件中定义的名称

           常用的协议包括tcpudpicmp

iptables -I INPUT -p icmp -j REJECT
iptables -A FORWARD -p !icmp -j ACCEPT


(2)地址匹配
使用“ -s 源地址”、 -d 目标地址”的形式

           地址可以是单个IP地址、网络地址(带掩码长度)

iptables -A FORWARD -s 192.168.1.11 -j REJECT


(3)接口匹配

使用“ - i 网络接口名”、 -o 网络接口名”的形式,分别对应接收、发送数据包的网络接
iptables -A INPUT -i eth1 -s 192.168.0.0/12 -j DROP
iptables -A FORWARD -o eth1 -d 12.1.15.1 -j DROP

2、隐含条件匹配
一般需要以特定的协议匹配作为前提

包括端口、TCP标记、ICMP类型等匹配方式

(1)端口匹配
使用“ --sport 源端口”、“ -- dport 目标端口”的形式

           采用“端口1:端口2”的形式可以指定一个范围的端口

iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT


(2)TCP 标记匹配
使用“ -- tcp -flags 检查范围 被设置的标记”的形式

如“--tcp-flags  SYN,RST,ACK SYN”表示检查SYNRSTACK3个标记,只有SYN1时满足条件

iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK  -就REJECT


(3)ICMP 类型匹配
使用“ -- icmp -type ICMP 类型”的形式
ICMP 类型可以使用类型字符串或者对应的数值,例如 Echo-Request Echo-Reply

iptables -A INPUT -i eth0 -p icmp --icmp-type ECHO-Request -j DROP
iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT


3、显式条件匹配
需要使用“ -m 扩展模块 ”的形式明确指定匹配方式
包括多端口、 MAC 地址、 IP 地址范围、数据包状态等匹配方式

(1)MAC 地址匹配

使用“-m mac”结合“--mac-source MAC地址”的形式

iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3f -j DROP


(2)多端口匹配
使用“ -m multiport ”结合“ --sports 源端口列表”或者“ -- dports 目标端口列表”的形式

多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔

iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT


(3)IP 地址范围匹配
使用“ -m iprange ”结合“ -- src -range IP 范围”或者“ -- dst -range 目标 IP 范围” 的形式

以“-”符号连接起始IP地址、结束IP地址

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP


(4)数据包状态匹配
使用“ -m state ”结合“ --state 状态类型”的形式

同时表示多种状态时以逗号“,”分隔

iptables -A FORWARD -m state --state NEW -p tcp ! --svn -j DROP
iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT


常见的数据包状态包括:NEWESTABLISHEDRELATED

六、数据包控制

常见的数据包处理方式
ACCEPT :放行数据包
DROP :丢弃数据包
REJECT :拒绝数据包
LOG :记录日志信息,并传递给下一条规则处理
用户自定义链名 :传递给自定义链内的规则
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -t filter -N MyLAN1
iptables -A FORWARD -s 192.168.1.0/24 -j MyLAN1
iptables -A FORWARD -d 192.168.1.0/24 -j MyLAN1
iptables -A MyLAN1 -p icmp -j DROP







你可能感兴趣的:(防火墙,filter,IP地址,数据包)