介绍:

 防火墙默认有四表五链  

  

 四表:(表的优先级:raw > mangle > nat > filter )

   1.Raw表——两个链:PREROUTING、OUTPUT

     作用:决定数据包是否被状态跟踪机制处理  内核模块:iptable_raw

   2.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD

     作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle

   3.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT

     作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat

   4.filter表——三个链:INPUT、OUTPUT、FORWARD

     作用:过滤数据包,定义拒绝或者允许  内核模块:iptables_filter


 五链:(默认的,不能删除,但能清除里面的规则)

   1.INPUT——进来的数据包应用此规则链中的策略

   2.OUTPUT——外出的数据包应用此规则链中的策略

   3.FORWARD——转发数据包时应用此规则链中的策略

   4.PREROUTING——对数据包作路由选择前应用此链中的规则

   5.POSTROUTING——对数据包作路由选择后应用此链中的规则


一、开始对防火墙配置时

  iptables   -X(清除所有自定义规则链)

  iptables  -F(清除所有规则) 

  iptables  -L(列出所有[加n 以数字形式显示IP])


二、编写规则

  iptables  -I (插入规则) 规则链名 优先级

  iptables  -A (增加规则,默认是) 规则链名

  iptables  -D (删除规则) 规则链名 序号  

  iptables   -N (自定义规则链名) 

  iptables   -P (默认) 规则链名 DROP(拒绝)或者ACCEPT(允许) PS:建议除紧急情况外,最后配置

           -p (协议) 

             --sport(源端口) 

                 --dport(目的端口)  

              -s (源地址) 

            -d(目的地址)

           -i(入网卡) 

           -o(出网卡)  

           -m(扩展)

            1、state --state RELATED,ESTABLISHED //状态检测,因回来的数据没能转发。         2、limit --limit 5/m --limit-burst 10//10个通行证,每分钟增加5个              3、connlimit --connlimit-above 1 //每个IP地址只允许1个连接     

              -j (行为) 

             ACCEPT(接受)   

             DROP(停止) 

             DNAT(目的地址转发)一般在PREROUTING链中

             SNAT(源地址转发) 一般在POSTROUTING链中 

             规则链名(加入这条规则链)  

             MASQUSERADE(地址伪装)  

             --to-destination(目标地址)

              -t nat (选择nat表,一般地址映射用到)

           --line-number  (显示序号)

例子: 


1)linux系统作为服务器和防火墙时: 

 1.允许外界能访问我的80端口httpd服务:            

   iptables -A INPUT -p tcp --dport 80 -j ACCEPT  tcp协议目的端口80在入站规则通过 

    iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT tcp协议源端口80在出站规则通过

 

  也可以自定义规则链:

    iptables -N httpd-in          //自定义规则名为httpd-in

    iptalbes -A INPUT -j httpd-in     //把httpd-in规则链加入到INPUT链

    iptables -A httpd-in -p tcp --dport 80 -j ACCEPT tcp协议目的端口80在httpd-in链通过

  

    iptables -N httpd-out         //自定义规则名为httpd-out

    iptalbes -A OUTPUT -j httpd-out   //把httpd-out规则链加入到OUTPUT链

    iptables -A httpd-out -p tcp --sport 80 -j ACCEPT tcp协议源端口80在httpd-out链通过 

  自定义规则链一定要加入到默认规则链中,可以使得iptables默认规则链不至于混乱无序


 2.允许ping:(只要前面两条就可ping通)

    iptables -A INPUT -i eth0 -p icmp -j ACCEPT  eth0网卡入站时的icmp包允许通过

    iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT eth0网卡出站时的icmp包允许通过

    iptables -A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 从eth0网卡出站时的状态检测允许


2)linux系统只作为防火墙时:

    echo 1 > /proc/sys/net/ipv4/ip_forward    /启动路由功能,允许转发

  1.允许80端口httpd服务转发:

   iptables -A FORWARD -p tcp --dport 80 -j ACCEPT  //允许tcp目的端口80转发 


  2.允许ping转发:

    iptables -A FORWARD -p icmp -j ACCEPT    //允许icmp包转发


  3.目的地址映射:

   iptables –t nat –A PREROUTING –d 192.168.99.101 –j DNAT --to 192.168.100.102 //路由前,目的IP:192.168.99.101 转换成IP:192.168.100.102)


  4.内网源地址隐藏:

   iptables -t nat -A POSTROUTING -j MASQUERADE   //路由后,内网地址隐藏,源地址变成防火墙外网IP地址


  5.访问限时:(date显示时间,072016182005[月日时分年]7月20号16点18分2005年,直接date 数字改系统时间进行测试)    

   iptables –I FORWARD –s 192.168.100.0/24 –m time --timestart 16:10 --timestop 18:10 -j ACCEPT   //对源网段192.168.100.0/24,开始时间16:10-18:10 允许通过

   iptables –I FORWARD –d 192.168.100.0/24 –m time --timestart 16:10 --timestop 18:10 -j ACCEPT  //对目的网段192.168.100.0/24,开始时间16:10-18:10 允许通过


  6.访问限速:

   iptables -I FORWARD -p tcp --dport 21  -m connlimit --connlimit-above 1 -j DROP //对21端口转发,每个IP地址超过1个连接就拒绝


3)使用日志监控程序记录:      

   /usr/local/ulogd/sbin/ulogd  &      //启动这个程序  

   iptables -A FORWARD -p icmp -j ACCEPT //允许icmp转发链

   iptables -A FORWARD -p icmp -j ULOG  //对icmp转发链进行监控   

 

以上是我个人学习积累到的知识,如有需要更正或者增加的地方,欢迎来与我交流学习一番,共同进步,谢谢观看。