iptables防火墙用于管理包过滤和NAT规则。IPTables附带所有的Linux发行版。了解如何设置和配置iptables将有助于您有效地管理您的Linux防火墙。

iptables工具用于管理Linux防火墙规则。首先,iptables可能看起来很复杂(甚至令人困惑)。但是,一旦你了解了iptables的工作原理以及它的结构,阅读和编写iptables防火墙规则将很容易。

本文是正在进行的iptables教程系列的一部分。这是该系列的第一篇文章。

本文解释了iptables的结构,并解释了关于iptables表,链和规则的基础知识。

在高级别的iptables上可能包含多个表。表可能包含多个链。链可以是内置的或用户定义的。链可能包含多个规则。规则是为数据包定义的。

所以,结构是:iptables - > Tables - > Chains - > Rules。这在下图中定义。

Linux防火墙教程:IPTables表,链,规则基础

:IPTables表,链和规则结构

只是重新迭代,表是一堆链,链是一堆防火墙规则。

I. IPTABLES表和链

IPTables有以下4个内置表格。

1.过滤表

过滤器是iptables的默认表。所以,如果你没有定义你自己的表格,你将会使用过滤表格。Iptables的过滤表具有以下内置链。

  • INPUT链 - 进入防火墙。对于进入本地服务器的数据包。

  • OUTPUT链 - 从防火墙传出。对于在本地生成并从本地服务器发出的数据包。

  • FORWARD链 - 本地服务器上的另一个NIC的数据包。对于通过本地服务器路由的数据包。

2. NAT表

Iptable的NAT表具有以下内置链。

  • PREROUTING链 - 在路由之前修改数据包。即分组转换在分组进入系统之后立即发生(并且在路由之前)。这有助于将数据包的目标IP地址转换为与本地服务器上路由匹配的内容。这用于DNAT(目标NAT)。

  • POSTROUTING链 - 修改路由后的数据包。即数据包在离开系统时发生数据包转换。这有助于将数据包的源IP地址转换为可能与desintation服务器上的路由匹配的内容。这用于SNAT(源NAT)。

  • OUTPUT链 - 防火墙上本地生成的数据包的NAT。

3.打桌子

iptables的Mangle表用于专门的数据包更改。这会改变TCP报头中的QOS位。曼格表有以下内置链条。

  • PREROUTING链

  • OUTPUT链

  • FORWARD链

  • INPUT链

  • POSTROUTING链

4.原始表格

Iptable的Raw表是用于配置的。原始表格具有以下内置链条。

  • PREROUTING链

  • OUTPUT链

下图显示了iptables中的三个重要表格。

Linux防火墙教程:IPTables表,链,规则基础

:IPTables内置表格

II。IPTABLES规则

以下是要记住iptables规则的关键点。

  • 规则包含一个标准和一个目标。

  • 如果条件匹配,则转到目标中指定的规则(或)执行目标中提到的特殊值。

  • 如果标准没有配合,则转到下一个规则。

目标值

以下是您可以在目标中指定的可能的特殊值。

  • 接受 - 防火墙将接受数据包。

  • DROP - 防火墙将丢弃数据包。

  • QUEUE - 防火墙将数据包传递给用户空间。

  • 返回 - 防火墙将停止执行此数据包的当前链中的下一组规则。该控件将返回到调用链。

如果您执行iptables -list(或)service iptables status,则会看到系统上的所有可用防火墙规则。以下iptable示例显示在此系统上没有定义防火墙规则。如您所见,它显示默认输入表,默认输入链,前向链和输出链。

# iptables -t filter --listChain 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

执行以下操作来查看mangle表。

#iptables -t mangle --list

执行以下操作查看nat表。

#iptables -t nat --list

执行以下操作查看原始表格。

#iptables -t raw --list

注意:如果您不指定-t选项,它将显示默认过滤器表。所以,以下两个命令都是相同的。

#iptables -t filter --list#iptables --list

下面的iptable示例显示在过滤器表的输入,转发和输出链中定义了一些规则。

# iptables --listChain INPUT (policy ACCEPT)num target prot opt source destination1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0Chain FORWARD (policy ACCEPT)num target prot opt source destination1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0Chain OUTPUT (policy ACCEPT)num target prot opt source destinationChain RH-Firewall-1-INPUT (2 references)num target prot opt source destination1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/02 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 2553 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/04 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/05 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:53536 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:6317 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6318 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2210 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

iptables -list命令输出中的规则包含以下字段:

  • num - 特定链中的规则号

  • 目标 - 我们上面讨论的特殊目标变量

  • prot - 协议。tcp,udp,icmp等,

  • opt - 特定规则的特殊选项。

  • 源 - 数据包的源IP地址

  • 目的地 - 数据包的目的地IP地址

相关文章