微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 解析嵌入式系统中入侵检测的设计

解析嵌入式系统中入侵检测的设计

时间:01-05 来源:互联网 点击:

侵检测模块一般分为四部分:

(1) 事件产生器。从环境中抽取感兴趣的信息,并把信息转化为标准格式供系统其他部件使用。

(2) 事件数据库。事件数据库保存事件日志。

(3) 事件分析器。分析输入的格式化后的事件,进行真正意义上的入侵检测,并产生新的警告。

(4) 响应单元。响应单元按照警告进行相应的保护,反击入侵行为。

根据电力应用的特性和嵌入式系统的特点,对上述入侵检测框架进行修改如下:

(1)事件发生器产生原始日志数据,为了避免对进程实时性造成太大的影响,先不做格式化处理。

(2)事件数据库将接收的原始日志数据进行格式化处理,并进行相应的分类保存。

(3)事件分析器与响应单元合并,以减少对系统进程的占用。

整个入侵检测框架如图1所示。

图1 入侵检测框架图

3 基于主机的入侵检测模块的实现

3.1 入侵检测模块的实现流程

该操作系统是一个实时操作系统,为了不影响系统的实时性,入侵检测并不是实时处理,数据流在整个处理过程中可能并不是很流畅,所以在设计时采用消息队列形式传递原始记录。即每个事件产生器发送的消息都送到一个消息队列中,事件数据库在系统空闲时取出消息做统一的格式化处理,并保存到数据库中。当日志记录累积到一定程度时,由事件数据库触发事件分析器做分析检测,经过检测的日志记录可以适当删除,以保持事件数据库接收新日志的能力。事件分析器作为整个入侵检测模块的核心,其程序流程如图2所示。

'

 图2 事件分析器程序流程图

从图2可以看出,系统目前只检测三种安全威胁,这是针对电力系统的威胁而确定。检测的结果保存到威胁日志中并生成相应错误号,辅助响应单元完成后续操作。可以根据需求,通过修改检测策略库增加检测的攻击类型,但是为了不影响嵌入式系统的实时性,原则上只检测必要的攻击行为。

3.2 主要数据结构和方法

大型入侵检测系统采用标准的日志数据结构,以方便系统之间的数据交流。但作为一个嵌入式的应用,目前并没有做分布式架构的设计。若采用标准数据结构,则会使日志记录的数据量大大增加,占用大量有限的存储器空间。因此系统自定义了一个日志记录的数据结构,而事件数据库以一个结构体数组形式存在,并通过一个结构体控制数组使其成为一个循环区域。日志记录和控制循环区域的结构体数据格式如下:

  struct log {

  unsigned char tp; //说明日志文件类型

  unsigned char action; //说明操作类型

  unsigned long time; //说明操作时间

  unsigned long ip; //说明操作地点

  long backup; //供扩展用

  }

日志记录是整个模块中最占用存储器的部分,为了尽量减少占用存储区域,各个字段都做了优化处理。在时间上并不采用传统标准的年/月/日/时/分/秒表示,而是以一个无符号的长整型表示时间差来计算时间。

  struct logchain {

  struct log* start; //缓存区开始的地址

  struct log* end; //缓存区结束的地址

  unsigned short lpoint//上次入侵检测提取的最后一条记录

  unsigned short ttsize//整个缓存区的大小

  unsigned short entries//目前被占用的记录数目

  unsigned short curpoint//指向当前可以写入的缓存区点

  }

上述数据结构将控制整个事件数据库日志的存储管理。事件数据库以一个循环的结构体数组表示,可以避免数据缓冲区的溢出。

整个入侵检测模块主要有以下几个功能函数。为了保证通用性,所有函数都是以标准C语言编写。

(1)入侵检测模块的启动:unsigned char audit_init(void)。该功能函数将完成事件数据库存储区域的初始化、消息队列的初始化和常驻任务的建立。

(2)常驻任务:void audittrail_thread(void*arg)。当系统启动入侵检测服务后,该任务将作为常驻任务运行在系统中。常驻任务是接收事件产生器发送的消息,经格式化处理保存在事件数据库中,并根据事件数据库的情况触发事件分析器。

(3)检测函数

密码猜测攻击:void check_countguess(void)

异常操作行为:void check_abnormalaction(void)

资源访问情况:void check_resoucestatus(void)

这三个功能函数用来分析用户登录日志记录,检测是否存在恶意攻击。

(4)响应单元主函数:void response_main(unsigned char alarm)。该函数根据分析器得出的警告,调用响应策略库中的相关策略,实施保护或者反击措施。

本文提出的基于改进的μC/OS-II入侵检测模块的设计已基本实现。μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top