iptables的概念与底层原理(详解)
阅读原文时间:2023年07月08日阅读:2

目录

一:iptables

1.iptables简介
什么是iptables?我们首先应该知道它是Linux平台最著名的防火墙工具,系统自带的,从什么版本的内核开始自带的呢,2.4以后。
它的全称应该是netfilter/iptables,从这个名称上看,它其实是两个软件。netfilter是运行在内核之中的,对数据包进行分析处理;iptables是提供用户的一个配置管理工具,它可以设置一些表、表中有一些链条、链条上面有一些规则。通过iptables建立的一整个的规则体系,netfilter来对数据包进行分析处理。

2.什么是防火墙?
防火墙一直被认为是保护敏感信息的第一道防线。它们在安全和受控内部网络之间建立了一道屏障,提供低级网络保护,以及重要的日志记录和审计功能。
它能监视传入和传出的网络流量,并根据一组已定义的安全规则决定是允许还是阻止特定流量。

3.防火墙种类
1.硬件防火墙(主机防火墙)
F5
2.软件防火墙(网络防火墙)
iptables
firewalld

二:iptables基本介绍

  • 流程

    用户层 ---> 调用iptables ---> ip_tables内核模块 ---> Netfilter(系统安全框架) ---> 过滤请求

1.解析内容
1.iptables:
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的 “安全框架中” 才是真正的防火墙,这个框架的名字叫netfilter
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。

2.ip_tables内核模块:
ip_tables模块它是防火墙的核心模块,负责维护防火墙的规则表,通过这些规则,实现防火墙的核心功能。归纳起来,主要有三种功能:包过滤(filter)、NAT以及包处理(mangle)

3.netfilter:
netfilter才是防火墙真正的安全框架,netfilter位于内核空间
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(Network Address Translate), 数据包内容修改, 以及数据包过滤的防火墙功能

三:iptables流程(讲解)

1.流入本机

2.解析(流入本机)
讲解:
    当外部的数据进入时通过网卡进入本机后,在网络层时会经过PREROUTING链,PREROUTING链继续前进到达用户层之前,会经过INPUT链。

解析流程:
数据进入(通过网线) --> 链接网卡设备 --> 网络接口层 --> Netfilter -->
在网络层时会经过PREROUTING链 --> TCP UDP协议 --> 进入用户层之前(INPUT链)
--> 到达用户层
3流出本机

4.解析(流出本机)
讲解:
    当用户从用户层发出数据之后,会先经过OUTPUT链,在经过了OUTPUT链到达Netfilter防火墙,在经过防火墙到达设备驱动之前,会经过POSTROUTING链,之后在发送出去。

流程图解析:
用户操作命令工具(iptables) --> OUTPUT链 --> ip_tables内核模块 -->
Netfilter(防火墙) --> 网络层 --> 网络接口层 --> POSTROUTING链
-- 设备驱动    --> 网络传输出
5.经过本机

6.解析(经过本机)
讲解:
    报文经过路由并且发觉目的并不是本机,在经过PREROUTING链进入本机发现最终目的并不是本机时被转到FORWORD链后经过POSTROUING链转发出去。

流程解析:
数据进入 --> PREROUTING --> FORWARD --> POSTROUTING --> 出去

四:什么是包过滤防火墙

1.什么是包?
在数据传输过程,并不是一次性传输完成的;而是将数据分成若干个数据包,一点一点的传输。

2.什么是包过滤防火墙?
过滤数据包的防火墙。
3.包过滤防火墙如何实现?
通过系统安全框架,过滤数据包。

五:Iptables四表五链的概念

1.什么叫表?
具备某种功能的集合叫做表
2.那四个表,有哪些作用?
filter:  负责做过滤功能呢    :       INPUT、OUTPUT、FORWARD
nat:     网络地址转换             PREROUTING、INPUT、OUTPUT、POSTROUTING
mangle:     负责修改数据包内容        PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD
raw:     负责数据包跟踪                PREROUTING、OUTPUT

解析内容:
filter:
负责过滤数据包功能(过滤,防火墙)

nat    :a-b网络,中间经历c网络,本来访问b,但是通过c访问的b,这个时候由a访问c,转变成a访问b,中间就有一个地址转换(网络地址转换,端口映射,地址映射等)

mangle:
用于对特定数据包的修改(修改数据包的服务类型、TTL、并且可以配置路由实现QOS)
raw:
 跟踪数据包走到那个位置了(决定数据包是否被状态跟踪机制处理)
3.那五条链,运行在那些地方?
1) PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,,通常指响应报文)
2) INPUT:报文进入本机用户空间位置,允许的表filter, mangle
3) OUTPUT:报文从本机用户空间出去的位置,允许filter, mangle, nat
4) FOWARD:报文经过路由并且发觉不是本机决定转发但还不知道从哪个网卡出去,允许filter, mangle(中转)
5) POSTROUTING:报文经过路由被转发出去,允许mangle,nat(源地址转换,把原始地址转换为转发主机出口网卡地址)


五链
PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING

六:iptables全面流程图(详解)

1.解析流程顺序
流入本机: A  --->  PREROUTING  --->  INPUT ---> B
解析:
    网络经过该流程才能发出(出去)

流出本机:OUTPUT  --->  POSTROUTING  ---> B
    网络经过该流程才能进入(进来)

经过本机: A ---> OUTPUT ---> POSTROUTING | ---> PREROUTING ---> FORWARD  ---> POSTROUTING ---> C ---> PREROUTING  ---> INPUT ---> B
2.经过本机(内容解析)
 A ---> OUTPUT ---> POSTROUTING
 作用于A阶段(出去)

 c相当于是一个防火墙
 PREROUTING ---> FORWARD  ---> POSTROUTING ---> C
作用于C阶段(出去)

PREROUTING  ---> INPUT ---> B
作用于B阶段(进入)

七:链包含表

filter :  INPUT 、OUTPUT 、FORWARD
nat : PREROUTING 、 OUTPUT、 POSTROUTING
raw : PREROUTING、 OUTPUT
mangle : PREROUTING INPUT FORWARD OUTPUT POSTROUTING