iptables防火墙简单介绍

关于防火墙的简单了解
    iptables防火墙是由Netfilter项目开发。iptables目前已发展成为一个功能强大的防火墙,可与专有的商业防火墙相媲美。
    iptables提供能了全面的协议状态跟踪,数据包的应用层检查,速率限制和一个功能强大的机制已制定过滤策略。
 
关于iptables和Netfilter之间的关系:
    Linux提供的所有包过滤和包修改设施的官方项目名称Netfilter,此术语也指linux内核里面的一个框架,可以用于在不同阶段将函数挂接(hook)进网络栈.简单的理解就是,Netfilter提供了一个框架,iptables在它之上建立了防火墙功能。
    linux的绝大多数功能都是以模块的形式扩充出来的,Netfilter也是以模块的形式存在于linux中,当linux多了一个Netfilter模块,linux防火墙功能也就多了一项。
    其实不仅是Netfilter有模块,iptables也有模块,这些模块就位于/lib64/xtables/(32bit系统在/lib/xtables/)目录下,其中以libxt开头的是iptables模块,这些模块与Netfilter模块是一一相对应的,例如/lib/modules/`uname -r`/kernel/net/netfilter/xt_conntrack.ko模块,在/lib64/xtables/libxt_conntrack.so与之相对应。当下达与xt_conntrack.ko相关的指令时,iptables会根据libxt_conntrack.so模块的指示去检查语法是否正确。并将Netfilter相应模块载入到系统内存,iptables最后将规则写入到规则数据库中。
    Netfilter本身并不对数据包进行过滤,它只是允许过滤的数据包的函数挂接的内核中合适的位置。Netfilter项目在内核中还提供了一些基础设施,比如链接跟踪和日志记录,任何iptables策略都可以使用这些设施来执行特定数据包的处理。
       
有关Netfilter的工作位置:
        Netfilter模块存放的目录:
            /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/
            /lib/modules/`uname -r`/kernel/net/ipv6/netfilter/
       以上两个目录中的模块都与协议有关,因此在使用时应该注意相应的协议
            /lib/modules/`uname -r/kernel/net/netfilter/
       经过Netfilter组织的努力与协议无关的模块就存放在上面的目录,可同时应用于ipv4和ipv6的网络环境
       链路层:根据链路层数据包包头的内容在防火墙中依规则进行过滤,例匹配MAC地址
       网络层:根据数据包IP包头的内容作为过滤条件,例如:IP包头的长度,协议….
       传输层:根据传输层包头的内容进行匹配,例如TCP包头的内容中的来源端端口号,目的端端口号,TCP包头的整体长度….
netfilter的工作位置如图:
Netfilter的结构:
   
     现根据图介绍表以及相应表中的链:
  •  filter表:执行数据包的过滤操作  
  1. INPUT链:当一个数据包有内核中的路由计算确定为指向本地系统,它将经过INPUT检查
  2. OUTPUT链:保留给linux系统自身生成的数据包
  3. FORWARD:经过linux系统路由的数据包(即iptables用于连接两个网络,且两个网络数据包过iptables防火墙)
  •  nat表:网络地址转换,允许一个整体机构以一个共有IP出现在Internet上
  1. POSTROUTING链:修改数据包来源端IP
  2. PREROUTING链:修改目的端IP
  3. OUTPUT链:定义本机进程产生的本地数据包的目的NAT规则
  • mangle:通过mangle机制修改经过防火墙内的数据包的内容
  1. PREROUTING链:
  2. INPUT链:
  3. FORWARD链:
  4. OUTPUT链:
  5. POSTROUTING链:
  • raw:是数据包快速的穿过防火墙,以提高防火墙的性能
  1. PREROUTING链:
  2. OUTPUT链:

iptables目标:

  • ACCEPT—-允许数据包通过
  • DROP—-丢弃数据包,不对对数据包作进一步处理,对接收栈,就好像数据包从未来过
  • REJECT—-丢弃数据包,同时发送适当的响应报文
  • LOG—-将数据包信息记录到syslog
  • RETURN—-在调用链中继续处理数据包

iptables匹配

  • –source(-s)—-匹配源IP或网络
  • –destination(-d)—-匹配目标IP或网络
  • –protocol(-p)—-匹配协议
  • –in-interface(-i)—-流入接口
  • –out-interface(-o)—-流出接口
  • –state—-匹配一组链接状态
  • –string—-匹配应用层数据字节序列
  • –comment—-在内核中存为一个规则的注释数据

关于翻过墙的简单介绍到此结束,下篇再具体介绍附上一张Netfilter的完整结构图:

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*