火墙的链与表

前言

关于防火墙

在生产环境公网条件下,黑客丛生、罪恶漫天,企业会在公网和内网之间砌一座保护墙,这个就叫做防火墙,有软件和硬件之分,其原理都是依据策略对穿越防火墙自身的流量过滤。保障数据的安全性是继保障数据的可用性之后最为重要的一项工作。防火墙作为公网 与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用。
常见的防火墙有两种,firewalld和iptables。虽然他俩都叫做防火墙,但其实都不是真正的防火墙, 它们都只是用来定义防火墙策略的防火墙管理工具,是一种服务。
火墙的核心是netfilter。

关于netfilter

netfilter提供了一个抽象、通用化的框架。作为中间件,为每种网络协议都定义了一套钩子函数。例如Ipv4定义了5个钩子函数,这些钩子函数在数据报流过协议栈的5个关键点被调用,也就是说,IPv4协议栈上定义了5个“允许垂钓点”。在每一个“垂钓点”,都可以让netfilter放置一个“鱼钩”,把经过的网络包(Packet)钓上来,与相应的规则链进行比较,并根据审查的结果,决定包的下一步命运,即是被原封不动地放回IPv4协议栈,继续向上层递交;还是经过一些修改,再放回网络;或者干脆丢弃掉。
这是火墙表和链的基础。

关于iptables

为什么专门提iptables呢?因为iptables和火墙表和链的关系密切
iptables防火墙由Netfilter项目开发,自2001年1月linux2.4内核发布以来,它已经逐渐成了linux不可分割的一部分。netfilter提供了一框架,iptables在它之上建立了防火墙功能

火墙的表与链(四表五链)

链(chain)的概念

什么是iptables里的链呢?我们知道iptables的作用是通过经过报文匹配的规则,然后执行相对应的动作,但往往这些规则不是一条规则,而是很多条,当我们把这些规则串到一个链条上的时候,就形成了链。

规则链
说明
PREROUTING对数据包作路由选择前应用此链中的规则。(所有的数据包进来的时侯都先由这个链处理)
INPUT进来的数据包应用此规则链中的策略
OUTPUT外出的数据包应用此规则链中的策略
FORWARD转发数据包时应用此规则链中的策略
POSTROUTING对数据包作路由选择后应用此链中的规则。(所有的数据包出来的时侯都先由这个链处理)
表(table)的概念

我们再想想另外一个问题,我们对每一个“链”上都放置了一串规则,但这些规则都有些相似,比如,A类规则都是对IP或者端口的过滤,B类则是修改报文,那么这个时候我们可不可以把他们放在一起呢?当然可以
我们把具有相同功能的规则的集合叫做“表”。不同功能的规则,我们可以放在不同的表中进行管理。
注:iptables为我们定义了4种表

规则表

(1)、filter表

属性说明
相关链INPUT、FORWARD、OUTPUT
作用报文过滤
内核模块iptables_filter

(2)、nat表(地址转发,端口伪装都是在nat表)

属性说明
相关链PREROUTING、POSTROUTING、OUTPUT
作用只能用来完成源/目的地址的转换。需要注意的是,只有第一个报文会经过这个表,这个连接的其他报文会自动完成转换。这个表的 target 有: DNAT、SNAT、MASQUERADE、REDIRECT

(3)、mangle表(备份表)

属性说明
相关链PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用修改数据包的服务类型、TTL、并且可以配置路由实现QOS
内核模块iptable_mangle

(4)、raw表(关闭Nat表上启用的连接追踪机制)

属性说明
相关链OUTPUT、PREROUTING
作用raw表的一个主要用途就是为了一件事情,那就是对报文设置一个标志,决定数据包是否被状态跟踪机制处理
内核模块iptable_raw

注:
第一张表:filter表格:放的是经过内核的ip input output forward
第二张表:nat表格:放的不是经过内核的服务 input output postrouting prerouting
第三张表:备用表格mangle: input output forward postrouting prerouting
第四张表:raw表:放的是不经过内核的output,prerouting
在这里插入图片描述
还有一点要特别强调:
filter表的访问都是要经过服务器内核的
nat表的访问都是不经过服务器内核防火墙访问规则

表链关系

表里主要存放一些规则,不过表里的规则不是适合每一条链的,某些‘链’中注定不会包含某些‘表’的规则。为了解释一下这句话的含义,我们用prerouting举例:
在这里插入图片描述
这个意思就是prerouting链只拥有nat表,raw表,mangle表所对应的功能
prerouting链中的规则存放于三张表中,而这三张表中的规则执行的优先级如下:
raw->mangle->nat(和上面的顺序一样)
不过火墙其实总共是有四张表,但四张表中的规则处于同一条链的目前只有output链。

报文流向

当客户端访问服务器的web服务时,客户端发送报文到网卡,而TCP/IP协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务中,而此时客户端的目标终点为web服务所监听的套接字,当web服务需要响应客户请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的IP与端口反而变成了原点。为了控制放行,需要在内核中设置INPUT 和OUTPUT进行检查。
在这里插入图片描述
不过有可能客户端发来的报文目标地址并不是本机而是其他服务器,这时候就需要添加PREROUTING,FORWARD,POSTROUTING
在这里插入图片描述
所以报文的流向可以分为以下几种:
到本机某进程的报文:PREROUTING -> INPUT
由本机转发的报文:PREROUTING -> FORWARD -> POSTROUTING
由本机的某进程发出报文(通常为响应报文):OUTPUT -> POSTROUTING

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值