VPS iptables配置

使用VPS的时候肯定也会考虑到安全上的问题,简单配置一下iptables。直接贴一下我自己写的2个设置脚本。
首先得写一个清理规则、重置默认策略的脚本放crontab里面,以免自己设置错了策略造成自己不能登录。
[bash]
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
[/bash]
规则设置脚本
[bash]
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
[/bash]
默认策略就是所有主动入站的DROP掉,然后出去的都允许,使用-m state –state ESTABLISHED,RELATED -j ACCEPT可以把自己的配置规则处理的非常简洁。如果不使用state模块的话,为了VPS自己能打开80,443端口还得单独写规则,允许sport是80、443的进入,但是这样实际就是有安全上的漏洞了。
另外就是需要注意每个端口的顺序,自己可以先跑一段时间后运行一下iptables -L -n -v看看,尽量让匹配得多的规则拍在前面,这样可以提高效率。
[bash]
# 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
[/bash]

此条目发表在net分类目录。将固定链接加入收藏夹。

发表评论