iptables基本概念

     iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 netfilter 项目的一部分。术语 iptables 也经常代指该内核级防火墙。iptables 可以直接配置,也可以通过许多 前端 和 图形界面 配置。iptables 用于 ipv4,ip6tables 用于 ipv6。

    iptables 可以检测、修改、转发、重定向和丢弃 IPv4 数据包。过滤 IPv4 数据包的代码已经内置于内核中,iptables 是用户工具,允许用户使用 链 和 规则。

    理解iptables关键是理解如下图,要想灵活运用iptable,此图必须烂熟于心。

    图中小写字符表示,大小字母表示链,表由链组成。不同的链作用于数据包处理的不同时间点。

    数据包进入系统经过的链顺序一般分为两种:

    1、若数据包为本机应用程序使用

    Network ->PREROUTING->Routing->INPUT->Local Process->Routing->OUTPUT->Routing->POSTROUTING->Network


    2、若数据包为转发包,经过系统后又转发出去

    Network->PREROUTING->Routing->FORWARD->Routing->POSTROUTING->Network

表(Tables)

1、raw 用于配置数据包,raw 中的数据包不会被系统跟踪。
2、filter 是用于存放所有与防火墙相关操作的默认表。
3、nat 用于网络地址转换(例如:端口转发)。
4、mangle 用于对特定数据包的修改(参考 损坏数据包)。
5、security 用于 强制访问控制 网络规则(例如: SELinux — 详细信息参考 该文章)。

 

链(Chains)

表由链组成,链是一些按顺序排列的规则的列表。默认的 filter 表包含 INPUT, OUTPUT 和 FORWARD 3条内建的链,这3条链作用于数据包过滤过程中的不同时间点,如该流程图所示。nat 表包含PREROUTING, POSTROUTING 和 OUTPUT 链。

默认情况下,任何链中都没有规则。可以向链中添加自己想用的规则。链的默认规则通常设置为 ACCEPT,如果想确保任何包都不能通过规则集,那么可以重置为 DROP。默认的规则总是在一条链的最后生效,所以在默认规则生效前数据包需要通过所有存在的规则。

规则

数据包的过滤基于 规则。规则由一个目标(数据包包匹配所有条件后的动作)和很多匹配(导致该规则可以应用的数据包所满足的条件)指定。一个规则的典型匹配事项是数据包进入的端口(例如:eth0 或者 eth1)、数据包的类型(ICMP, TCP, 或者 UDP)和数据包的目的端口。

遍历链

上图显示了在任何接口上收到的网络数据包按顺序穿过表的交通控制链的过程。第一个路由策略包括决定数据包的目的地是本地主机(这种情况下,数据包穿过 INPUT 链)或是其他(数据包穿过 FORWARD 链)。随后的路由策略包括决定给传出包分配哪个端口。通过路径上的每一条链,链上的每一条规则按顺序评估,无论何时匹配了一条规则,相应的目标/跳转动作将会执行。最常用的3个目标是 ACCEPT, DROP 和跳转到用户定义的链。内置链可以有默认的策略,但是用户定义的链没有。如果链中经过的每一条规则都不能提供完整匹配,那么数据包像这张图片上一样回落到调用链。如果任何时候一个 DROP 目标的规则实现完全匹配,那么丢弃数据包,不进行进一步处理。如果一个数据包在链中被 ACCEPT,那么它也将被所有超集链 ACCEPT,并且不再遍历其他超集链。然而,要注意,数据包将以正常的方式继续遍历其他表中的其他链。

模块

有许多模块可以用来扩展 iptables,例如 connlimit, conntrack, limit 和 recent。这些模块增添了功能,可以进行更复杂的过滤。

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
永久连接: http://www.nfvschool.cn/?p=253
标签:

发表评论