VPS iptables配置

使用VPS的时候肯定也会考虑到安全上的问题,简单配置一下iptables。直接贴一下我自己写的2个设置脚本。
首先得写一个清理规则、重置默认策略的脚本放crontab里面,以免自己设置错了策略造成自己不能登录。

  
cleanrules.sh  
#!/bin/bash  
source /etc/profile  
DIR=$(dirname $0)  
LOG=$DIR/clean.log  
iptables -F  
iptables -X  
iptables -Z #reset counter  
iptables -P INPUT ACCEPT #set default action for INPUT packages  
date  >$LOG  
echo "clean the iptables rule" >>$LOG  

规则设置脚本

  
iptables.sh  
#!/bin/bash  
#for my vps  
iptables -F #remove all rules  
iptables -X #remove all chains defined by myself  
iptables -Z #reset counter  
iptables -P INPUT DROP #set default action for INPUT packages  
iptables -P OUTPUT ACCEPT #set default action for OUTPUT packages  
iptables -A INPUT -i lo -j ACCEPT  
iptables -A OUTPUT -o lo -j ACCEPT # allow all traffice thron lo  
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT # allow all established and related INPUT packages  
for port in 22 80 443  
do  
iptables -A INPUT -p tcp –dport $port  -m state –state  NEW -j  ACCEPT #  
done  
iptables -A INPUT -p icmp -m limit –limit 20/m -j ACCEPT  

默认策略就是所有主动入站的DROP掉,然后出去的都允许,使用-m state –state ESTABLISHED,RELATED -j ACCEPT可以把自己的配置规则处理的非常简洁。如果不使用state模块的话,为了VPS自己能打开80,443端口还得单独写规则,允许sport是80、443的进入,但是这样实际就是有安全上的漏洞了。
另外就是需要注意每个端口的顺序,自己可以先跑一段时间后运行一下iptables -L -n -v看看,尽量让匹配得多的规则拍在前面,这样可以提高效率。

  
# iptables -L -n -v  
Chain INPUT (policy DROP 551 packets, 28376 bytes)  
pkts bytes target     prot opt in     out     source               destination  
6   300 ACCEPT     all  —  lo     *       0.0.0.0/0            0.0.0.0/0  
64949 8740K ACCEPT     all  —  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED  
34  1884 ACCEPT     tcp  —  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22 state NEW  
6564  367K ACCEPT     tcp  —  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW  
72  3952 ACCEPT     tcp  —  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443 state NEW