使用防火墙保护您的 Linux VPS 是防止未经授权的访问和攻击的重要一步。IPTables 是 Linux 内置的防火墙解决方案,可让您过滤传入和传出的流量。本期小编将一步步指导您如何在 Linux VPS 上配置 IPTables 防火墙。
在本文中,小编将向您展示如何使用 IPTables 配置 Linux VPS 防火墙。IPTables 是一款功能强大的防火墙实用程序,包含在大多数 Linux 发行版中。它可用于创建各种防火墙规则,包括基于源和目标 IP 地址、端口号和协议允许或拒绝流量的规则。
准备工作
通过 SSH 对服务器进行管理访问(root/sudo)
了解 IPTables
在配置 IPTables 规则之前,了解一些有关其工作原理的基本知识非常重要。IPTables 管理 Linux 内核中包含防火墙规则的表。主要有三个表:
输入– 适用于发往 VPS 本身的入站流量的规则。
输出– 适用于从 VPS 离开的出站流量的规则。
FORWARD – 适用于通过 VPS 路由但不以 VPS 为目的地的流量的规则。
每个表中都有包含实际规则的内置链:
PREROUTING——路由过程之前适用的规则。
输入——入站流量的规则。
FORWARD——转发流量的规则。
输出——出站流量的规则。
POSTROUTING——路由过程后适用的规则。
每条规则包含三个主要部分:
链– 规则适用于哪个表和链。
过滤器——是否接受、丢弃或拒绝数据包。
匹配标准– 根据协议、端口、源/目标 IP 等确定规则适用于哪些数据包。
使用 IPTables 配置 Linux VPS 防火墙
步骤 1:安装并启用 IPTables
大多数 Linux 发行版都预装了 IPTables。不过,我们首先需要确保它已安装并启用。我们可以使用以下命令安装 IPTables:
sudo apt install iptables # 对于 Debian/Ubuntu sudo yum install iptables # 对于 CentOS/Red Hat
然后我们可以启用 IPTables 服务,使其在启动时启动:
sudo systemctl 启用 iptables
现在启动服务:
sudo systemctl 启动 iptables
步骤 2:清除现有规则
在添加我们自己的规则之前,我们将清除可能存在的任何现有规则:
sudo iptables -F
这将清除所有链中的所有规则,以确保我们有一个干净的记录。
步骤 3:允许本地主机流量
接下来,我们将添加规则以允许进出 localhost(我们的 VPS 本身)的流量。这是应用程序内部通信所必需的。我们将添加以下规则:
sudo iptables -A 输入 -i lo -j 接受 sudo iptables -A OUTPUT -o lo -j 接受
这将接受 lo 接口(localhost)上的所有输入和输出流量。
步骤 4:阻止无效数据包
我们将添加规则,丢弃任何可能用于 DoS 攻击或指纹识别的无效数据包。这些数据包不太可能是合法的。
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP sudo iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP sudo iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
步骤 5:允许建立连接
现在我们将允许响应来自我们的 VPS 的现有出站连接的传入连接。
这对于允许传出的 HTTP 请求的 HTTP 响应等情况是必需的。
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
步骤 6:默认丢弃所有其他入站流量
现在默认情况下,我们将丢弃迄今为止规则未涵盖的所有其他入站流量:
sudo iptables -P 输入删除
这将拒绝所有其他输入流量,直到我们明确允许它。
步骤 7:允许特定入站端口
接下来,我们将允许传入连接到我们想要公开给互联网的特定端口。
例如,如果我们想允许入站 HTTP、HTTPs 和 SSH,我们将添加:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
您将需要用您的应用程序所需的端口替换这些端口。
步骤 8:记录丢弃的数据包
记录任何被规则丢弃的数据包是一个好主意。我们可以这样做:
sudo iptables -A INPUT -j LOG --log-prefix "INPUT 已丢弃:" --log-level info sudo iptables -A FORWARD -j LOG --log-prefix “FORWARD 已丢弃:” --log-level info sudo iptables -A OUTPUT -j LOG --log-prefix "OUTPUT 丢弃:" --log-level info
这会将有关丢弃的数据包的信息记录到 /var/log/syslog 或 /var/log/messages。
步骤 9:默认允许所有出站流量
我们希望默认允许所有出站流量,因此我们为 OUTPUT 链指定默认策略:
sudo iptables -P 输出接受
步骤 10:通过 IP 地址控制流量
使用以下命令接受来自特定 IP 地址的流量。
# sudo iptables -A INPUT -s 你的授权 IP 地址 -j ACCEPT $ sudo iptables -A 输入 -s 192.168.1.0/24 -j 接受
将命令中的 IP 地址替换为您要授权的 IP 地址。您还可以阻止来自某个 IP 地址的流量:
# sudo iptables -A INPUT -s 你的 IP 地址到阻止 -j DROP sudo iptables -A 输入 -s 192.168.1.0/24 -j DROP
将命令中的 IP 地址替换为要阻止的 IP 地址。您可以使用以下命令拒绝来自某个 IP 地址范围的流量:
# sudo iptables -A INPUT -m iprange --src-range 你的起始 IP 地址 - 你的结束 IP 地址 -j REJECT sudo iptables -A INPUT -m iprange --src范围 192.168.122.2-192.168.122.34 -j REJECT sudo iptables -A INPUT -m iprange --dest-range 8.8.8.2-8.8.8.22 -j DROP
我们在示例中使用的 iptables 选项工作如下:
-m:匹配指定的选项。
-iprange:指示系统等待一个 IP 地址范围而不是一个 IP 地址。–
src-range:标识源 IP 地址范围。–
dest-range:标识目标 IP 地址范围。
步骤 11:删除规则
更精确的方法是删除规则的行号。首先,输入以下命令列出所有规则:
sudo iptables -L --行号

找到要删除的防火墙规则的行并运行以下命令:
sudo iptables -D 输入数字
将 Number 替换为您要删除的规则行号。
步骤 12:列出 IPTables 规则
现在,您可以使用 iptables 命令列出规则来测试防火墙规则。为此,请运行以下命令:
sudo iptables -L
这将列出所有当前有效的防火墙规则。
步骤 13:保存 IPTables 规则
系统重启后,iptables 不会保留您创建的规则。在 Linux 上配置 iptables 时,所做的任何更改都只会在下次重启后生效。因此,我们需要保存 IPTables 规则,以便它们在系统重启后仍然有效。我们可以将规则保存到目录 /etc/iptables/ 中,如下所示:
# Ubuntu sudo iptables-save > /etc/iptables/rules.v4 sudo ip6tables-save > /etc/iptables/rules.v6 # CentOS sudo iptables-save > /etc/sysconfig/iptables sudo ip6tables-save > /etc/sysconfig/ip6tables
然后我们可以在启动时加载这些规则:
# Ubuntu sudo sh -c“iptables-restore < /etc/iptables/rules.v4” sudo sh -c“ip6tables-restore < /etc/iptables/rules.v6”
另一种方法是将规则保存到基于 Ubuntu 的系统,请输入:
sudo -s iptables-save -c
下次系统启动时,iptables 将自动重新加载防火墙规则。
结论
现在,您应该已经拥有一个运行正常的 Linux VPS 防火墙,它能够允许必要的流量,同时阻止不必要的连接。请务必随着系统和网络需求的变化更新规则。希望本分步指南能够帮助您使用 IPTables 配置和保护您的 Linux VPS!如果您还有其他问题,请随时联系我们。