配置iptables防火墙放行和转发规则

    配置iptables防火墙放行和转发规则:

    最后,还需要配置防火墙。这里配置防火墙有三个目的:一是设置默认丢弃规则,保护服务器的安全;二是放行我们允许的数据包,提供服务;三是通过配置nat表的POSTROUTING链,增加NAT使得VPN客户端可以通过服务器访问互联网。总之我们的原则就是,只放行我们需要的服务,其他统统拒绝。

    首先介绍跟PPTP VPN相关的几项:

    允许GRE(Generic Route Encapsulation)协议,PPTP使用GRE协议封装PPP数据包,然后封装成IP报文
    放行1723端口的PPTP服务
    放行状态为RELATED,ESTABLISHED的入站数据包(正常提供服务的机器上防火墙应该都已经配置了这一项)
    放行VPN虚拟网络设备所在的192.168.0.0/24网段与服务器网卡eth0之间的数据包转发
    为从VPN网段192.168.0.0/24转往网卡eth0的出站数据包做NAT
    如果你其他的防火墙规则已经配置好无需改动,只需要增加上述相关VPN相关的规则,那么执行下面几条命令即可(第三条一般不用执行,除非你原来的防火墙连这个规则都没允许,但是多执行一遍也无妨):

    iptables -A INPUT -p gre -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT
    iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

    上述的IP段192.168.0.1/24可能需要修改成/etc/pptp.conf中你配置的localip和remoteip所在地IP段。

    在我们这台服务器上,还需要一些其他的服务:

    22端口的SSH(非常重要!如果不小心连这个都忘了,基本就只能给VPS服务商发Ticket了)
    21端口的FTP控制
    80端口的Web服务
    允许响应各种icmp请求
    根据上述需求,加上服务器的基本要求,我写了下面的shell脚本。这个脚本默认DROP掉没有明确允许的规则,然后允许包括上面VPN相关的规则和上述几项其他服务所需的规则。可以根据你的实际需求,修改这个脚本,然后执行这个脚本快速部署iptables规则。

    #!/bin/bash
    ### Clear Old Rules
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    iptables -t nat -X
    iptables -t nat -Z
    ### * filter
    # Default DROP
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP
    # INPUT Chain
    iptables -A INPUT -p gre -j ACCEPT
    iptables -A INPUT -i lo -p all -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
    iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    # OUTPUT Chain
    iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    # FORWARD Chain
    iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT
    iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT
    ### * nat
    # POSTROUTING Chain
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

    需要注意的是,这个脚本开头首先清除掉了所有iptables规则,然后才部署新的规则,如果你需要保留你机器上现有的规则,请千万不要执行前面的清除语句,或者做好旧规则的备份再做实验:

    iptables-save > iptables.backup
    如果想恢复使用上面命令做好的备份,可以:

    iptables-resotre iptables.backup
    最后,如果确定所有的iptables规则已经合乎你的心意,就可以执行下面命令,将iptables规则保存下来。

    /etc/init.d/iptables save

    安装配置原文链接:
    http://blog.csdn.net/musiccow/article/details/22655637

    补充一个脚本:
    #!/bin/bash
    ### Clear Old Rules
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    iptables -t nat -X
    iptables -t nat -Z
    ### * filter
    # Default DROP
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP
    # INPUT Chain
    iptables -A INPUT -p gre -j ACCEPT
    iptables -A INPUT -i lo -p all -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
    iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    # OUTPUT Chain
    iptables -A OUTPUT -p gre -j ACCEPT
    iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    # FORWARD Chain
    iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT
    iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT
    ### * nat
    # POSTROUTING Chain
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

    转载请注明:崔之龙–运维小崔的个人博客 » 配置iptables防火墙放行和转发规则

    喜欢 1

已经有1 人抢在你前面了~

  • vicient 7年前 (2017-03-31)

    Iptables 还是目前Linux的主要防火墙tool么?