防火墙基础知识

防火墙概念

    隔离功能,工作在网络或主机边缘,对进出网络或主机的 数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一 组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允 许访问的策略 

    工作特性(防火墙默认放行两种类型的数据包):

            1.企业内网中的主机向外网发送的请求数据包

            2.外网主机对内网主机的请求进行响应的数据包

防火墙种类

      主机防火墙

      网络层防火墙

             通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议 状态等因素,或他们的组合来确定是否允许该数据包通过 

             无法检查网络病毒等功能

      应用层防火墙

              在应用层对数据进行检查,比较安全 可以检查请求网站的域名分析http请求头中的各种数据

Netfilter组件

     内核空间,集成在linux内核中 

    内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、 PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一 个命令工具(iptables)向其写入规则 

   由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放 在链(chain)上 

    1.如果数据包是发送给本机的,那么需要经过 prerouting 和i nput 两个钩子函数

    2.如果数据包是要转发给别的主机的需要经过 prerouting forward postrouting 三个钩子函数

    3.如果数据包是从本机直接向外发送的那么需要经过 output postrouting 两个钩子函数

 四表:

   filter表:  起到数据包的过滤功能

   nat表 (网络地址转换表):   修改数据报文的IP地址   

   mangle:  给数据报文打标签做分类

   Raw :      关闭NAT表示启用的连接跟踪机制,加快封包穿越防火墙速度

   优先级从高到低:   raw  >  mangle  > nat > filter

   四表和五链之间关系:

   

防火墙工具

   iptables

           命令行工具,工作在用户空间

           用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包 

   firewalld 

          CentOS 7引入新的前端管理工具 

   防火墙匹配规则:

        分别从每个表从上往下依次匹配,当匹配到合适的规则时候便即刻生效,不会再向下匹配规则记录.基于此机制,越精细的匹配规则需要放置在表中越靠前位置.

        当所有的规则都没有匹配到后,即启用默认规则

        Chain INPUT (policy ACCEPT 0 packets, 0 bytes)    policy ACCEPT就是默认规则  默认规则不能清除,只能修改

        定义防火墙规则之前先把系统的防火墙策略进行一个备份,然后定义一个计划任务在一段时间后还原备份的防火墙策略,防止修改防火墙规则后导致自己无法连接到远程主机,保证即使有误操作也能在一段时间后自动恢复原来的策略.

        使用命令行关闭防火墙的实质是告诉内核不使用内核的默认防火墙规则,而不是关闭内核防火墙的功能,内核的防火墙功能是一直存在的.

   iptables添加要点:

      匹配条件:

          1.基础模块

             基本匹配条件:无需加载模块,由iptables/netfilter自行提供 

             -s, --source  address[/mask][,...]:源IP地址或范围 

             -d, --destination address[/mask][,...]:目标IP地址或范围 

             -p, --protocol protocol:指定协议,可使用数字如0(all) 

                  protocol: tcp, udp, icmp, icmpv6, udplite,esp, ah, sctp, mh or  “all“  参看:/etc/protocols 

             -i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于 INPUT、FORWARD、PREROUTING链 

             -o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用 于FORWARD、OUTPUT、POSTROUTING链 

          2.扩展模块

               隐式扩展:在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展 机制,不需要手动加载扩展模块 

                                 iptables -A INPUT -s 129.168.30.7 -p tcp --dport 446:450 -j REJECT

               显式扩展:必须使用-m选项指明要调用的扩展模块的扩展机制,要手动加载 扩展模块 

                                 iptables -A INPUT -p tcp -m multiport --dports 21,80,445 -j REJECT

     iptables规则管理

        -A:append,追加

        -I:insert, 插入,要指明插入至的规则编号,默认为第一条

       -D:delete,删除   

             (1) 指明规则序号   

            (2) 指明规则本身

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

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

       -Z:zero,置零     

              iptables的每条规则都有两个计数器 

                 (1) 匹配到的报文的个数   

                 (2) 匹配到的所有报文的大小之和 

      iptables处理动作:

         -j      targetname [per-target-options]

        简单: ACCEPT,DROP

        扩展: REJECT:--reject-with:icmp-port-unreachable默认 

                    RETURN:返回调用链 

                    REDIRECT:端口重定向 

                    LOG:记录日志,dmesg 

                    MARK:做防火墙标记 

                    DNAT:目标地址转换 

                    SNAT:源地址转换 

                    MASQUERADE:地址伪装 

 iptables扩展模块 

    1.tcp协议的扩展选项 

          iptables   -A  INPUT  -s  172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dports 20:22,80 -j ACCEPT 

    2.iprange扩展 

         iptables   -A   INPUT  -d  172.16.1.100 -p  tcp --dport 80 -m iprange --src-range 172.16.1.5172.16.1.10 -j DROP 

    3.mac扩展 

         iptables -A INPUT -s 172.16.0.100 -m mac  --mac-source 00:50:56:12:34:56   -j   ACCEPT 

    4.string扩展 (具有检测应用层报文字符串的功能,但是不能检测加密后的报文)

         iptables -A OUTPUT -s 172.16.100.10 -d 0/0 -p tcp --sport 80 -m string --algo bm -string “google" -j REJECT 

    5.time扩展 

        iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP 

         --kerneltz:内核时区,不建议使用,CentOS7系统默认为UTC 

    6.connlimit扩展 

         iptables -A INPUT -d 172.16.100.10 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT 

    7.limit扩展 

         iptables -I INPUT -d 172.16.100.10 -p icmp --icmp-type 8 -m limit --limit 10/minute -limit-burst 5 -j ACCEPT 

    8.state扩展 

        iptables -A INPUT -d 172.16.1.10 -p tcp -m multiport --dports 22,80 -m state -state NEW,ESTABLISHED -j ACCEP

iptables自定义链(模块化管理规则)

     iptables   -N    WEB

     iptables  -A  WEB  -p  tcp  -m  multiport --dports  80,443   -j   ACCEPT

     iptables  -I  INPUT  -j   WEB

     

        

     

             

       


        

猜你喜欢

转载自www.cnblogs.com/yxh168/p/9235939.html