分类: 网络与安全
2011-09-28 10:55:06
IPtables语言
Iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]
Iptable[-t table] command [match] [-j target/jump]
#-t 指定表
#-j 指定处理动作
-t参数用来指定规则表,内建的规则表有三个:nat , mangle 和filter 表,当未指定规则表时,默认为filter。
表含义是:
Nat:此规则表拥有Prerouting (修改到来的包)和Postrouting(修改准备出去的包)、 OUTPUT(修改路由之前本地的包)规则链。主要功能为进行一对一,一对多,多对多,埠转送等网址转译工作(SNAT DNAT PNAT),由于转译工作的特性,需进行目的地网址转译封包,就不需要进行来源网址转译,反之亦然。因此为了提升改写封包的效率,在防火墙动作时,每个封包只会经过这个规则表一次,如果我们把封包过滤的规则定义在这个资料表里,将会造成无法对同一封包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途。(它是涉及到网络地址转换)
Mangle:些规则表拥有Prerouting(修改路由之前进入的包)、FORWARD和postrouting 、OUTPUT(修改路由之前本地的包)规则链。除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL,TOS)或者是设定MARK(将封包作记号,以便进行后续的过滤),这时就必须将这些工作定义在mangle规则中,由于使用率不高。(它主要应用在修改数据包内容上)
Filter:这些规则表是预设规则表,拥有INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)三个规则链,这个规则表顾名思义是用来 进行封包过滤的处理动作(例如:DROP、LOG、ACCEPT或REJECT),我们会将基本规则都建立在些规则表中。(它负责过滤数据包)
规则链的说明:Iptables中五个规则链,INPUT、OUTPUT、FORWARD、Prerouting、Postrouting。
INPUT:只有要到达本机的封包才会由INPUT函式处理,所以会让来自内部网络的封包无条件放行,来自外部网络的封包则过滤是否为响应封包,若是则放行。(就是链接接入本机地址的数据)
OUTPUT:从本机送出去的封包由这个函式处理,通话会放行所有封包。由本机产生,向外转发,处于POSTROUTING之前的数据包。
FORWARD:所有转送封包都在这里处理,这部分的过滤规则比较复杂。需要通过本地系统进行转发的数据包。
PREROUTING:需要转送处理的封包由此函式负责处理,此函式用来做目的地IP的转译动作(DNAT)。路由之前,刚到达的数据包。(由指定信息包一到达防火墙就改变它们的规则所组成)
POSTROUTING:转送封包送出之前,先透过这个函式进行来源IP的转译动作(SNAT)。通过路由后,即将离开系统的数据包。(由指定正当信息包打算离开防火墙时改变它们的规则所组成)
操作命令:(-A 、 -I 、 -D、 -R、-P -F)
查看命令:(-[vnx]L)
-A 链名:追加一条规则(放到最后)
Iptables –t filter –A INPUT –j DROP //在filter表的INPUT链里追加一条规则,匹配所有访问本机IP的数据包,匹配到的丢弃。-j DROP会在后面处理。
-I 链名 规则号码:插入一条规则,指定位置。不加规则号码默认插入成第一条。
Iptables –I INPUT 3 –j DROP
-D 链名 规则号码|具体规则内容
Iptables –D INPUT 3 –j DROP /Iptables –D INPUT –s 192.168.111.129 –j DROP //注,若规则列表中有多条相同的规则时,按内容匹配只删除序号最小的一条。
-R 链名 规则号码 具体规则内容:替换一条规则,
Iptables –R OUTPUT 3 –j ACCEPT //将原来编号为3的规则内容替换为“-j ACCEPT”或其它也可
-P 链名 动作:设置某链的默认规则
Iptables –P INPUT DROP //这只是在数据包没有被规则列表里的任何规则匹配到时,就按些默认规则处理。
-F 链名:清空(所有)规则
Iptables –F INPUT //删除FILTER表INPUT链中的所有规则。如不指定链名,默认清空某表所有链的所有规则。
-Z 链名:把所有链的包及字节的计数器清空,它可以和-L配合使用,在清空前察看计数器。
Iptables –Z INPUT //将封包计数器归零,封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。
-N 新链名:定义新的用户定义的规则链
Iptables –N new_chain_Tcp_allowed //建立一个新用户链。