zoukankan      html  css  js  c++  java
  • Linux:Day26(上) iptables-netfilter基础

    iptbales:包过滤型防火墙

    Firewall:工作于主机或网络边缘,对于进出的报文根据定义的规则作检查,进而对被规则匹配到的报文作为相应处理的套件;

      主机防火墙:

      网络防火墙:

    iptables/netfilter

      framework:netfilter

        hooks function

      rule utils:iptables

    功能:

      filter:过滤,防火墙;

      nat:网络地址转换;

      mangle:拆解报文,做出修改,封装报文;

      raw:关闭nat表上启用的连接追踪机制;

    链(内置):

      PREROUTING:路由前

      INPUT:到达本机内部的报文必经之路

      FORWARD:由本机转发的报文必经之路

      OUTPUT:由本机发出的报文的必经之路

      POSTROUTING:路由后

    流入:PREROUTING --> INPUT

    流出:OUTPUT --> POSTROUTING

    转发:PREROUTING --> FORWARD --> POSTROUTING

    各功能的分别实现:

      filter: INPUT, FORWARD, OUTPUT

      nat: PREROUTING(SNAT),POSTROUTING(DNAT),OUTPUT

      mangle: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

      raw: PREROUTING, OUTPUT

    路由发生的时刻:

      报文进入本机后;

        判断目标主机;

      报文发出之前;

        判断经由哪个接口送往下一跳;

    iptables:四表五链

      添加规则时的考量点:

        (1) 要实现哪些功能:判断添加在哪张表上;

        (2) 报文流经的路径:判断添加在哪个链上;

      链:链上规则的次序,即为检查的次序;因此隐含一定的法则

        (1) 同类规则(访问同一应用),匹配范围小的放上面;

        (2) 不同类规则(访问不同应用),匹配到报文频率较大的放上面;

        (3) 将那些可由一条规则描述的多个规则合并为一个;

        (4) 设置默认策略;

      功能的优先级次序:raw --> mangle --> nat --> filter

    规则:组成部分:报文的匹配条件,匹配到之后处理动作

      匹配条件:根据协议报文特征指定

        基本匹配条件

        扩展匹配条件

      处理动作:

        内建处理机制

        自定义处理机制

      注意:报文不会经过自定义链,只能在内置链上通过规则进行引用后生效;

    iptables:用户空间的规则管理工具

      添加、修改、删除、显示等;

      规则和链有计数器:

        pkgs:由规则或链所匹配到的报文的个数;

        bytes:由规则或链匹配到的所有报文大小之和;

    iptables命令:

      iptables [-t table] {-A|-C|-D} chain rule-specification
      iptables [-t table] -I chain [rulenum] rule-specification
      iptables [-t table] -R chain rulenum rule-specification
      iptables [-t table] -D chain rulenum
      iptables [-t table] -S [chain [rulenum]]
      iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
      iptables [-t table] -N chain
      iptables [-t table] -X [chain]
      iptables [-t table] -P chain target
      iptables [-t table] -E old-chain-name new-chain-name

      -t TABLE:
        nat, mangle, raw, filter
        默认为filter

      链管理:  

        -F:flush, 清空规则链;省略链,表示清空指定上的所有的链;
        -N:new, 创建新的自定义规则链;
        -X: delete, 删除一条自定义的空链
        -Z:zero,计数器归零
        -P:policy,为指定链设置默认策略,对filter表中的链而言,默认策略通常有ACCEPT,DROP,REJECT;
        -E:rEname,重命名自定义链,引用计数不为0的自定义链,无法改名,也无法删除;

      规则管理:

        -A:append,将新规则追加于指定链的尾部;

        -I:insert,将新规则插入至指定链的指定位置;

        -D:detete,删除指定链上的指定规则;

          有两种指定方式:

            (1) 指定匹配条件

            (2) 指定规则编号

        -R:replace,替换指定链上的指定规则;

      查看:

        -L:list,列出指定链上的所有规则;

          -n: numberic,以数字格式显示主机地址和端口;

          -v: verbose,显示详细信息,-vv, -vvv

          --line-numbers: 显示规则编号

          -x: exactly,不要对计数器的计数结果做单位换算,而显示其精确值

      匹配条件:

        基本匹配:

          [!] -s,--src,--source IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;

          [!] -d,--dst,--destination IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;

          -p,--protocol {tcp|udp|icmp}:检查报文中的协议,即ip首部中的protocols所标识的协议;

          -i,--in-interface IFACE:数据报文的流入接口:仅能用于PREROUTING,INPUT及FORWARD链上;

          -o,--out-interface IFACE:数据报文的流出接口:仅能用于FROWARD,OUTING及POSTING链上;

        扩展匹配:-m match_name --spec_options

          例如:-m tcp --dport 22

          隐式扩展:对-p protocol指明的协议进行的扩展,可省略-m选项;

            -p tcp

              --dport PORT[-PORT]:目标端口,可以是单个端口或连续多个端口;

              --sport PORT[-PORT]

              --tcp-flags LIST1 LIST2:检查LIST1所指明的所有标志位,且这其中,LIST2所表示出的所有标记位必须为1,而余下的必须为0 ;没有LIST1中指明的,不作检查;

                SYN,ACK,FIN,RST,PSH,URG

                --tcp-flags SYN,ACK,FIN,RST SYN

              --syn:

            -p udp

              --dport

              --sport

            -p icmp

              --icmp-type

                可用数字表示其类型:

                  0:echo-reply

                  8:echo-request

          显示扩展:必须使用-m选项指定使用的扩展;

      目标:

        -j TARGET:jump至指定的TARGET

          ACCEPT:接受

          DROP:丢弃

          REJECT:拒绝

          RETURN:返回调用链

          REDIRECT:端口重定向

          LOG:记录日志

          MARK:做防火墙标记

          DNAT:目标地址转换

          SNAT:源地址转换

          MASQUERADE:地址伪装

          ...

          自定义链:由自定义链上的规则进行匹配检查

  • 相关阅读:
    Beta版本冲刺第二天
    项目冲刺-第十天
    项目冲刺-第五天
    用例图练习
    软件案例分析(微软必应词典客户端)
    第二次作业——结对项目之需求分析与原型模型设计
    git for windows 入门随笔
    软件工程的实践项目的自我目标
    Android的开发环境的发展演变
    我的软件工程实践的总结
  • 原文地址:https://www.cnblogs.com/sq5288/p/10920367.html
Copyright © 2011-2022 走看看