• iptables防火墙工作原理


    iptables防火墙工作原理

    简介:iptables防火墙工作在网络层,针对TCP/IP数据包实施过滤和限制,iptables防火墙基于内核编码实现,具有非常稳定的性能和高效率;

       iptables属于“用户态”的防火墙管理体系。

    规则表                                                                                 

    filter表:filter表用来对数据包进行过滤,根据具体的规则要就决定如何处理一个数据包。对应内核模块:iptable_fileter。共包含三个链。

    nat表:nat(Network Address Translation,网络地址转换)表主要用于修改数据包 ip地址,端口号等信息。对应的内核模块为iptable_nat,共包含三个链。

    mangle表:mangle表用来修改数据包的TOS(Type Of Service,服务类型),TTL(Time To Live,生存周期)值,或者为数据包设置Mark标记,以实现流量整形,策略路由等高级应用。对应的内核模块为      iptable_mangle,共包含五个链。

    raw表:raw表示自1.2.9以后版本的iptables新增的表,主要来决定是否对数据包进行状态跟踪。对应的内核模块为iptable_raw,共包含两个链。

    规则链                                                                                            

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

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

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

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

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

    简要说明:其中INPUT,OUTPUT链主要用在“主机防火墙”中。即主要针对服务器本机惊醒保护的防火墙;而FORWARD,PREROUTING,POSTROUTING链多用在“网络型防火墙”中,例如使用Linux防火墙作为网关     服务器在公司与Inetnet之间进行安全控制。

    数据包过滤工作流程                                                                          

    规则表应用优先级:raw→mangle→nat→filter

    各条规则的应用顺序:链内部的过滤遵循“匹配即停止”的原则,如果对比完整个链也没有找到和数据包匹配的规则,则会按照链的默认策略进行处理。

    入站数据流向:数据包到达防火墙后首先被PREROUTING链处理(是否修改数据包地址等),然后进行路由选择(判断数据包发往何处),如果数据包的目标地址是防火墙本机(如:Internet用户访问网关的Web服务端口),那么内核将其传递给INPUT链进行处理(决定是否允许通过等)。

    转发数据流向:来自外界的数据包到达防火墙后首先被PREROUTTING链处理,然后再进行路由选择;如果数据包的目标地址是其他的外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发,拦截,丢弃),最后交给POSTROUTING链(是否修改数据包的地址等)进行处理。

    出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链(是否修改数据包的地址等)进行处理。

    命令实战                                                                                              

    语法:

    iptables [ - t 表名 ]  管理选项  [链名]  [匹配条件]  [-j 控制类型]

    未指定表名时将默认使用filter表。

    控制类型:

     ACCEPT:允许数据包通过。

     DROP:直接丢弃数据包,不给出任何回应信息。

     REJECT:拒绝数据包通过,会给数据发送端一个响应信息。 

    拒绝发给本机使用ICMP协议的数据包:iptable -t filter -I INPUT -p icmp -j REJECT

    • -A   在指定链的末尾添加(--append)一条新的规则
    • -D   删除(--delete)指定链中的某一条规则,可指定规则需要或具体内容。
    • -I    在指定链中插入(--insert)-条新的规则,未指定序号时默认作为第一条规则。
    • -R   修改,替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容。
    • -L   列出(--list)指定链中的所有规则,若未指定链名,则清空表中的所有链。
    • -P   设置指定链的默认策略(--policy)。
    • -n   使用数字形式(--numeric)显示输出结果,如显示ip地址而不是主机名
    • -v   查看规则列表时显示详细(--verbose)的信息。
    • -line-numbers   查看规则列表时,同时显示规则在链中的顺序号。

    作者:唐胜伟
    出处:http://www.cnblogs.com/tangshengwei/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

  • 相关阅读:
    关键字: simpledateformat24小时 格式串
    浅谈DB2在线分析处理函数
    Java中的final关键字
    TestNG注解使用技巧
    java之静态方法,静态变量
    CssSelector之selenium元素定位
    收藏,常用正则表达式
    正则表达式小结
    [转]java中文乱码的解决
    多叉树结构:JSON数据解析(一)
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/4652011.html
Copyright © 2020-2023  润新知