首页 存档 技术 查看内容

Linux网络子系统安全性模块详细分析之模块功能描述 2 详细分析

2018-3-30 13:00 |来自: 互联网 259 0

摘要: 2 详细分析 2.1 模块功能描述 网络子系统包含了对TCP/IP四层模型的实现,根据包的流向又可分为输入、输出、转发三条链,从本质上讲,网络子系统就是在这三条链路、四层协议之间对数据包进行处理。输入和输出链贯穿 ...

2 详细分析

2.1 模块功能描述

网络子系统包含了对TCP/IP四层模型的实现,根据包的流向又可分为输入、输出、转发三条链,从本质上讲,网络子系统就是在这三条链路、四层协议之间对数据包进行处理。输入和输出链贯穿了四层协议,而转发链通常只工作在下面两层协议。网络层在子系统中处理了大量的框架细节,并且NetfilterXFRM框架都是通过网络层与子系统关联,因此这里主要分析了网络层的总体函数调用细节,如图2-1所示:


图2-1 模块总体函数调用关系

2.1.1 Netfilter框架分析

NAT机制是基于Netfilter框架结构实现的,Netfilter/iptablesIPv4体系结构如下图2-2

(1) Netfilter的HOOK机制

Netfilter通用框架不依赖具体的协议,不同的网络协议在IP协议栈建立了5HOOK点,分别为图中的PREROUTELOCAL_INFORWARDLOCAL_OUTPOSTROUTE,在每个HOOK点对数据包进行有选择的处理。


2-2IPV4中的处理点

内核任何模块可对一个或多个钩子函数进行注册,实现挂接,这样当某个数据包传递给Netfilter时,内核检测是否有模块对该协议和钩子函数进行注册。若注册了,则调用内核模块注册时的回调函数,模块便有机会检查并且在数据报经过这些钩子函数时被调用,从而模块可以修改、丢弃这些数据报及指示Netfilter将该数据报传入用户空间,并向Netfilter返回相应的值:NF_ACCEPT继续正常传输数据报;NF_DROP丢弃该数据报,不再传输;NF_STOLEN模块接管该数据报,不要继续传输该数据报;NF_QUEUE对该数据报进行排队(通常用于将数据报给用户空间的进程进行处理)NF_REPEAT再次调用该钩子函数。

(2) iptables基础模块

基于Netfilter框架,内核模块注册table,要求数据报流经指定的规则表table这种数据报选择用于实现数据报过滤(filter),网络地址转换(nat)及数据报处理(mangle)这三者是相互独立的模块,都是基于NetfilterHOOK函数和一系列的表、若干链和规则实现各自的功能。

内核规则按表链规则进行组织,如图2-3所示,规则表的不同HOOK点确定了的规则链,规则链中含有许多规则[2]


2-3iptables规则链组织结构图



本文转载于微信公众号: Linux内核之旅(LinuxKernelTravel),更多微信文章请扫描关注公众号:

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部