iptables:传统的Linux防火墙管理程序(1)

《Linux 防火墙》读书笔记第3章——iptable:传统的Linux防火墙管理程序 (1)

第三章 iptables:传统的Linux防火墙管理程序(1)

3.1 iptables(防火墙)与 netfilter

3.1.1 Linux 包过滤防火墙的架构

iptables:传统的Linux防火墙管理程序(1)_第1张图片

Linus Torvalds 在 2016 年 12 月 11 日发布了 Linux 内核 4.9 的正式版本,据说 将在 2018年发布 5.x 版本。而实际上 从3.13 版本的内核开始,一个新的过滤机制 nftables 被加入。

3.1.2 netfilter/iptables 几点区别理解介绍

   =================================================
   netfilter/iptables 简介:

    (1)IP 数据包过滤系统由 netfilter 和 iptables 两个组件构成。

    (2)netfilter 是集成在内核中的一部分,其作用是定义、保存相应的规则。

    (3)iptables 是一种工具,用来修改信息的过滤规则及其他配置,而这些规则会保存在内核空间之中。

    (4)netfilter 是Linux核心中的一个通用架构,其提供了一系列的表(tables)每个表由若干个链(chains)组成,而每条链可以由一条或若干条规则(rules)组成。

    (5)iptables 与 netfilter 使用术语可以互换,但两者还是有区别。netfilter 是 Linux 内核空间的程序代码,它在 Linux内核里实现了防火墙。它要么直接编译进内核,要么被包含在模块集中。而 iptables 是用于管理 netfilter 防火墙的用户程序。

    (6)iptables 只是防火墙与用户之间的接口,真正起作用的是 Linux 内核中运行的 netfilter 。Linux 平台下的包过滤防火墙由 netfilter 组件和 iptables 组件组成,其中 netfilter 运行在内核态,而 iptables 运行在用户态,用户通过 iptables 命令来调用 netfilter 来实现防火墙功能。
     =================================================

3.1.3 Netfilter 与 Iptables 简介

(1) Netfilter 组件

        Netfilter 组件 是 Linux 内核中的一个用于扩展各种网络服务的结构化底层架构。该架构定义了包过滤子系统功能的实现,提供了 filter 、nat 和 mangle 3个表,默认使用并起防火墙作用的是 filter 表。每个表中包含若干条内建的链(chains),用户可在表中创建自定义的链。在每条连中,可定义一条或多条过滤规则(rules)。每条规则应指定所要检查的包的特征以及如何处理与这对应的包,这被称为目标(target)。目标值可以是用户自定义的一个链名,也可以是 ACCEPT、DROP、REJECT、RETURN 等值。

(2) Iptables 组件

         Iptables 组件 是一个用来指定 Netfilter 规则和管理内核包过滤的工具,用户通过它来创建、删除或插入链,并可以在链中插入、删除以及修改过滤规则。iptables 仅仅是一个包过滤工具,对过滤规则的执行则是通过 Netfilter 和 相关的支持模块实现的。

3.2 IP 防火墙(IPFW)和 Netfilter 防火墙机制的不同

3.2.1 IPFW 数据包传输

         IPFW 下(ipfwadm 和 ipchains),有三种内置过滤规则被使用:INPUT(输入规则链)、FORWARD(转发规则链)、OUTPUT(输出规则链)。
iptables:传统的Linux防火墙管理程序(1)_第2张图片

所有到达接口的数据包都按照 INPUT 规则被过滤。如果数据包被接受,它将被传递到路由模块。路由功能决定数据包是被传递到本地还是被转发到另一个传出(OUTPUT)接口。

如果被转发,数据包将由 FORWARD 规则进程第二次过滤。如果数据包被接受则将被传输到 OUTPUT 规则链。

所有本地产生的传出数据包和将被转发的数据包都被传递到 OUTPUT 规则链。如果数据包被接受则将从接口被发出。

收到并被发送到本地(回环)的数据包会通过两个过滤器(INPUT、OUTPUT),而转发数据包则通过了三个过滤器(INPUT、FORWARD 和 OUTPUT)。
iptables:传统的Linux防火墙管理程序(1)_第3张图片

回环路包括两个规则链(OUTPUT、INPUT)。每个回环路数据包在“传出”回环接口之前都会经过输出过滤器,接下来便会被传递到回环的输入接口。然后将应用输入过滤器。

这里的伪装是早期 Linux 版本中的概念。现在网络地址转换(NAT)完全是由 iptables 实现的。在此之前,NAT 在 Linux 中被称为伪装。源地址转换的一个简单、部分实现的版本(即伪装),被站点的所有者所使用,他们有一个公网 IP 地址,并希望私有网络中的其他主机也能够访问互联网。从这些内部主机发出的数据包源地址被伪装成那个公用的、可路由的 IP 地址。

3.2.2 Netfilter 数据包传输

iptables:传统的Linux防火墙管理程序(1)_第4张图片
Netfilter(iptables)使用了三个内置的过滤器:INPUT、OUTPUT、FORWARD。传入数据包需要经过路由功能,它决定了是将数据包传递到本地主机的 INPUT 规则链还是到 FORWARD 规则链。

【阅读推荐】

  • 防火墙和iptables
  • Linux 下iptables 网络防火墙的研究和实现
  • iptables(防火墙)与netfilter
  • 朱双印-iptables

你可能感兴趣的:(Linux)