iptables介绍

声明:

本文前半部分来自http://hi.baidu.com/9812658/blog/item/6983e421c4831e5e9822edcf.html

 后半部分来自:http://www.ibm.com/developerworks/cn/linux/network/s-netip/

 

1、iptables介绍

Linux具有许多内置的能力,使开发人员可以根据自己的需要定制其工具,行为和外观,而无需昂贵的第三方工具。如果Linux系统连接到因特网或LAN,服务器或连接LAN和因特网的代理服务器,所要用到的一种内置能力就是针对网络上Llinux系统的防火墙配置。netfilter/iptables(简称iptables)组成Linux平台下的包过滤防火墙,可以完成封包过滤,封包重定向和网络地址转换(NAT)等功能。netfiler/iptables IP信息包过滤系统是罪行解决方案,而且也是第一个集成到Linux内核的解决方案。对于Linux系统管理员,网络管理员以及家庭用户,他们可以根据自己特定的需求来配置防火墙,在防火墙解决方案上节省费用和对IP信息包过滤具有完全控制权。

 

2、理解防火墙配置和信息包过滤

连接到网络上的Linux系统,防火墙是必须的防御机制,它只允许合法的网络流量进出系统,而禁止其他任何网络流量。为了确定网络量是否合法,防火墙依靠它所包含的由网络或系统管理员预定义的一组规则。这规则告诉防火墙某个流量是否合法以及对于来自某个源、至某个目的地或具有某种协议类型的网络流量要做些什么。术语“配置防火墙”是指添加、修改和除去这些规则。


网络流量由IP信息包以流的形式从源系统传输到目的地系统的一些小块数据组成。这些信息包有头,即在每个包前面所附带的一些数据位,他们包含有关信息包的源、目的地和协议类型的信息。防火墙根据一组规则检查这些头,以确定接受哪个信息包以及拒绝哪个信息包。这个过程成为信息包过滤

 

3、配置防火墙的原因

定制防火墙配置是为了满足任何特定需求和任何安全性级别需求。其中最主要的原因是安全性


管理员可能想让他们的防火墙能够阻止未经授权的源访问其Linux系统,例如通过Telnet。他们可能还想限制进出其系统的网络流量,以便只有来自可信源的流量才可以进去其系统,以及只有授权的流量才可以出去。家庭用户可能通过允许所有的出站信息包都可以通过,将防火墙配置成较低的安全性级别。


另一个背后的原因是,通过阻塞来自类似广告站点之类的源的多余流量,可以节省带宽。

 

4、 iptables的基础知识(表-->链-->规则)

1)、规则(rules)

它其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别制定了源地址、目的地址、传输协议(如TCP、。UDP、ICMP)和服务类型(如HTTP、FTP和SMTP等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

2)、链(chains)

它是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或者数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查(即:检查的顺序:从上到下),看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预定义的默认策略来处理数据包。

 

3)、表(tables)

它提供特定的功能,iptables内置了4个表,即filter表,nat表,mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理

 

 

 

如图可见:
 (1) 这4个表的优先级别:raw > mangle > nat > filter
 (2)每个表相关的链
<1> raw表有2个链:prerouting, output
<2>mangle表有5个链: prerouting、postrouting、input、output、forward
<3>nat表有3个链:prerouting、postrouting、output
<4>filter表中有3个链: input、output、forward
最常用的链:input(进入)、output(出去)、forward(转发),而prerouting与postrouting用于网络地址转换(NAT)
5、netfilter/iptables系统如何工作

netfilter/iptables信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链中。


虽然netfilter/iptables IP信息包过滤系统被称为单个实体,但它实际上由两个组件nerfilter和iptables组成。


netfilter组件也成为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集


iptables组件是一种工具,也称为用户空间(userspace,它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用Red Hat Linux 7.1 或更高版本,否则需要从netfilter.org下载该工具并安装使用它。


通过用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,他们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用目标accept允许该信息包通过。还可以使用目标DROP或REJECT来阻塞并杀死信息包。对于可对信息包执行的其他操作,还有许多其他目标。


根据规则所处理的信息包的类型,可以将规则分组在链中。处理入站信息包的规则被添加到INPUT链中。处理出站信息包的规则被添加到OUTPUT链中,处理正在转发的信息包的规则被添加到FORWARD链链中,这三个链是基本信息包过滤表中内置的缺省主链。另外,还有其他许多可用的链的类型(PREROUTING和POSTROUTING),以及提供用用户定义的链。每个链都可以有一个策略,它定义“缺省目标”,也就是要执行的缺省操作,当信息包与链中的任何规则都不匹配时,执行此操作。


建立规则并将链放在适当的位置后,就可以开始进行真正的信息包过滤工作了,这是内核空间从用户空间接管工作,当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地。我们将这个过程称为路由。


如果信息包源自外界并前往系统,而且防火墙打开,那么内核将它传递到内核空间信息包过滤表的INPUT链。如果信息包源自系统内部或系统所连接的内部网上的其他源,并且此信息包要前往另一个外部系统,那么信息包被传递到OUTPUT链。类似的,源自外部系统并前往外部系统的信息包被传递到FORWARD链。


接下来,将信息包的头信息与它所传递到的链中的每条规则进行比较,看它是否与某条规则完全匹配。如果信息包与某条规则匹配,那么内核就对该信息包执行由该规则的目标制定的操作。但是,如果信息包与这条规则不匹配,那么它将与链中的下一条规则进行比较。最后,如果该信息包与链中的任何规则都不匹配,那么内核将参考链的策略来决定如何处理该信息包。理想的策略应该告诉内核DROP该信息包
信息包过滤过程

信息包过滤过程

 

信息包过滤过程

 


6、iptables传输数据包的过程


 

 

 

7、nat链的流程图解

8、filter链的流程图解

9、mangle链的流程图解

 

 

 

 

 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值