- A+
所属分类:VPS技术
防火墙是保护VPS服务器的流行方式。它用于控制哪些网络流量传递到服务器和从服务器传出。通常,到服务器的所有传入端口都被阻止,除了少数服务器的公共端口。如果我们的服务器是一个Web服务器,比如80端口就是开放的。
准备规则
我们将使用iptables来管理我们的防火墙规则。从手册页:iptables - IPv4数据包过滤和NAT的管理工具。
第一步是准备一个包含规则的文本文件:
- $ nano /etc/iptables.up.rules
并使用以下内容:
- *filter
- # 允许所有环回(lo0)流量,并将所有流量下降到不使用lo0的127/8
- -A INPUT -i lo -j ACCEPT
- -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
- # 接受所有已建立的入站连接
- -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- # 允许所有出站流量
- -A OUTPUT -j ACCEPT
- # 允许SSH连接到我们的ssh端口
- -A INPUT -p tcp --dport 22 -j ACCEPT
- # 打开其他TCP端口(如果你要安装一个web服务器,80)。如果你喜欢,添加更多行这样的内容
- -A INPUT -p tcp --dport 80 -j ACCEPT
- # 允许 ping
- -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
- # log iptables被拒绝来电
- -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
- # 拒绝所有其他的入站 - 默认拒绝,除非有明确允许的策略
- -A INPUT -j REJECT
- -A FORWARD -j REJECT
- COMMIT
上述规则所说的是除端口22(对于ssh和scp)和端口80(Web服务器)外,所有端口都被阻塞。如果要打开更多端口,只需在端口80打开的行下方添加一行。例如,如果要打开端口21(ftp)和端口25(smtp为邮件服务器),增加下面的配置:
- ...
- -A INPUT -p tcp --dport 80 -j ACCEPT
- -A INPUT -p tcp --dport 21 -j ACCEPT
- -A INPUT -p tcp --dport 25 -j ACCEPT
- ...
如何应用规则:
- iptables -F
- /sbin/iptables-restore < /etc/iptables.up.rules
规则固化
如果要在重新启动后自动应用防火墙规则,请创建一个脚本:
- $ nano /etc/network/if-pre-up.d/iptables
并放这些内容:
- #!/bin/sh
- /sbin/iptables-restore < /etc/iptables.up.rules
执行:
- chmod +x /etc/network/if-pre-up.d/iptables