迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Linux 防火墙教程:iptables 表(Table)、链(Chain)、规则(Rule)基础

作者:迹忆客 最近更新:2022/10/23 浏览次数:

iptables 防火墙用于管理数据包过滤和 NAT 规则。 iptables 随所有 Linux 发行版一起提供。了解如何设置和配置 iptables 将帮助我们有效地管理 Linux 防火墙。

iptables 工具用于管理 Linux 防火墙规则。乍一看,iptables 可能看起来很复杂(甚至令人困惑)。但是,一旦了解了 iptables 工作原理及其结构的基础知识,阅读和编写 iptables 防火墙规则就会变得很容易。

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

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

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

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

 

iptables table、chain和 rule 结构
iptables table、chain和 rule 结构

 

重申一下,表是一堆链,链是一堆防火墙规则

IPTABLES 表和链

IPTables 有以下 4 个内置表。

1. Filter 表

Filter 是 iptables 的默认表。 因此,如果我们不定义自己的表,我们将使用 Filter 表。 iptables 的 Filter 表有以下内置链。

  • INPUT 链 – 进入防火墙。 对于到达本地服务器的数据包。
  • OUTPUT 链 – 从防火墙传出。 对于本地生成并从本地服务器传出的数据包。
  • FORWARD 链 - 本地服务器上另一个 NIC 的数据包。 对于通过本地服务器路由的数据包。

2. NAT 表

iptable 的 NAT 表有以下内置链。

  • PREROUTING 链 - 在路由之前更改数据包。 即数据包转换在数据包到达系统之后(并且在路由之前)立即发生。 这有助于将数据包的目标 IP 地址转换为与本地服务器上的路由匹配的内容。 这用于 DNAT(目标 NAT)。
  • POSTROUTING 链 - 在路由后更改数据包。 即当数据包离开系统时发生数据包转换。 这有助于将数据包的源 IP 地址转换为可能与目标服务器上的路由匹配的内容。 这用于 SNAT(源 NAT)。
  • OUTPUT 链 - 防火墙上本地生成的数据包的 NAT。

3. Mangle 表

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

  • PREROUTING 链
  • OUTPUT 链
  • FORWARD 链
  • INPUT 链
  • POSTROUTING 链

4. Raw 表

iptable 的原始表用于配置例外。 原始表具有以下内置链。

  • PREROUTING 链
  • OUTPUT 链

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

IPTables 内置表


IPTABLES 规则

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

  • 规则包含标准和目标。
  • 如果条件匹配,它将转到目标中指定的规则(或)执行目标中提到的特殊值。
  • 如果条件不匹配,则继续执行下一条规则。

Target 值

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

  • ACCEPT – 防火墙将接受数据包。
  • DROP – 防火墙将丢弃数据包。
  • QUEUE – 防火墙会将数据包传递给用户空间。
  • RETURN – 防火墙将停止为此数据包执行当前链中的下一组规则。 控制将返回给调用链。

如果我们执行 iptables –list (或) service iptables status,我们将看到系统上所有可用的防火墙规则。 以下 iptable 示例显示此系统上没有定义防火墙规则。 如各位所见,它显示了默认输入表,包括默认输入链、forward 链和output链。

$ iptables -t filter --list
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

iptables 显示防火墙规则

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

$ iptables -t mangle --list

执行以下操作以查看 nat 表。

$ iptables -t nat --list

执行以下操作以查看 raw 表。

$ iptables -t raw --list

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

$ iptables -t filter --list
(or)
$ iptables --list

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

$ iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
DROP       tcp  --  anywhere             anywhere             tcp dpt:mysql
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

iptables 显示规则

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

  • num – 特定链中的规则编号
  • target - 我们上面讨论的特殊目标变量
  • prot - 协议。 tcp、udp、icmp等,
  • opt - 该特定规则的特殊选项。
  • source – 数据包的源 IP 地址
  • destination - 数据包的目的地 IP 地址

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 Linux 中更新 YUM

发布时间:2023/05/04 浏览次数:82 分类:操作系统

本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。

在 Linux 中安装 Deb 文件

发布时间:2023/05/04 浏览次数:130 分类:操作系统

本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。

Linux 中的 lsof 命令

发布时间:2023/05/04 浏览次数:82 分类:操作系统

在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。

Linux 中的 ps aux 命令

发布时间:2023/05/04 浏览次数:69 分类:操作系统

本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。

Linux 中的 NTP

发布时间:2023/05/04 浏览次数:137 分类:操作系统

本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。

在 Linux 中计算文件中的唯一行

发布时间:2023/05/04 浏览次数:70 分类:操作系统

计算文件中的唯一行是 Linux 中的一项常见任务,可以使用多种不同的工具和方法来执行此操作。使用 sort 和 uniq 命令计算文件中的唯一行数

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便