设置防火墙是保护大多数现代操作系统的重要阶段。大多数 Linux 发行版都配备了不同的防火墙工具,我们可以使用这些工具来配置我们的防火墙。在本指南中,我们将讨论如何将 Iptables 防火墙配置到 Ubuntu 14.04。
注意:本教程涵盖 IPv4 安全性。在 Linux 中,IPv6 的安全性与 IPv4 分开维护。例如,“iptables”仅维护 IPv4 地址的防火墙规则,但它有一个称为“ip6tables”的 IPv6 对应项,可用于维护 IPv6 网络地址的防火墙规则。
基本命令
在遵循本指南之前,您必须有权访问非 root 超级用户帐户,并在您的服务器上设置 Sudo 权限。首先,您需要知道 iptables 命令只能以 root 权限运行。为了实现这个条件,我们将在本指南中的所有命令之前添加“sudo”。我们也可以使用“su”或“sudo -i”命令以 root 用户身份登录,但在本指南中我们将坚持使用“sudo”。
最初,我们需要找到为 iptables 配置的当前规则。这是通过使用以下命令实现的:
# sudo iptables -L But let's throw in a tag. 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 我们还可以使用 -S 标志而不是 -L 标志以更简单的格式查看当前规则:
# sudo iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT 在这两个结果中,我们可以看到三个链显示为 INPUT、FORWARD 和 OUTPUT。我们还看到,每个链的默认策略都设置为 ACCEPT,但在上面的结果中并没有设置实际的规则。这是因为 Ubuntu 没有附带默认规则集。
如果已经在 Iptables 中配置了规则,我们可以使用 -F 标志完全刷新它们,如下所示:
注意:如果您要远程刷新规则,则应将 INPUT 和 OUTPUT 链的策略设置为 ACCEPT。这可以通过键入来完成
# sudo iptables -S # sudo iptables -P INPUT ACCEPT # sudo iptables -P OUTPUT ACCEPT # sudo iptables -F 为 iptables 设置规则
iptables 的规则可以通过两种方式设置。一种方法是允许默认规则接受并通过设置特定规则来阻止任何不需要的流量。另一种方法是配置允许的流量并阻止其他所有内容。第二种方法通常是首选方法。
需要分配的第一条规则是通过键入以下命令接受所有入站流量:
# sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT我们可以再次使用 -L 标志查看上述命令的结果。
# sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 在这里我们可以看到,与应用规则之前相比,INPUT 链的策略发生了变化。下一步是允许到特定端口的流量以启用 SSH 连接。这可以通过以下方式完成:
# sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT默认情况下,“ssh”转换为端口号 22。任何端口号都可以用来代替“ssh”。要允许访问 HTTP Web 服务器,请键入以下命令:
# sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT还