配置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防火墙放行和转发规则
Iptables 还是目前Linux的主要防火墙tool么?