本文介绍了如何使用“iptables -A”命令添加 iptables 防火墙规则。
“-A”用于追加。如果它让你更容易记住“-A”作为添加规则(而不是附加规则),那就没问题了。但是,请记住,“-A”在链的末尾添加了规则。
同样,记住 -A 在末尾添加规则非常重要。 通常,最后一条规则是丢弃所有数据包。如果您已经有一个丢弃所有数据包的规则,并且如果您尝试在命令行中使用“-A”来创建新规则,您最终会在当前的“丢弃所有数据包”规则之后添加新规则,这将使您的新规则几乎毫无用处。
一旦您掌握了 iptables,并且当您在生产中实现它时,您应该使用 shell 脚本,您可以在其中使用 -A 命令添加所有规则。在那个 shell 脚本中,你的最后一行应该总是“丢弃所有数据包”规则。当您想要添加任何新规则时,请修改该 shell 脚本并将您的新规则添加到“丢弃所有数据包”规则之上。
句法:
iptables -A chain firewall-rule
如果您不知道链是什么意思,最好先阅读iptables 基础知识。
以下参数可用于所有类型的防火墙规则。
上面的一些防火墙参数依次具有可以与它们一起传递的自己的选项。以下是一些最常见的选项。
要使用这些参数选项,您应该在防火墙规则中指定相应的参数。例如,要使用“–sport”选项,您应该在防火墙规则中指定“-p tcp”(或“-p udp”)参数。
注意:所有这些选项前面都有两个破折号。例如,sport 前面有两个连字符。
现在您了解了防火墙规则的各种参数(及其选项),让我们构建一个示例防火墙规则。
在这个例子中,让我们只允许传入的 SSH 连接到服务器。所有其他连接都将被阻止(包括 ping)。
警告:使用防火墙规则可能会导致您的系统无法访问。如果您不知道自己在做什么,您可能会将自己(和其他所有人)锁定在系统之外。因此,仅在没有人使用的测试系统上进行所有学习,并且如果您被锁定,您可以访问控制台以重新启动 iptables。
如果您已经有一些 iptables 规则,请在删除现有规则之前进行备份。
删除所有现有规则并允许防火墙接受所有内容。使用我们之前讨论过的iptables flush清理所有现有规则并从头开始。
测试以确保您能够从外部 ssh 和 ping 此服务器。
完成此示例后,您将只能通过 SSH 连接到此服务器。您将无法从外部 ping 此服务器。
仅允许与此服务器的传入 SSH 连接。您可以从任何地方通过 ssh 连接到此服务器。
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
上面的 iptables 命令有以下 4 个组件。
简单来说,上述规则可以表述为:所有通过 eth0 for ssh 传入的数据包都将被接受。
一旦您指定了接受数据包的自定义规则,您还应该有一个默认规则来丢弃任何其他数据包。
这应该是您在 INPUT 链中的最后一条规则。
要丢弃所有传入的数据包,请执行以下操作。
iptables -A INPUT -j DROP
要查看当前的 iptables 防火墙规则,请使用“iptables -L”命令。
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere
从上面的输出中可以看出,它依次具有以下两条规则。
与其从命令行添加防火墙规则,不如创建一个包含规则的 shell 脚本,如下所示。
# vi iptables.sh
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
# sh -x iptables.sh
+ iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
+ iptables -A INPUT -j DROP
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere
与 iptables append/add 命令类似,iptables 可用的其他命令很少。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。