VPS 上配置 iptables 防火墙

一个裸服务器,比如 VPS 架设好了 Web 服务等等之后,为了服务器的安全,防火墙设置也就成了必须的一个步骤了。Linux 下比较常用的就是 iptables,本文适用于 CentOS 和 Debian。

简单的来说,防火墙,就是只开启某些必要的服务端口,限时其他服务端口的使用。比如这么几个常用的默认端口和对应的服务: 22(ssh), 80(http), 443(https), 21(ftp), 25(smtp), 110(pop), 143(imap), 1194(openvpn), 3306(mysql), 8080(tomcat) 等等,看自己的需要来开启。

下面的防火墙规则,请在命令行直接运行,我简单的逐个的按顺序的分析给大家 (# 表示注释内容):

# 允许本地回环 127.0.0.1
iptables -A INPUT -i lo -p all -j ACCEPT

# 允许已经建立的所有连接
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许所有向外发起的连接
iptables -A OUTPUT -j ACCEPT

# 拒绝 ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT

# 允许 SSH 服务端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许 Web 服务端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 拒绝其他所有未被允许的连接
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

这些规则必须要保存,否则下次重启服务器后,规则会丢失。CentOS 和 Debian 的 iptables 保存各有区别:

# CentOS

service iptables save # 保存
service iptables restart # 重启
chkconfig iptables on # 确认服务会随开机自动启动

# Debian

iptables-save > /etc/firewall.conf # 保存规则到一个文件
echo '#!/bin/sh' > /etc/network/if-up.d/iptables # 创建一个开机启动项文件
echo 'iptables-restore < /etc/firewall.conf' >> /etc/network/if-up.d/iptables # 同上,继续添加内容
chmod +x /etc/network/if-up.d/iptables # 修改启动项文件的执行属性

如果不满意以上配置的规则,可以使用以下命令来清空全部规则:

iptables -F
iptables -X
iptables -Z

到此,全部结束。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注