Iptables

来源:互联网 发布:facebook中国知乎 编辑:程序博客网 时间:2024/04/20 18:09

 

前言:公司网关为一台linux服务器,文中均为实例!

一、概述

1、Linux的防火墙体系工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。
2、种类:netfilter和iptables通常都可以用来指Linux防火墙,但二者区别如下:

  1. Netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”的防火墙功能体系,使用较少。 
  2. Iptables:指的是管理Linux防火墙的命令工具,程序通常位于/sbin/iptables,由用户直接使用,属于“用户态”的防火墙功能体系,通常使用的就是这个。 


3、规则表(见图1.1)

  1. Filter表:包含三个规则链:INPUT、FORWARD、OUTPUT 
  2. Filter表主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包。 
  3. Filter表对应的内核模块为iptable_filter。 
  1. Nat表:包含三个规则链:PREROUTING、POSRTOUING、OUTPUT 
  2. Nat表主要用于修改数据包的IP地址,端口号等信息。 
  3. Nat表对应的内核模块为iptable_nat 
  1. Mangle表:包含五个规则链:、PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD 
  2. Mangle表主要用于修改数据包的TOS、TTL、以及为数据包设置Mark标记,以实现Qos调整及策略路由等应用。 
  3. Mangle表对应的内核模块为iptable_mangle 
  1. Raw表:包含两条规则链:OUTPUT、PREROUTING 
  2. Raw表是iptables新增加的表,主要用于决定数据包是否被状态跟踪机制处理。 
  3. Raw表对应的内核模块为iptable_raw 

4、规则链

  1. INPUT链:当接收到访问防火墙本机地址的数据包(入站)时,应用此链中的规则。 
  2. OUTPUT链:当防火墙向外发送数据包(出站)时,应用此链中的规则。 
  3. FORWARD链:当接受到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链接中的规则。 
  4. PREROUTING链:在对数据包作路由现在之前,应用此链中的规则。 
  5. POSTROUTING链:在对数据包作路由选择之后,应用此链中的规则。 
  6. 注:其中INPUT、OUTPUT链更多应用在访问本机的进出数据的安全控制中,而FORWARD、PREROUTING、POSTROUING更多应用在当使用linux做网关的时候。 

 

二、工作原理首先我们需要了解当使用iptables作网关时,数据包的主要途径。Iptables的大体结构如下图1.2所示,这个图是数据包流经iptables的路径图。

  1. 假如数据包A流经这个网关,首先进入PREROUTING链,顺序匹配这里的规则(包括默认规则);
  2. 从这里开始需要分支: 
  1. 如果这个数据包A是发给LOCALHOST本机的(也就是网关本身),那么数据包A的下一站是INPUT链,
  2. 同样顺序匹配这里的规则(包括默认规则),然后进去LOCALHOST本地进程进行处理这个数据包A;
  3. 处理完成后需要回应数据包A,LOCALHOST发出的数据包B第一站是OUTPUT,然后进入POSTROUTING,
  4. 从而离开网关服务器。 
  1. 如果这个数据包A不是发给LOC ALHOST,那么数据包A的下一站是FORWARD,顺序匹配这里的规则;
  2. 然后数据包A的下一站是POSTROUTING,从而数据包A离开网关服务器; 
  3. 在这个过程中,数据包A每次经过一个链,都会顺序匹配这个链的规则,所以数据在每一个链中都有可能被丢掉。

三、管理设置iptables1、基本语法

  1. Iptables  [-t 表命]  命令选项  [链名]  [匹配条件]  [-j 动作] 
  2. 表名、链名用于指定iptables命令所操作的表和链,没有指定的话,默认使用filter表; 
  3. 命令选项用于指定管理iptables规则的方式,比如插入,删除,增加,查看; 
  4. 条件匹配用于指定对符合什么样条件的数据包进行处理; 
  5. 动作指的就是对数据包的动作,如转发、丢弃、拒绝。 


2、命令选项

  1. -A  在指定链的末尾添加一条新的规则 
  2. -D  删除指定链中的某一条规则,按规则序号或内容确定要删除的规则 
  3. -I   在指定链中插入一条新的规则,若未指定插入位置,则默认在链的开头插入 
  4. -R  修改、替换指定链中的某一条规则,按规则序号或内容确定要替换的规则 
  5. -L  列出指定链中所有的规则进行查看,未指定链名,则列出表中所有的链 
  6. -F  清空指定链中的的所有规则,未指定链名,则清空表中所有链的规则 
  7. -N  新建一条用户自己定义的规则链 
  8. -X  删除指定表中用户自定义的规则链 
  9. -P  设置指定链的默认策略 
  10. -n  使用数字形式显示输出结果 
  11. -v  查看规则烈表示显示详细的信息 
  12. -V  查看iptables命令工具的版本信息 
  13. -h  查看命令帮助信息 
 
 

本文出自 “我的未来不是梦。” 博客,请务必保留此出处http://song49.blog.51cto.com/4480450/950276