1,Firewall

工作在网络或主机边缘,对进出的数据包根据定义的规则进行检查,并作出相应的动作。

2,检查规则:匹配条件和处理办法的办法

匹配条件:

         帧首部,IP首部(源IP,目的IP),TCP首部(标识位,URG,ACK,SYN,RST ,PSH,FIN端口),应用层首部

         TCP的有限状态机:CLOSED,LISTEN,SYN_SENT,SYN_RECV,ESTABLISHED,FIN_WAIT1,CLOSE_WAIT,FIN_WAIT2,LAST_ACK,TIME_WAIT

3,软件:在主机的内核中的TCP/IP 协议栈上的附加一套规则

   硬件:netscreen,checkpoint  

4,防火墙类型,

包过滤型防火墙(IP/TCP) 对带宽影响不大,安全性较低

          简单包过滤墙

          带状态检测包过滤;连接状态

应用层网关防火墙 (对特定的应用协议做过滤)效率很低,但更安全

 

5,ipfw 2.0

   ipchains 2.2

   iptalbes 2.4

iptables:用户控件工具

netfilter:内核中的防火墙框架(framework,platform 平台)hook function

   规则链:INPUT;OUTPUT;FORWORD,PREROUTING,POSTROUTING

6,NAT

SNAT  源地址

DNAT  目的

PNAT   端口转换

7,防火墙功能:

filter

nat

mangle  修改FTP/IP首部

raw

8,数据包流向

进来的包:Prerouting –> Input

转发的包:Prerouting –> Forward –>Postrouting

出去的包:Output –> Postrouting

9,    raw:PREROUTING,OUTPUT
         mangle:所有都可以

          nat:prerouting ,output,postrouting

file:input,forward,output

10,filter

匹配条件

    netfilter,检查模块

处理动作

    ACCEPT

    DROP

    REJECT

11,iptables [-t TABLE] COMMAND CHAIN [CRETIRIA] –j  ACTION

-t  raw

     mangle

     nat

     filter:默认

COMMAND:对链,或者对链中的规则进行管理操作

  链中规则:

        -A:附加规则

        -I #:插入为第几条

        -R#: 替换(replace) 第几条

        -D#: 删除第几条

        -D CRETERIA      删除匹配的规则

  链:

        -N:新建一个自定义链

        -X:删除一个自定义的空链

        -E:重命名一条自定义链

        -F:清空指定链,如果不指定链,则清空表中所有链

        -P:设定链的默认策略

        -Z:置零(每条规则都有两个计数器,包括默认策略,一个是被本规则匹配到的数据包的个数,另一个是本规则匹配到的体积之和)   对规则生效,对默认不生效

  查看:-L

              -v

              -vv

              --line-numbers显示规则行号

              -x显示计数器精确值

              -n不要对地址或端口反解

iptables 对应脚本 /etc/rc.d/init.d/iptables  {status|start|stop|save}

           脚本配置文件:/etc/sysconfig/iptables-config

           规则保存位置:/etc/sysconfig/iptables

              

匹配条件:

通用匹配:

     -s  源

     -d 目标

     -p protocal {icmp|tcp|udp}

     -i 流入接口

     -o 流出接口

扩展匹配:

   隐式扩展

     -p tcp

          --sport PORT[-PORT2]

          --dport PORT[-PORT2]

          --tcp-flags SYN,ACK,RST SYN(必须为一的位)

          --syn 三次扩展第一次握手

     -p udp

         --sport

         --dport

    -p icmp

         --icmp-type

            8 :echo-request

            0 :echo-reply

   显式扩展 位于 /lib/iptables

              netfilter扩展模块引入的扩展,用于匹配条件,通常需要额外的专用选项来定义

     -m state      用于实现连接的状态检测

            --state

                  NEW,ESTABLISHED,RELATED(一个服务多种连接如ftp),INVALID

     -m  multiport

            --sourceports  22,80

            --destination-ports 22,80

            --ports   

    -m  limit

          --limit 2/min  速率

          --limit-burst 峰值

   -m  connlimit 最大连接数

        [!] --connlimit-above  多余n个满足条件

   -m  iprange  IP的范围

          --src-range  ip-ip

          --dst-range ip-ip

   -m mac  基于mac过滤

          --mac-source XX:XX:XX:XX:XX:XX

   -m string

          --algo {bm|kmp}

          --string “PATERN” 模式

   -m recent

   -m time

         --datastart

         --datastop

         --timestart

         --timestop

         --weekdays

   -m layer7

        --l7proto 特征码

       

动作: –j TARGET

    ACCEPT

    DROP

    REJECT

    REDIRECT

    DNAT  nat表的prerouting中

              --to-destination

              iptables –t nat –A PREROUTING –d 1.1.1.1 –p tcp –dport 80 –j DNAT –to-destination 192.168.1.10:8080  

    SNAT  nat表的postrouting中

                  --to-source

       PNAT


    MASQUERADE 自动选择一个合适地址作为转换后的源地址 地址伪装

    LOG

             --log-prefix “iptables,dnat 192.168.10.1) --

    RETURN 

    自定义链名

同一物理机不能用同一网段的地址

 

iptables的规则保存

service iptables save

       /etc/sysconfig/iptables

iptables-save > /etc/sysconfig/iptables.3

iptables-restore < /etc/sysconfig/iptables.3

应用层过滤: