防火墙 :

linux 内核自带 iptables
iptables/netfilter 
netfilter 是防火墙 工作在内核空间  让规则生效
iptables  写规则工具 工作在用户  写完规则送到netfilter生效


网络层防火墙 3层
还有7层的防火墙  安全点 效率低

常用的 两者合用


它本身并不是防火墙
 需要管理员写规则
 本身并不工作

防火墙要想生效需放在内核中。


数据包要想出去或进来必须要经过这5个链
5个 内置的规则链
  
  1. PREROUTING    路由前
  2. INPUT       数据包 流入接口 
  3.FORWARD      转发关卡
  4.OUTPUT       从本机出来的管卡    
  5.POSTROUTING    离开本机  路由后
 
 
 
"通"  默认门是关着的  , 全通
"堵"  门是开着的 但需要证
 堵是 单堵

3个表:
   1,过滤 filter
   2,地址转换  nat
    3,mangle  修改报文原数据
         3表5链的关系
           1,filter
              INPUT,FORWARD,OUTPUT

            2,nat
              PREROUTING,OUTPUT,POSTROUTING

              3,mangle

                  PREROUTING,  INPUT,FORWARD,OUTPUT
                   POSTROUTING
   
iptables 写规则 放在netfilter   立即生效的
  一旦匹配到第二条报文,就不在往下匹配
  写规则很重要顺序  ,匹配范围越小就放在上面
 
   删除链 只能删除自己定义的链,内置删不掉的
 
             指定表              链   匹配标准     处理规则
iptables [-t filter]   COMMAND  chain   CRETIRIA   -j ACTION
对这条命令剖析:
          
     command:
  1,   链管理命令
      -P     设定门是开着还是关着  默认策略
  格式   # iptables -P INPUT {DROP|ACCEPT} 立即生效的
       设定默认 要注意 ,一旦执行 远程就无法连接了
      -F  清空表
   格式  # iptable -t nat -F PREROUTING 
             如果不加上 最后单词  就是清空所有表的链
     -N   新建用户自定义链
         # iptables -N inbound_tcp_web  检查tcp 的web链
      -X 删除用户自定义空链  删除之前把里边规则清空
      -E 用重命名 用户自定义链
      -Z 清空链  链规则计数器
    
2  ,  规则管理命令
    
      -A 追加 到最后
     -I 3  插入到第3条
      -R num 替换规则
      -D num 删除第几条
     
3,  查看命令
    -L -n    加n解析非常快
        -v    显示详细信息
        -vv
        -x  精确值  不做单位换算
       --line-numbers 显示行号
      
匹配标准:
1,通用匹配
  -s  指定做原地址匹配
    IP,NETWORK/NETMASK,0.0.0.0/0.0.0.0
  -d 匹配目标主机地址
  -p 匹配协议的
      )tcp|udp|icmp
   -i eth0 数据流入接口
   -o  流出接口
2,扩展匹配
    )隐含扩展     对协议扩展
     -p tcp
       --dport  目标端口
       --sport 源端口
       --tcp-flags   检查的标志位,必须为1标志位 tcp表示位
            tcp 6个表标志位 SYN,ACK,FIN,PSH,PST,URG
       --tcp-fiags sys,ack,fin,rst,syn  syn为1  其余都为0    
     -p udp
       --dport
       --sport
     -p icmp
       --icmp-type  类型
         ech0-request 8
         ech0-reply 0
      
      
    )显"式"扩展
        各扩展模块
      -p tcp -m multiport --dports 21,23,80

  -j ACTION
   DROP  悄悄丢弃
   REJECT  明确拒绝
   ACCEPT  接受
   custom_chain  转向一个自定义的链  
 DNAT 目标地址转换
 SNAT  源地址转换
 MASQUEPADE  源地址伪装
 REDIRECT  端口重定向
 MARK    打标记
 RETURN  返回


例 iptables -t filter -A INPUT -s 172.16.0.0./16 -d 172.16.100.1 -p tcp --dport 22 -j ACCEPT
只是定义进来的包
 查看 iptables -L -n -v


定义出去的包:                   原地址            目标                    原端口
iptables -t filter -A OUTPUT -s 172.16.100.1 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT
 查看 iptables -L -n -v

常用的策略 “通” 策略  默认ACCEPT
把 ACCEPT 改为 DROP
iptables -P OUTPUT DROP
iptables -p INPUT  DROP

查看 iptables -L -n -v
 
 

防火墙_第1张图片


状态检测:  state  基于tcp,udp
 

    1 ,NEW  全新链接
    2 , ESTABLISHED  已建立连接
    3, RALATED  关联关系
    4,  INVALID  无法识别的链接
                          
               链                              进来的                   端口                     状态  数据包进来
例 iptables -R INPUT 2 -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 22 -m state --state  NEW,ESTABLISHED -j ACCEPT

 

防火墙_第2张图片

 

                  第一条规则           
例 iptables -R OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT
只要是 tcp  ESTABLISHED  统统放行


 

防火墙_第3张图片


例 允许80端口

iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m stata --sate NEW,ESTABLISHED -j ACCEPT


 

防火墙_第4张图片