1 实现总体思想
通过改造 Linux 的 IP 协议栈源代码,使得 IP 实现与 IPSec 实现完全整合。该实现按功能分,可
以分为以下几个功能模块模块:安全策略库,安全关联库,AH 协议处理,ESP 协议处理,算法
(加密卡的实现),日志、统计、配置与审计,面向应用的接口。按处理过程分,还可以分为以下
几个处理模块:进入 IP 层预处理、IPSec 进入策略处理、路由、本机对 IP 包处理、IPSec 进入
处理、转发处理、本地 IP 包处理、IPSec 外出处理、发送处理。
Ipsec 协议实现与 IP 实现的整合思想:利用 Netfilter 的 HOOK 机制,在接受 IP 包和发送 IP 包
的过程中,在适当的处理位置调用相关的 ipsec 处理模块。
1.1 Netfilter 的 HOOK 机制的介绍
Netfilter 是 linux2.4 内核实现数据包过滤/数据包处理/NAT 等功能的抽象、通用化的框架。
Netfilter 框架包含以下三部分:
1、 为每种网络协议(IPv4、IPv6 等)定义一套钩子函数(IPv4 定义了 5 个钩子函数),这些钩子
函数在数据报流过协议栈的几个关键点被调用。在这几个点中,协议栈将把数据报及钩子函数标
号作为参数调用 netfilter 框架。
2、 内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样当某个数据包
被传递给 netfilter 框架时,内核能检测是否有任何模块对该协议和钩子函数进行了注册。若注册
了,则调用该模块的注册时使用的回调函数,这样这些模块就有机会检查(可能还会修改)该数据
包、丢弃该数据包及指示 netfilter 将该数据包传入用户空间的队列。
3、 那些排队的数据包是被传递给用户空间的异步地进行处理。一个用户进程能检查数据包,修
改数据包,甚至可以重新将该数据包通过离开内核的同一个钩子函数中注入到内核中。
IP 层的五个 HOOK 点的位置如图 1 所示:(ipv4)
1. NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验 和等
检测), 源地址转换在此点进行;
2. NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT 包过滤在此点进行;
3. NF_IP_FORWARD:要转发的包通过此检测点,FORWORD 包过滤在此点进行;
4. NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的目的
地址转换功能(包括地址伪装)在此点进行;
5. NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT 包过滤在此点进行。
1.2 处理模块之间的关系
IPSec 安全网关对 IP 报文的接收、转发和发送处理的整个过程如图 2。当安全网关的网卡接收的
数据报时,通过中断触发内核的中断处理程序,将网卡接收的数据报传送到内核空间,然后再通
过 IP 层预处理程序将数据报转换为 IP 包。此时,我们将利用内核的 Netfilter 机制提供的 HOOK
点 PRE_ROUTING,将 IP 包传送到 IPSec 进入策略处理模块。该模块将决定哪些包可以进入安
评论0
最新资源