iptables是一种静态的基于三层过滤的工具,主要实现IP 信息包过滤,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。

    iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。

          filter:一般的过滤功能

          nat:用于nat功能(端口映射,地址映射等)

          mangle:用于对特定数据包的修改

          raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能

      5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

           PREROUTING:数据包进入路由表之前

           INPUT:通过路由表后目的地为本机

           FORWARDING:通过路由表后,目的地不为本机

           OUTPUT:由本机产生,向外转发

           POSTROUTIONG:发送到网卡接口之前。如下图:

 

 

iptables 的使用规则

 

 

iptables 的规则应用:

1.       接收来自制定ip地址的所有流入的数据包

 

Iptables  -A  INPUT  -s  203.25.55.10 –j ACCEP

 

2.       只接受来自指点端口(服务)的数据包

 

Iptables  -A  INPUT  --dport 80 –j  ACCEPT

 

3.       允许转发所有到本地smtp服务器的数据包

 

Iptables  -A FORWARD  -p tcp  -d  192.168.1.1  --dpot smtp  -i  eth0  -j  ACCEPT

 

4.       允许转发所有到本地的udp数据包

 

Iptables –A FORWARD –p udp –d  192.136.31.1  -i    eth0  -j  ACCEPT

 

5.       拒绝发往www服务器的客户端的请求数据包

 

Iptables  -A  -p tcp  -d  192.168.1.1  --dport  www  -I  eth0  -j  REJECT

 

6.       允许来源为指定端口的tcp数据包进入

 

Iptables –A INPUT –p  tcp –m  multiport  --source-port  21538025110  ACCEPT

8.丢掉synack标志位置位的数据包

 

Iptables –A  INPUT –p  tcp  --tcp-flags  ALL  synack  DROP

2)碎片的检测和流量的控制

 

因为在tcp/ip的网络中,链路层有最大传输单元MTU这个特性,它限制了数据帧的最大长度,大于这个数的时候就会对数据包进行分片操作,分片后悔被防火墙所阻止,进而影响到接收端对这些碎片的还原,影响到信息的完整性和可用性问题,所以防火墙的允许碎片通过的规则:

 

#iptables -A FORWARD -p tcp -f -s 172.168.96.0/24 -d 172.168.97.18 -j ACCEPT

其中-f参数指定了第二个及以后的ip碎片将有防火墙处理通过,如不加,则可能造成对第二个及其以后的ip碎片进行拦截,

 

速率限制

提供了健全的速率控制机制,主要用来限制由外向内的单位时间内通过数据包个数,这样做可以尽可能的抑制拒绝服务***或是分布式拒绝***,进而保护网络中数据包的个数。

 

Iptables  -A  INPUT  -m  limit  --limit  200/second

Iptables –A  INPUT –m limit   --limit   10000/minute

 

设定速率后,还可以设定将超过该限制所触发的一些处理事件直接丢弃,比如如果速率超过200限制后,直接对后续数据包进行丢弃。

 

Iptables  -A  INPUT –m  limit  --limit-burst   200