欢迎访问千教网-生活知识百科,百科知识大全,优质生活百科知识分享网站

千教网-生活知识百科,百科知识大全,优质生活百科知识分享网站

千教网 > 生活 >

iptables 如何成为网络安全的 “守门神”?

www.rfying.com 2025-02-21 16:36 生活

在重大活动及节假日期间的网络安全保障工作中,为了以“最小化”原则收敛暴露面资产规模,经常要跟iptables打交道。iptables作为Linux系统防火墙的核心,通过精确控制网络流量,可有效应对各种网络威胁。为了帮助大家更好地理解和应用iptables,本文将深入剖析其工作原理与机制。

1、iptables前世今生

iptables最早可以追溯到ipfirewall,这是在Linux内核1.x时代的一个简易访问控制工具,能够工作在内核中,对数据包进行检测。然而,ipfirewall的功能非常有限,因为它需要将所有的规则都放进内核中才能运行。随着内核技术的发展,进入2.x时代后,ipfirewall更名为ipchains,它可以定义多条规则,并将这些规则串联起来,共同发挥作用,这使得防火墙的配置和管理变得更加灵活和强大。

而现在,我们所说的iptables是在ipchains基础上的进一步发展。iptables可以将规则组成一个列表,实现绝对详细的访问控制功能。与ipfirewall和ipchains一样,iptables本身并不算是防火墙,而是工作在用户空间中定义规则的工具。这些规则会被内核空间中的netfilter读取,从而实现防火墙的功能。

换句话说,netfilter才是防火墙真正的安全框架,iptables其实是一个命令行工具,位于用户空间,我们通过它操作真正的安全框架netfilter。

2、iptables基础理解

当客户端希望与服务器上的某个进程通信时,它会将数据包发送到网卡。在这个过程中,数据包的目标指向了该进程的特定套接字,即特定的IP地址和端口号。当该进程需要回应客户端的请求时,它会生成响应数据包,此时数据包的目的地址变为客户端的地址,而原本进程所监听的IP与端口则转变为数据包的发送起点。

之前我们提到过,防火墙的实质是内核中的netfilter模块。为了确保防火墙的“防护”功能得以实现,我们需要在内核中设置安检口,即“input安检口”和“output安检口”。所有进出服务器的数据包都必须通过这些安检口接受严格的审查。符合放行标准的数据包将被允许通过,而满足拦截条件的数据包则会被拦截,如下图1所示。

图1 防火墙示意图1

当然,客户端发来的数据包访问的目标地址可能并不是本机,而是其他机器,这时服务器就可以进行对数据包进行转发。这类转发的数据包就会先后通过“prerouting安检口”、“forward安检口”和“postrouting安检口”进行检查,即“路由前”、“转发”与“路由后”,如下图2所示。

图2 防火墙示意图2

在iptables中,上述安检口被称为链(chain),规则被定义在这些链上,而规则又因功能的不同被划分到不同的表(table)中。iptables配置防火墙的主要工作就是添加、修改和删除这些规则。

3、iptables常见概念

3.1 链的概念:

每当数据包通过这些安检口,安检口会立即启动规则匹配机制,针对传入的数据包逐一比对预设的规则,并根据匹配结果执行相应的操作。通常情况下,安检口上并非仅设置单一规则,而是整合了众多规则以满足不同的安全需求。当这些规则按照特定的顺序紧密排列,就构建起了我们所说的“链”。因此,我们可以将每个安检口视为如图3所示的结构模型,每一个通过安检口的数据包,都必须严格按照顺序,逐一与这条“链”上的所有规则进行比对。一旦数据包与某条规则相匹配,就会立即执行该规则所规定的动作。

图3 链的结构模型

如上图所示,iptables提供了五个基础链,分别是prerouting,input,forward,output,postrouting,它们的使用场景有所不同。

input 链:当收到访问本机地址的数据包时,将应用此链中的规则。

output链:当本机向外发送数据包时,将应用此链中的规则。

forward链:当收到需要转发给其他地址的数据包时,将应用此链中的规则。

prerouting链:在对数据包做路由选择之前,将应用此链中的规则。

postrouting链:在对数据包做路由选择之后,将应用此链中的规则。

3.2 表的概念:

之前我们提到每个“链”上都配置了一系列规则,然而这些规则中有些具有相似的功能。例如,A类规则主要用于对IP地址或端口进行过滤,而B类规则则负责修改数据包内容。为了更高效地管理这些规则,iptables在ipchains的基础上进行了优化升级,将具有相同功能的规则集合称为“表”。iptables提供了四个主要的表,分别是filter表、mangle表、nat表和raw表,其中默认使用的是filter表。这样的设计使得规则的管理和配置更加条理化和系统化。

filter表:对数据包进行过滤,具体规则决定如何处理一个数据包。

nat表:修改数据包的 IP 地址、端口号信息。

mangle表:修改数据包的服务类型,生存周期,为数据包设置标记。

raw表:决定是否对数据包进行状态跟踪。

3.3 表链关系:

由于五种链使用场景的不同,注定了某些链不具备某类规则,相对应地,某类规则不一定在所有链里存在。在iptables中,表和链之间的关系如下图4所示。

图4 表链关系

上图还反映了一个规律,就是链中不同表的规则匹配的先后。拿prerouting链举例,prerouting链中的规则存放于三张表中,而这三张表中的规则执行的优先级如下:raw - mangle - nat。事实上,iptables为我们定义了4张”表”,当他们处于同一条”链”时,执行的优先级如下:raw - mangle - nat - filter。

3.4 规则的概念:

在iptables规则中,匹配条件和处理动作是定义规则行为的两个关键组成部分。匹配条件用于确定规则适用于哪些数据包,可以是数据包源地址、目的地址、端口、协议等;而处理动作则定义了对匹配的数据包采取的操作,可以是放行(accept)、拒绝(reject)和丢弃(drop)等。通过灵活组合这些匹配条件和处理动作,管理员可以构建出复杂而精细的规则,以实现网络安全防护、路由管理、地址转换等多种网络操作。

4、iptables数据流向

结合上述信息,我们可以将数据包通过防火墙的流程总结为下图5所示,在配置iptables规则时,该图应该了然于胸。

图5 数据处理流程图

发送数据包过程:先进入output链处理,如果没有被拦截则根据路由选择出网口,再进入postrouting链处理,最后从网卡出去。

接收数据包过程:先进入prerouting链处理,根据路由判断数据包发给本机,报文进入input链处理,如果没有被拦截则被进程处理。

转发场景的数据包处理过程:先进入prerouting链处理,根据路由判断数据包是不是发给本机,是则进入forward链处理,如果没有被拦截则进入postrouting链处理,最后从网卡出去。

5、总结

网络安全防护是不可或缺的一环,特别是在构建大型网络时,在实际使用中iptables有着灵活且强大的防火墙功能。深入理解iptables,不仅有助于更全面地理解整个网络架构,还能精准把握内核空间中的数据流向,并深刻洞悉Linux的安全机制。希望今天的技术分享能为大家带来启发。

作者:万伟潇、吕梦琪

单位:中国移动智慧家庭运营中心

Tags:科技网络安全通信工业技术

热点排行
热门推荐
热门tag
爱拯救之意思 电脑缩放教程 施加 电脑蒙语教程 药怎么做好吃 身体乳 食品标签 刘和 猪油 乐队 冰块 发霉 下海 土豆 原产地 养老金 球菌 沙拉 煤气炉 识字 混合 烧纸 急救 氛围 指纹 维生素 驾照 脱发 蔬菜 天气 洋葱皮 注册登记 城区 子女 资格考试 冰糖水 父母 帕金森病 采收期 青笋 血亲 机器人 酸性 观众 夏侯杰 零食 免疫球蛋白 刘询 人类从业者 雅诗兰黛 测试 兑换券 霜淇淋 不支持 山东 金钱 环境 淘米水 豆角 著名