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