一 防火墙的概念

       1、 防火墙指(firewall)的是一个由软件硬件设备组合而成、在内部网外部网之间专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使InternetIntranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用的侵入,防火墙主要由服务访问规则、验证工具、包过滤应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件硬件。该计算机流入流出的所有网络通信数据包均要经过此防火墙。

        防火墙是一种隔离工具,工作于主机和网络边缘,对于出入本机或网络的报文,根据事先定义的检查规则左匹配检验,对于能被匹配的报文做出处理的组件。


      2、 Firewall 分主机防火墙和网络防火墙,从实现方式分软件防火墙和硬件防火墙;防火墙是对报文的过滤和处理,首先我得知道报文的发送是单向的,这就涉及到源和目标的问题,如何理解什么是源,什么是目标,

        A —————发送报文—————〉B       A:源主机,源IP,        B:目标主机,目标IP

        A<—————收到报文响应———B         A:目标主机,目标IP, B:源主机,源IP

       3、 ipfw(firewall framwork)

             ipchains (firewall framwork)

             防火墙的每条规则都是自上而下逐条匹配规则,从linux2.4之后称iptables(netfilter):kernel、

                netfilter :kernel

                iptables:rules until

    4、hook function (钩子功能):对没一个流过的报文,先钩住,对其匹配。

         内置链:     INPUT

                            OUTPUT

                            RORWARD

                            PREROUTING    (不做过滤)

                            POSTROUTING(不做过滤)

     5、按功能分:

                            filter :过滤

                            nat: natwork address translation 网络地址转换,可以修改源IP和目标IP,也可以修改端口

                            mangle:拆解报文,做出修改,并重新封装起来

                            raw:关闭nat表上启用的链接追踪功能

    6、功能和链的对应关系:

                    raw :        PREROUTING   OUTPUT  

                    mangle:   PREROUTING    INPUT  FORWORD  OUTPUT   POSTROUTING

                    nat :        PREROUTING   OUTPUT  POSTROUTING

                    filter:       INPUT  FORWORD  OUTPUT

            报文流向:流入本机:PREROUTING---->INPUT

                             本机流出:OUPUT---->POSTROUTING

                             转       发:PREROUTING---->FORWORD---->POSTROUTING

    7、路由功能发生的时刻:

                    报文流入本机后:判断目标主机是?

                    报文离开本机前:判断经由那个端口送往下一站?


二、iptables 的基本应用

        1、iptables的应用基本有2种规则,filter / nat

             如何写规则:包过滤防火墙的应用(iptables 基础应用)

             iptables、netfilter:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作做出处理。

        2、规则组成部分:

                        匹配条件:分基本匹配条件和扩展匹配条件(需要模块)

                        处理动作:基本处理动作、扩展处理动作、自定义机制

       3、 iptables的链(内置链和自定义链)

                     内置链:对应hook function

                     自定义链:用于内置链的扩展和补充,可实现更灵活规则管理机制,自定义链必须和内置链关联才能使用

        4、添加规则时的考量点:

            (1)要时间那种功能,filter  nat  mangle  raw

                                判断添加到哪个表

                (2) 报文流经的路径:

                                判断添加到哪个链

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

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

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

                    (3)将那些可以一条规则描述多个规则的合并起来

                        (4)设置默认策略

          5、如何使用ipatables命令,man iptables

                规则格式:

 iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]

                   解析:     -t  table :raw  mangle  nat     filter

                                    COMMAND: 1、管理链

                                                            -N  new 自定义一条新规则链,

                                                            -X 删除一条自定义规则链

                                                            -P policy 设置默认策略,对filter表中的链而言,其默认策略省

                                                                  accept 接收,drop 丢弃, reget 决绝

                                                            -E 重命名自定义链,被引用的链不能重命名,也不能删除

                                                       2、 规则管理:

                                                            -A append 追加

                                                            -I  insert,插入,需指明位置,省略时表示第一条

                                                            -D delete,删除 ,1,指明规则号,2,指明规则本事

                                                            -R replace 替换链上的指定规则,通常指明规则号

                                                            -F flush ,清空指定的规则链

                                                            -Z zero  置0  iptables的每条规则都有2个计算器

                                                                                1、本规则匹配到的报文个数

                                                                                 2、匹配到的所有报文的大小之和(字节数)

                                                         3、查看

                                                                -l  list 查看

                                                                -n number  以数字的个数显示地址和端口号

                                                                -v  verbose 详细信息

                                                                -x  exactly  显示计算机结果的精确值

                                                                 --line-numbers  显示规则的序号

                                                                 

                                    chain    :PREROUTING  INPUT  FORWORD  OUTPUT  POSTROUTING

                                    处理动作; -J targetname [per-target-options]

                                                     Accept,Drop ,Reject,return(返回调用链) ,redudect(重定向),log(日志状态),MARK ,DNAT,SNAT,MASQUERADE

        6、条件匹配

                        基本匹配条件:iptables自带的功能

                        [!] -s,--source address [/mask] 检查报文源IP地址是否符合此处指定的地址范围

                        [!] -s,--source address [/mask] 检查报文目标IP地址是否符合此处指定的地址范围

                        [!] -p,--protocal protocal  (tcp udp icmp all)

                        [!] -i,--in-interface name 数据报文流入的接口,只应用于数据报文流入的环节,只应用于PREROUTING\ INPUT\ FORWORD链

                         [!] -o,--out-interface name 数据报文流出的接口,只应用于数据报文流出的环节,只应用于OUTPUT\ FORWORD\POSTROUTING链