关于Linux下的iptables

(1)查看本机关于iptables的设置情况

    iptables -L -n

    启动防火墙,并且开放了22,80,25端口是这样的

     Chain INPUT (policy ACCEPT)

     target       prot opt source                 destination         

     Chain FORWARD (policy ACCEPT)
     target       prot opt source                 destination         
     Chain OUTPUT (policy ACCEPT)
     target       prot opt source                 destination         
     Chain RH-Firewall-1-INPUT (0 references)
     target       prot opt source                 destination         
     ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0           
     ACCEPT       icmp --    0.0.0.0/0              0.0.0.0/0             icmp type 255 
     ACCEPT       esp    --    0.0.0.0/0              0.0.0.0/0           
     ACCEPT       ah     --    0.0.0.0/0              0.0.0.0/0           
     ACCEPT       udp    --    0.0.0.0/0              224.0.0.251           udp dpt:5353 
     ACCEPT       udp    --    0.0.0.0/0              0.0.0.0/0             udp dpt:631 
     ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0             state RELATED,ESTABLISHED 
     ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:22 
     ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:80 
     ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:25 
     REJECT       all    --    0.0.0.0/0              0.0.0.0/0             reject-with icmp-host-prohibited 
     没有启动防火墙,是这样的
     Chain INPUT (policy ACCEPT)
     target       prot opt source                 destination         
     Chain FORWARD (policy ACCEPT)
     target       prot opt source                 destination         
     Chain OUTPUT (policy ACCEPT)
     target       prot opt source                 destination
(2)清除原有规则
     如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.
     iptables -F        清除预设表filter中的所有规则链的规则
     iptables -X        清除预设表filter中使用者自定链中的规则
     这样还不行如果机器重启了又会恢复到以前的状态,这个时候就要进行保存操作。
     /etc/rc.d/init.d/iptables save 这样就可以写到/etc/sysconfig/iptables文件里了。写入后使用命令service iptables restart把防火墙重起。
(3)设定预设规则
      iptables -p INPUT DROP
     iptables -p OUTPUT ACCEPT
     iptables -p FORWARD DROP
     上面的意思是,不在两个链规则(INPUT,FORWARD)里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包。
     对于OUTPUT链,也就是流出的包我们不做太多限制,而是采取ACCEPT,也就是说,不在这个规则里的包怎么办呢,那就是通过。
     可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过。
     也可以三个链都DROP,但是要写的规则就会增加,如只做WEB服务器.还是推荐三个链都是DROP.
(4)添加规则
     首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链
     为了能采用远程SSH登陆,我们要开启22端口.
     iptables -A INPUT -p tcp --dport 22 -j ACCEPT
     iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 果你把OUTPUT 设置成DROP的就要写上这一句)

     如果做了WEB服务器,开启80端口.
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT

     如果做了邮件服务器,开启25,110端口.
     iptables -A INPUT -p tcp --dport 110 -j ACCEPT
     iptables -A INPUT -p tcp --dport 25 -j ACCEPT

     如果做了FTP服务器,开启21端口
     iptables -A INPUT -p tcp --dport 21 -j ACCEPT

     如果做了DNS服务器,开启53端口
     iptables -A INPUT -p tcp --dport 53 -j ACCEPT

     需要开启哪个端口,照写就行了,上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP
     允许icmp包通过,也就是允许ping。
     iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
     iptables -A INPUT -p icmp -j ACCEPT    (INPUT设置成DROP的话)

    允许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,所以我们就写需要DROP(放弃)的链.
     减少不安全的端口连接
      iptables -A OUTPUT -p tcp --sport 31337 -j DROP
      iptables -A OUTPUT -p tcp --dport 31337 -j DROP

     有些木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。合法服务都不使用这些非标准端口来通信.
     下面写一下更加细致的规则,就是限制到某台机器
     如:我们只允许192.168.0.3的机器进行SSH连接
     iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

     如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP,24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这      一行删了. -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.或采用命令方式:
        iptables -D INPUT -p tcp --dport 22 -j ACCEPT
      /etc/rc.d/init.d/iptables save 写入到/etc/sysconfig/iptables文件
   
     在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.
    开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
    iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -i eth1 -o eh0 -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

 二、配置一个NAT表放火墙
         1、查看本机关于NAT的设置情况
               iptables -t nat -L

          2、清除命令
                iptables -F -t nat
        iptables -X -t nat
        iptables -Z -t nat

     3、添加规则(防止外网用内网IP欺骗
                
        iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
                iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
                iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

           3、禁止与IP的所有连接
                 iptables -t nat -A PREROUTING    -d ip -j DROP

           4、禁用FTP(21)端口
                iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
                禁止某ip与21端口的连接:iptables -t nat -A PREROUTING    -p tcp --dport 21 -d ip -j DROP

          5、 drop非法连接
                 iptables -A INPUT     -m state --state INVALID -j DROP
                 iptables -A OUTPUT    -m state --state INVALID -j DROP
                  iptables-A FORWARD -m state --state INVALID -j DROP

           6、允许所有已经建立的和相关的连接
                    iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
                    iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
                    /etc/rc.d/init.d/iptables save

           7、 防火墙重起
                   service iptables restart
                
            

           
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值