Linux 中 Iptables 规则定义

来源:互联网 发布:tv版安卓软件 编辑:程序博客网 时间:2024/05/16 06:49
linux 远程服务访问控制        

Firewall: 防火墙 
防火墙工作位置 :网络边缘出口处,主机边缘 数据包进出口
工作于网络边缘的一套组建  按照管理员定义的规则 对于进出本网段的报文进行检查 规则匹配
的一套组建

防火墙策略:
rules, policy
规则-->策略

常见防火墙:
3、4层防火墙    7层 应用层网关

3层 检查源地址 目标地址
7层  仅仅检查数据的可靠性 检查7层数据的完整性  

市场上的防火墙 是综合两种防火墙的特点 组建的

-----------------------------------------------------------------------------------------------------------
 ipfw/iptables  : linux 防火墙软件 
 工作在UNIX 中的 Ipfirewall  工作有效  规则必须放置在kernel(rules)中
 ipchains 可以定义多条 rules 
 ipfw/ipchains/iptables 都是工作在用户空间中  用于管理员写规则  本身并不是防火墙
  
 iptables/netfilter:
       iptables 是REDHAT 模拟的一个服务 用来挂载或卸载规则  工作在用户空间 
   netfilter网络过滤器  关卡  可以实现防火  也有可能大门敞开 工作在内核空间    工作在内核空间 是一个框架 
        
  5种路由决策 在路由决策之前进行转换 
  
   每个关卡放置多个规则  这些规则叫做规则连
   不同的功能在不同的位置实现   不同的位置实现不同的规则链
  
   五个hook functions: 钩子函数 
  
  chains  规则链:
     PREROUTING
     INPUT       数据包流入接口
     FORWARD     转发关卡
     OUTPUT      数据包流出接口     
     POSTROUTING  
     
  三个表
  filter:       允许/不允许  
  nat:         地址转换      
  mangle: 修改报文源数据    修改数据中的TTL值  或  做防火墙标记
             
  防火墙两种策略: 
      “通”  默认门是关着的 明确定义才能进 开几个小洞就是通了
      “堵”  默认门是大敞开着 但是没有通行证 任何人都不能进 (默认情况是采用“堵”策略)
               
-----------------------------------------------------------------------------------------------------------
三个表与五个链对应的关系:
    修改立即生效 
    IPTABLES 定义的规格 放在链上 立即生效 
    REDHAT 启动服务是把 定义号的规则放上去 
                      关闭服务则是把规则卸载下来 

           

规则是严格按顺序进行   写规则时范围应从小到大 

filter
INPUT,FORWARD, OUTPUT
nat
PREFROUTING,OUTPUT,POSTROUTING 
mangle
PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING.
自定义链: 自定义链必须和内直链关联起来   和基准链关联 
     
=============================================================================   

     怎么写规则:   

     先查看: man iptables    
     iptables [-t table] COMMAND chains CRETIRIA(匹配标准) -j ACTION(如何处理)
     
     e.g.  iptables -t filter -A INPUT -s 172.16.0./16 -p udp --dport 53 -j DROP
    
   命令: 
   COMMAND:
   链管理命令
                       -P (policy)  设定默认策略 [门是开或关]
                                                 # iptables -P INPUT {DROP|ACCEPT}
                                                 设置之前确定远程连接可用
             
                      -F (flush)         清空规格链
  # iptable -t nat -F PRERUTING
                            iptable -t nat -F   清空nat表的所有链
   
   -N                     new 新建链  自定义规则链
                             # iptables -N inbound_tcp_web
   
   -X                      删除用户自定义空链   删之前要清空规则
   -E                     重命名:oldname newname
   -Z                      zero 清空链中 默认计数器
                            # iptables -L -n -v
   iptables -Z      默认规则不清除
             
      规则管理命令
                       -A                  最后追加
                        -Inum          插入
                      -R                 修改规则替换
                                             # iptables -R -s 
                       -D                  num删除第几条规则
 
 
  查看命令
  -L
  -n                     数字    显示数字格式地址
  -v                      版本号 详细信息 
  -x                      精确值 不做单位换算
  --line-numbers显示行号
 

 

匹配标准:-p

             通用匹配:源地址与目标地址的匹配
                      -s                    指定源地址匹配 必须指地址
                                              IP, NETWORK/NETMASK, 0.0.0.0/0.0.0.0   !可以取反
                      -d                    匹配目标地址
                      -p                    匹配协议    {tcp|udp|icmp}
                       -i                     数据的流入接口 eth0
                      -o                     流出接口//流入流出按指定规则写 
 
       扩展匹配
       隐含扩展
       对特定协议的扩展
                      -p                     tcp 
   --dport             目的端口  端口要连续
                      --sport            源端口
   --tcp-flags      检查的标志位 必须为1的标志位  tcp 标志位
   
   --tcp-flages syn,ack,fin,rst syn  三次握手的第一次请求包
    简写 = --syn
   
   -p                   udp
                      --dport
                      --sport
   
                       -p icmp
                       --icmp-types 8 
                                               // ping 出去报文  echo-request 8
                                                    回应报文echo-reply 0  
 
             显式扩展 明确指定
                         -p                    tcp -m tcp multiport --dport 21,23,80 启动多端口扩展
 
 ACTION:   -j
    DORP     丢弃不通知 
    REJECT   明确拒绝丢弃  
    ACCEPT
    custom_chain
    DNAT
    SNAT
    MASQUSERADE
    REDIRECT            端口重定向
    MARK
    RETURN返回
   
 ===============================================================================
 状态检测 :state
         1.NEW                    第一次握手  
         2.ESTABLISHED  第二、三次握手 为  已建立连接         
         3.invalid       非法连接        
         4.related      ftp 两端口连联系
 
    状态扩展为显示扩展 检测    
    防止反弹式木马的入侵
        
  所有规则重启失效:  
  保存文件位置开机启动:
  service iptables save
   
  /etc/sysconfig/iptables   //保存位置   
  iptables-save > /etc/sysconfig/iptales(.2)
  iptables-restore < /etc/syscofig/iptables(.2)