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来查看规则生效情况。

评论




评论支持Dokuwiki语法,参见http://www.dokuwiki.org/zh:syntax