iptables从入门到精通

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

iptables从入门到精通

一.主要知识点:

1. Iptables表链结构

2. 数据包过滤流程

3. Iptables书写规则

4. Iptables条件匹配

5. Iptables数据包控制

6. Iptables七层过滤

7. Iptables脚本

二.具体的知识点介绍

1. Iptables表链结构

1)默认的4个规则表

* raw表:确定是否对该数据包进行状态跟踪

* mangle表:为数据包设置标记

* nat表:修改数据包中的源、目标IP地址或端口

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

2)默认的5种规则链

* INPUT:处理入站数据包

* OUTPUT:处理出站数据包

* FORWARD:处理转发数据包

* POSTROUTING链:在进行路由选择后处理数据包

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

2. 数据包过滤流程

规则表间的优先顺序

* 依次为:raw à mangle à nat à filter

规则链间的匹配顺序

* 入站数据:PREROUTING à INPUT

* 出站数据:OUTPUT à POSTROUTING

* 转发数据:PREROUTING à FORWARD à POSTROUTING 如图:

3. Iptables书写规则

iptables命令的语法格式

* iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转] 几个注意事项

* 不指定表名时,默认表示filter表

* 不指定链名时,默认表示该表内所有链

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

清除规则

* -D:删除指定位置或内容的规则

* -F:清空规则链内的所有规则

* -Z:清空计数器

自定义规则链

* -N:创建一条新的规则链

* -X:删除自定义的规则链

其他

* -h:查看iptables命令的使用帮助

例如:

[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT

[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT

[root@localhost ~]# iptables -P INPUT DROP

[root@localhost ~]# iptables -L INPUT --line-numbers

Chain INPUT (policy DROP)

num target prot opt source destination

1 ACCEPT udp -- anywhere anywhere

2 ACCEPT icmp -- anywhere anywhere

3 ACCEPT tcp -- anywhere anywhere

4. Iptables条件匹配

1)通用条件匹配

协议匹配

* 使用“-p 协议名”的形式

* 协议名可使用在“/etc/protocols”文件中定义的名称

* 常用的协议包括tcp、udp、icmp等

地址匹配

* 使用“-s 源地址”、“-d 目标地址”的形式

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

接口匹配

* 使用“-i 网络接口名”、“-o 网络接口名”的形式,分别对应接收、发送数据包的网络接口

例如:

[root@localhost ~]# iptables -I INPUT -p icmp -j REJECT

[root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT

[root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT

[root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP

[root@localhost ~]# iptables -A FORWARD -o eth1 -d 61.35.4.3 -j DROP

2)Iptables隐含条件匹配

端口匹配

* 使用“--sport 源端口”、“--dport 目标端口”的形式

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

TCP标记匹配

* 使用“--tcp-flags 检查范围被设置的标记”的形式

* 如“--tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件

ICMP类型匹配

* 使用“--icmp-type ICMP类型”的形式

* ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply 例如:

[root@localhost ~]# iptables -A FORWARD -p tcp --dport 22 -j ACCEPT

[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT

[root@localhost ~]# iptables -A INPUT -i eth0 -p icmp --icmp-type Echo-Request -j DROP

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT 3)Iptables扩展条件匹配

MAC地址匹配

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

多端口匹配

* 使用“-m multiport”结合“--sports 源端口列表”或者“--dports 目标端口列表”的形式

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

IP地址范围匹配

* 使用“-m iprange”结合“--src-range 源IP范围”或者“--dst-range 目标IP范围”的形式

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

例如:

[root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP

[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport

20,21,25,110,1250:1280 -j ACCEPT

[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range

192.168.1.20-192.168.1.99 -j DROP

5. Iptables数据包控制

常见的数据包处理方式

相关文档
最新文档