辛星解读Linux下iptables的配置

      查看与清除保存规则:

       查看本机iptables设置:   iptables  -L  -n

       清除预设表filter中的所有规则连的规则:  iptables  -F

       清除预设表filter中使用者自定链中的规则:  iptables  -X

       把当前配置保存:       /etc/rc.d/init.d/iptables   save

       重启iptables功能:     service   iptables   restart

       

       设定预设规则:

        iptables   -p   INPUT   DROP   

        iptables   -p   OUTPUT   ACCEPT

        iptables   -p   FORWARD   DROP  

        上面的意思是超出了iptables里的filter表中的两个链规则(INPUT、FORWARD)时,不在这两个规则包里的数据包直接DROP,也就是放弃。这样的配置还是很安全的,我们要控制流入数据包。而对于OUTPUT链,也就是流出的包,我们不用做太多限制,而是采用ACCEPT,也就是说,不在这个规则里的包也可以通过。

        也就是说INPUT、FORWARD这两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过。当然我们也可以三个链都使用DROP,但是这样要写的规则就会增加。如果我们只想要有限的几个规则,比如只作为web服务器,那么我们还是推荐这三个链都是DROP。

         


       INPUT链:

        INPUT链的默认规则是DROP,我们就需要写ACCEPT(通过)的链:

       为了能远程登录,我们要开启22端口,操作为:

        iptables   -A  INPUT  -p  tcp  --dport  22  -j  ACCEPT 

        iptables   -A  OUTPUT  -p  tcp  --sport  22  -j  ACCEPT (注意,如果我们把OUTPUT设置为DROP的时候要写上它,如果我们忘了写它,那么会出现始终无法ssh的情况)

         如果我们做了web服务器,我们需要开启80端口,操作为:

         iptables   -A  INPUT  -p  tcp  --dport  80  -j  ACCEPT

         当然如果我们的WEB服务器把OUTPUT也设置为了DROP,那么还需要加上:

         iptables   -A OUTPUT  -p  tcp  --sport  80   -j  ACCEPT

         如果我们做了邮件服务器,通常需要开启25和110端口:

         iptables   -A  INPUT    -p  tcp   --dport   110   -j  ACCEPT

         iptables   -A  INPUT    -p  tcp   --dport    25    -j  ACCEPT

         如果我们做了DNS服务器,那么通常开启53端口:

         iptables    -A  INPUT   -p tcp    --dport    53    -j  ACCEPT

          允许loopback,不然会导致DNS无法正常关闭等问题:

          iptables   -A INPUT  -i  lo  -p  all  -j   ACCEPT  (如果是INPUT  DROP)

          iptables   -A  OUTPUT  -o  lo   -p all  -j  ACCEPT(如果是OUTPUT   DROP)


          OUTPUT链:

          由于OUTPUT链默认规则是ACCEPT,所以我们需要些DORP(放弃)的链。

           我们可以减少不安全的端口连接,比如31337,如下:

            iptables   -A OUTPUT   -p  tcp  --sport  31337   -j  DROP

            iptables   -A  OUTPUT  -p  tcp  --dport  31337  -j  DROP 

           比如我们只允许192.168.0.101的机器进行SSH连接,如下:

           iptables   -A  INPUT   -s  192.168.0.101  -p tcp  --dport  22  -j  ACCEPT

            如果要允许或者限制一段IP可以用192.168.0.0/24表示192.168.0.1-255之间的所有IP,这里的24是子网掩码数。

            如果我们允许所有IP都可以进行SSH连接,如下:

            iptables  -A  INPUT  -p tcp  --dport  22  -j  ACCEPT

           

            保存配置:

             因为对于命令的方式,都是即时生效的,如果想要重启后也生效,就要写入到/etc/sysconfig/iptables里面。

             我们可以使用/etc/rc.d/init.d/iptables   save来保存当前配置到配置文件中

   

            FORWARD链:

            FORWARD链的默认规则也是DROP,所以我们就写需要ACCEPT的链,对正在转发链的监控。

            首先我们需要开启转发功能,在做NAT时,FORWARD默认规则是DROP时,必须做:

             iptables  -A  FORWARD  -i  eth0  -o  eth1  -m state  --state  RELATED,ESTABLLISHED  -j ACCEPT

             iptables  -A  FORWARD  -i  eth1  -o  eth0  -j  ACCEPT

            我们丢弃坏的TCP包:

            iptables   -A FORWARD  -p tcp ! --syn  -m state  --state  NEW  -j  DROP

            我们处理IP碎片数量,防止攻击,允许每秒100个:

            iptables  -A FORWARD   -f  -m  limit   --limit  100/s  --limit-burst  100  -j  ACCEPT 

            设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包:

             iptables    -A  FORWARD   -p  icmp   -m  limit  --limit  1/s  --limit-burst  10  -j  ACCEPT

         

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。