IKE实现方案.docVIP

  • 9
  • 0
  • 约6.13千字
  • 约 6页
  • 2017-02-09 发布于重庆
  • 举报
IKE实现方案

IKE实现方案 RFC文档对IKE实现的要求 实现的总体思想 IKE是作为一个守护进程运行的,负责处理用户的管理配置命令、同协商实体的交互、IKE数据报的处理以及同内核的SADB的交互。整个系统就按照功能划分成几个模块:IKE管理模块、IKE验证模块、消息处理模块。其中消息处理模块按照消息的来源又分为几个子模块:网络消息处理模块、内核消息处理模块、状态消息处理模块和用户命令处理模块。为了各个模块能对协商的数据进行共享,设计了IKE状态库模块,能够提供统一的接口实现查询,更新、删除、添加等操作。IKE作为一个应用层协议实现在应用层,但是需要同内核SADB进行SA消息的传递所以要提供了一个接口。本方案中实现了PF_KEY协议作为内核和IKE守护进程的接口。 左图描述了本系统的基本框架。 其中用户管理接口是整个IPSEC网关配置的一个子界面,提供用户一个友好管理、配置、监视界面。 UDP/500表示IKE守护进程是利用UDP协议的500端口进行网络通信。 模块功能简要介绍 ◆ 管理模块负责处理用户的命令并调用对应的处理函数,分析运行数据并返回给用户管理接口。 消息服务器模块负责监控几个消息队列,对其中的事件调用注册的处理函数。消息队列分为管理消息,网络消息,内核消息以及SA状态消息。 IKE验证模块负责验证IKE协议的载荷数据,并构造响应或请求数据报文。 IKE状态库记录IKE运行期间的需要的协商信息和当前的SA信息。 模块的交互关系 管理模块与消息处理模块 管理模块能够把管理员的某些命令传递给消息处理模块的管理消息处理子模块。通信机制是利用AF_UNIX socket协议簇。系统创建一个临时运行文件,然后管理模块和管理消息子模块都创建一个 AF_UNIX socket int sock = socket(AF_UNIX, SOCK_STREAM, 0)。管理模块向此socket发送管理消息,管理消息处理子模块监听此socket。 消息处理模块与IKE验证模块 网络消息处理模块分析并提取数据,组织成msg_digest数据结构,然后把此数据作为参数调用IKE验证模块进行处理。IKE验证模块返回后继处理标志,把构建的响应载荷或失败代码添加到msg_digest结构中。 数据结构(概念结构)如下: struct msg_digest { 原始数据包 消息到达的接口 发送者ip地址 发送者端口号 IKE载荷 加密标志 包对应的协商对象的状态 当前状态对象 响应报文载荷 验证失败原因 } 各个模块的实现 管理模块的实现 设计思想 管理模块对上提供系统的运行状态和状态设置服务,对下则提供系统需要的各种初始参数,包括自身和远程安全网关的身份信息、密钥信息、协商策略、协商时机,也包括了必要的防火墙策略设置信息以增强安全性。模块设计能够进行实时监控,实时反映系统的运行状态、及时响应网管的命令。 配置文件记录系统的初始运行参数,它记录的是静态且一般为固定的信息。日志文件记录系统运行以来的所有事件,包括策略更改、状态的更改、网络异常事件。 管理模块对上层提供了命令接口可以直接地动态装载和更改协商信息、启动协商,删除SA。模块这些命令数据,再把参数传递给消息处理模块来具体执行。 具体实现 功能接口 载入、重载协商通道参数,启动、关闭协商通道 sa的更新、删除、添加 静态配置文件的修改 数据统计、状态显示、检查日志 安全考虑 配置文件中的配置信息和身份、密钥信息采用shadow加密方式。 消息服务器模块 设计思想 在系统运行期间,管理模块可能要发送管理消息,内核发出的SA请求,更新消息,以及网络上传来的协商消息另外系统自身由于网络拥塞产生超时消息或设置的SA生命过期更新消息。所以本模块被设计成服务器模式,并对每种消息类型设置一条消息队列。模块轮询这几条消息队列,如果有消息就调用对应的消息处理函数来处理。 具体实现 管理消息处理模块 Admsg_handle接收到管理模块的消息之后,对消息进行完整性检查,根据消息的类型调用对应的处理函数。例如, terminate_connection终止协商、initiate_connection启动协商等等。 内核消息处理模块 内核响应消息的处理也分为两种:同步和异步。 同步消息是当调用函数向内核发送了pfkey消息,阻塞该进程监听内核的响应消息。例如在程序完成阶段2 的sa协商向内核发送一个安装sa的消息,然后就等待内核的响应消息。如果此时该pfkey socket接口内无消息可读就返回,否则一直阻塞监听该socket接口。由于内核处理之后的响应消息发送

文档评论(0)

1亿VIP精品文档

相关文档