VPS搭建(三)——iptables防火墙配置
本文配置源自dailycupoftech.com上的文章。这是关于iptables的一些基本的配置,主要针对debian/ubuntu。Redhat等在保存规则等方面有些不同。
查看规则和清理规则
可以先用sudo iptables -L查看现有规则,一般是什么都没有的,如下所示:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
如果不是上面这样,先清空规则:
sudo iptables -F
建立规则
先建立iptables配置文件
sudo nano /etc/iptables.sh
在打开的文件中写入以下命令:
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
以上允许本地回环lo0的流量并拒绝所有到127.0.0.0/8的不使用lo0的流量。这让你的VPS上的网络服务可以相互通信。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
接受有所已经存在的inbound连接。这意味着任何已经连接到防火墙的将保持连接,即使规则已经改变。这可以防止你由于错误的设置导致自己无法进入VPS。
iptables -A OUTPUT -j ACCEPT
这使你的VPS可以对外提供服务。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
开放80端口,HTTP服务使用。也可以使用类似的方法开放443的HTTPS服务端口。即iptables -A INPUT -p tcp –dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 777 -j ACCEPT
开放SSH使用的777端口(视自己情况修改)。
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
允许ping服务器。如果你想不允许ping,就不要写进去了。
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
对拒绝的访问进行记录。
iptables -A INPUT -j DROP iptables -A FORWARD -j DROP
拒绝其他所有的inbound流量。
完成后Ctrl+X退出保存。
更改权限并使之可以执行:
sudo chmod 644 /etc/iptables.sh sudo chmod +x /etc/iptables.sh
加入启动
打开/etc/init.d/rc.local:
sudo nano /etc/init.d/rc.local
在最后添加:sh /etc/iptables.sh
也或者执行
echo sh /etc/iptables.sh | sudo tee -a /etc/init.d/rc.local
完成后可以sudo reboot重启。也可以不重启,执行:
sudo /etc/init.d/rc.local start
可以使用sudo iptables -L来查看规则生效情况。

添加本页到书籍