美文网首页
Linux防火墙研究

Linux防火墙研究

作者: 海0_0滨 | 来源:发表于2018-03-16 17:07 被阅读0次

    防火墙的分类

    1. 包过滤防火墙

    2. 代理服务型防火墙

    网络资料重点

    一、总结下防火墙的实现原理:

    Netfilter在TCP/IP协议栈中安装钩子点(HOOK),Iptables用来在钩子点处安放钩子函数(HOOK FUNCTION),每个钩子函数用来过滤处理数据包。

    二、规则表

    按照防火墙策略的不同用途,iptables管理着四个不同的规则表,其功能分别由独立的内核模块实现。

    filter表,包含三个规则链:INPUT,FORWARD,OUTPUT。

    filter 表主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包。

    filter 表对应的内核模块为 iptable_filter。

    nat表,包含三个规则链:PREROUTING,POSTROUTING,OUTPUT。

    nat (Network Address Translation,网络地址转换)表主要用于修改数据包的IP地址、端口号等信息。

    nat 表对应的内核模块为 iptable_nat。

    mangle表,包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。

    mangle表主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。

    mangle 表对应的内核模块为 iptable_mangle。

    raw表,包含两条规则链:OUTPUT、PREROUTING。

    raw表是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。在匹配数据包时,raw表的规则要优先于其他表。

    raw表对应的内核模块为iptable_raw。

    Ps:在iptables的四个规则表中,mangle表和raw的表应用相对较少,下面主要介绍filter表和nat表的防火墙应用

    三、规则链

    在处理各种数据包时,根据防火墙规则的不同介入时机,iptables供涉及5种默认规则链,其应用时间点分别对应如下。

    INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。

    OUTPUT链:当防火墙本机向外发送数据包(出战)时,应用次链中的规则。

    FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用次链中的规则。

    PREROUTING链:在对数据包作路由选择之前,应用次链中的规则。

    POSTROUTING链:在对数据包作路由选择之后,应用次链中的规则。

    Ps:期中INPUT、OUTPUT链更多的应用在“主机防火墙”中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中,特别是防火墙服务器作为网关使用时的情况。

    四、当数据包抵达防火墙时,将依次应用raw、mangle、nat和filter表中对应链内的规则;当数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有以下3种情况:

    • 数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统将丢弃该包。
    • 数据包的上的地址不是本机,也就是说这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,该包被发给相应的本地进程处理;如果没有通过规则检查,系统将丢弃该包。
    • 数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统将丢弃该包。

    五、linux防火墙工作流程

    Linux防火墙的工作流程.JPG

    重要理解点

    1. iptables只是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格(链)中的规则。实际上真正执行这些过滤规则的是netfilter(linux核心中一个通用架构)及其相关模块(如iptables模块和nat模块)。
      netfilter是linux核心中一个通用架构,它提供一系列的“表”(tables),每个表由若干“链”(chains)组成,而每条链中可以由一条或数条规则(rule)组成。可以这样理解,netfilter是表的容器,表是链的容器,链是规则的容器。
      系统缺省的表为“filter”,该表中包含了INPUT、FORWARD和OUTPUT 3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的:“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件,如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则;最后,如果数据包不符合该链中任何一条规则,系统就会根据该链预先定义的策略(policy)来处理该数据包

    2. 内核2.4之后使用全新的内核包过虑管理工具--iptables

    3. filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能.raw表是1.2.9以后版本的iptables新增的表

    4. 通常情况下,只要在规则链中找到一条相匹配的规则,则不再继续检查该链内后面的规则;但使用LOG处理方式的规则是一个特例,因为LOG只是一个辅助动作,并没有真正的处理数据包

    问题

    1. 防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。设置拦截规则的时候是使用还是的形式?
    2. python-iptables库可以选择用python写,也可以使用shell写

    下一篇讲介绍iptable的具体使用规则,不详细之处,还请指教.刚开始学习接触linux,做个总结

    相关文章

      网友评论

          本文标题:Linux防火墙研究

          本文链接:https://www.haomeiwen.com/subject/jhdrqftx.html