首页 > 其他 > 详细

iptables的使用

时间:2014-02-20 12:20:20      阅读:371      评论:0      收藏:0      [点我收藏+]

iptables的使用

一、iptables的规则链

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

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

二、iptables的规则表

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

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


三、数据包过滤匹配流程

规则表间的优先顺序
依次为:rawmanglenatfilter
规则链间的匹配顺序
入站数据:PREROUTINGINPUT
出站数据:OUTPUTPOSTROUTING
转发数据:PREROUTINGFORWARDPOSTROUTING
规则链内的匹配顺序
按顺序依次进行检查,找到相匹配的规则即停止(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-RequestEcho-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-rangeIP范围”或者“--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







本文出自 “linux学习和交流空间” 博客,请务必保留此出处http://yangcan918.blog.51cto.com/5518117/1360823

iptables的使用

原文:http://yangcan918.blog.51cto.com/5518117/1360823

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!