Linux中iptables删除规则方法
默认情况下,Iptables 是大多数 Linux 发行版的主要防火墙。防火墙处理所有网络安全需求。 iptables 在网络安全中发挥着至关重要的作用,它是 Linux 系统的防火墙。通过将数据包与规则进行比较,它为 Linux 系统提供网络安全。 iptables 防火墙使系统管理员可以完全控制允许哪些网络流量或允许哪些网络流量等。
在本教程中,我们将在 Linux 上使用不同的命令行方法来删除与所需配置无关的 iptables 规则。
注意:强烈建议不要通过阻止 SSH 流量(默认端口 22)来锁定服务器。假设您由于防火墙设置而意外失去访问权限。在这种情况下,您可以通过带外控制台恢复访问权限来重新连接到它。
在删除 iptables 规则之前,我们先列出规则。查看 iptables 规则有两种方法,可以以规范形式查看规则,也可以以表中的列表形式查看规则。它们都以不同的方式显示相似的信息。
方法一:按规格列出
使用 -S 选项,iptables 列出其所有活动规则。
您可以看到输出类似于用于创建它们的命令,而无需在 iptables 命令之前进行。此外,如果您使用 iptables save 或 iptables-persistent,它看起来与 iptables 规则配置文件类似。
列出特定链
假设您想要输出特定的系列。在-S选项之后,可以直接将链名称放在其后面以指定系列名称。
例如,我们将在终端中运行以下命令来查看“输出”链中的所有规则规范。
方法 2:以表格形式列出
现在,我们将讨论另一种查看活动 iptables 的方法,其中我们将它们视为规则表。事实证明,在表视图中列出 iptables 规则对于相互比较其他规则非常有用。使用 iptables 命令的 -L 选项,可以以表格格式显示所有活动的 iptables 规则。
或者
这将按系列输出所有现有规则。假设您希望看到有限的特定系列作为输出。在这种情况下,您可以直接在 -L 选项之后指定该系列的名称。
在这里,我们回到例子。我们将通过指定“输出”链在终端中运行命令来查看该系列中的所有规则规范。
显示数据包计数和聚合大小
可以将 iptables 规则显示或列出为字节,显示数据包的总大小以及匹配每个规则的数据包数量。当您猜测哪些规则与数据包匹配时,这非常有用。最好在终端中同时使用 -L 和 -V 选项。例如,将使用 -v 选项再次检查 OUTPUT 链。
字节和 pkts,两个附加列现在存在于列表中。在我们列出活动的防火墙规则后,下一步将涉及重置字节和数据包数据的计数器。
重置数据包计数和聚合大小
您可以使用命令中的 -Z 选项将规则的字节和数据包计数器设置为零或为空。重新启动时,它也会再次重置。当您想查看服务器是否获得符合您的规则的新流量时,这非常有用。您可以使用 -Z 选项从所有规则和链中清除计数器。
例如,我们将在终端中运行以下命令来清除 OUTPUT 链计数器。
指定规则编号和链名称可以清除特定规则的计数器。为此,运行以下命令。
现在,您必须知道如何重置 iptables 字节计数器和数据包。现在,我们将阐明如何删除这些内容。为了克服这些问题,主要使用两种方法,我们将进一步讨论。
按规格删除规则
规则规范是删除 iptables 规则的一种方法。如果您在运行 IP 表命令时使用 -D 选项来运行此规则,将会有所帮助。您可以使用 iptables -s 选择一些特定的输出规则,并使用以下命令删除它们。
此处不包括显示规则在创建时的位置的 -A 选项。
按链和数字删除规则
它的行号和链也可以去除iptables规则。添加 –line-numbers 选项,通过以表格格式列出规则来设置任何规则的行号。
通过使用此数字,系统会将行号添加到每个规则行的 num 标题中。
当您决定要删除哪个规则时,最好记下该规则的行号和链。之后,在规则编号和链之后运行 -D 命令。例如,在这里,我们将删除丢弃无效数据包的输入规则。我们将根据 INPUT 链所在的规则运行以下命令。
一旦防火墙规则被删除,我们将看到如何刷新规则链。
冲水链
Iptables 为您提供了一种从链中删除所有规则或单独刷新链的方法。现在让我们看看如何以不同的方式刷新 iptables 链。
注意: 如果不使用默认的丢弃或拒绝策略刷新链,可能会导致您无法通过 SSH 访问服务器。如果执行此操作,您可以通过修复控制台的访问来连接到它。
冲洗单链
您可以将链和选项名称与 -F 或等效的 –flush 结合使用来刷新要删除的任何特定链。要删除所有输入链规则,请运行以下命令。
冲洗所有链
您可以使用 F 或等效的 –flush 选项删除所有防火墙规则。
sudo iptables --flush
删除所有链,刷新所有规则,并接受所有。让我们看看如何通过刷新所有链、表和防火墙规则来允许所有网络流量。
注意: 请特别注意,这会有效禁用您的防火墙。遵循本节的唯一原因是您只需要启动防火墙配置。
为了不通过 SSH 锁定您的服务器,您必须首先将每个底层链的默认策略设置为接受。
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
刷新所有 mangle 和网络表,(-X) 删除所有非默认链,(-F) 刷新所有链。
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
现在,您的防火墙将允许所有网络流量流向您。如果您列出了所有规则,则除了三个默认链(OUTPUT、FORWARD、INPUT)之外,您将看不到任何规则。
重置所有 iptables 配置
您可以结合使用以下所有命令将所有 iptables 配置重置为默认值。它会清除每个表中的所有规则并重置默认链策略,同时从每个表中删除所有空链。
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
结论
读完本教程后,您一定知道 iptables 如何删除和列出防火墙规则。在最简单的任务下,学习删除 iptables 中的任何规则被认为是一个学习曲线。我们可以使用多个选项来仅删除一条规则,并单独清除系列或特定表的所有规则。
请注意,通过 iptables 命令对 iptables 所做的任何更改都是暂时的,必须保存它们才能在服务器重新启动时保留。本教程还介绍了保存规则部分和一般防火墙规则。