UNIX主机行为监控系统的设计与实现

2010-01-08 07:28
关键词:网卡内核引擎

张 君

(浙江省电子产品检验所,浙江杭州310012)

UNIX主机行为监控系统的设计与实现

张 君

(浙江省电子产品检验所,浙江杭州310012)

该文介绍了Unix主机行为监控系统在大型网络中的应用及作用,并提出了具体的设计方案与实现方法。该系统主要采用透明的方式串接在工作区域和服务器群之间,利用网卡零拷贝的技术保障业务流量不会产生瓶颈,同时利用bypass的技术来保障服务器群的高可用性,既能保证服务器群的安全,又不会给网络带来附加的影响。

透明;零拷贝;反解析

0 引 言

目前,财税、公安、金融、电力、电信和移动行业、大型公司和著名门户网站,通常选择Unix/Linux主机来运行关键业务,企业数据中心通常拥有数量众多的Unix/Linux主机,用以运行电子商务、数据库应用、运维管理、ERP和协同工作群件等。大型企业内部甚至有数百台Linux/Unix主机、大量的数据库系统应用、系统软件和复杂的网络系统。面对系统和网络安全性、IT运维管理和IT内控外审的挑战,管理人员需要采用有效的技术手段,按照行业标准进行精确管理、事后追溯审计、实时监控和警报[1]。但由于缺乏相应的先进工具和手段,企业无法保证系统管理员严格按照规范来进行管理,如无法保证系统管理员的真实管理行为/管理报告与规章制度要求一致,造成企业网络及服务器经常处于不可信、不可控、不可视的状态。UNIX主机行为监控系统主要用于UNIX服务器系统安全防护,让UNIX服务器的操作、管理与运行更加可视、可控、可管理、可跟踪、可鉴定。该系统解决了UNIX服务器系统级别的安全问题与安全威胁,为国家重要部门和企业UNIX服务器的正常有序运行,提供可靠的安全保障;同时,可对数据库、网络设备、安全设备等各种IT设备进行操作行为管理。

1 系统设计

1.1 总体设计

考虑到系统的安全性和运行的效率,UNIX主机行为监控系统可采用自行修改和裁剪的Linux内核作为基础平台,系统工具集采用busybox,因此除了C语言的一些运行时库外,不依赖于任何发行版的Linux系统。这样既避免了发行版Linux众多的服务中可能存在安全漏洞的隐患,也节省下来了这些服务运行所消耗的系统资源。

UNIX主机行为监控系统完全可透明地串接在工作区域和服务器群之间,系统本身不需要分配IP地址,直接将两端的出口分别接在系统的两个网卡上即可。一般情况下流经系统的数据分为两部分:一部分是服务器对外提供的业务流量;另一部分是维护人员对服务器本身进行维护的操作流量。系统需要监控的是第二部分流量,也就是维护操作流量,对于业务流量系统需要近乎于线性的转发,不能因为接入了系统而影响原有正常业务的运行效率。系统总体设计可采用如图1、2所示,图1是在设备一切正常的情况下运行示意,图2是在数据分流引擎或者反解析引擎崩溃的情况下运行示意。

图1 设备一切正常的情况下运行示意

图2 数据分流引擎或反解析引擎崩溃的情况下运行示意

1.2 模块设计

1.2.1 网卡驱动设计

网卡驱动是系统中唯一运行在内核级的模块,通过/proc与运行在应用层的模块进行交互。考虑到稳定性因素,网卡驱动仅仅向应用层提供读取数据包和转发数据包接口,其他逻辑功能均在其他模块中实现。同时考虑到系统后期升级问题,网卡驱动以ko的方式存在,而不是直接编译到内核当中。

1.2.2 数据分流引擎设计

数据分流引擎的主要作用在于从网卡驱动获取当前进入系统的数据包,同时对数据包进行识别,当识别为操作数据流时,将数据包交由反解析引擎做进一步处理,反之直接通过另一边网卡发送数据。

1.2.3 反解析引擎设计

反解析引擎从得到的操作数据流中还原出维护操作,并将操作以日志的形式发送至分析引擎进行规则匹配,同时将数据流记录为二进制文件,该文件将作为实时监控和回放的源文件。

1.2.4 分析引擎设计

分析引擎接收到反解析引擎发送来的操作日志时,通过预定义的规则库对操作日志进行匹配。如果在匹配过程中,命中了规则库的某条规则,则产生相应的动作,反之简单地将操作日志录入操作日志数据库。

1.2.5 Bypass引擎设计

Bypass引擎实时监控反解析引擎和数据分流引擎的运行情况,一旦发生故障,立即通过内核打开硬件Bypass继电器,保证网络的通畅,同时重新启动反解析引擎和数据分流引擎,当重启完毕后再次进入系统监控状态。

2 系统实现

2.1 网卡驱动实现

网卡驱动需要根据选择的硬件不同而实现不同的代码,这里以intel100M网卡为例来介绍如何实现系统中的纯透明模式。纯透明不同于桥接,假设使用eth0和eth1两个网口,那么两端分别接到这两个网口上,但对于两端而言都感知不到系统的存在,和直接使用网线把两端连接起来效果相同。

首先,在e100_set_multicast_list接口中,将eth0和eth1对应的flags置为IFF_PROMISC,保证网卡工作在混杂模式。然后,在e100_rx_indicate接口中加入代码,如果发现是由eth0和eth1接收到的数据包,则把相应的sk_buff(Linux内核存储网络数据包的结构体)缓存下来,而不交给内核中的TCP/IP协议栈代码处理,等待数据分流引擎来读取。最后,封装e100_xm it_frame接口,供其他引擎直接调用发送数据包。

2.2 数据分流引擎实现

数据分流引擎从/proc下的指定文件中读取出网卡驱动接收到数据包的物理地址,通过mmap将物理地址映射到本进程的虚拟地址空间,此后对数据包所在内存的操作可以完全与进程空间内的内存操作相同。

由于获取到的数据包为包含链路层包头的裸数据包,因此首先需要模拟内核的TCP/IP协议栈对数据包进行重组和拆解处理,然后对应用层数据进行模式匹配,匹配命中的数据包交给反解析引擎做进一步处理,反之通过/proc下指定文件将转发指令传给内核,由内核负责数据包直接转发。

2.3 反解析引擎实现

反解析引擎需要对SSH、TELNET和RLOGIN 3种常用的UNIX服务器维护协议进行反解析。对于TELNET和RLOGIN两种协议比较简单,因为它们使用明文方式传输,所以只需要对数据包进行分析并解析出操作,然后原样转发数据包即可。SSH使用公钥加密、私钥解密的加密通讯方式,因此需要首先在SSH连接协商阶段对密钥对进行替换,接下来的处理方式与TELNET和RLOGIN雷同,原理如图3所示:

图3 反解析引擎实现

2.4 分析引擎实现

分析引擎启动时从用户自定义规则文件中加载规则树(为达到高速匹配的目的,使用树形规则库,而不使用规则链),规则节点中包含规则ID、条件和动作3个主要字段,动作包括告警和阻断两种。

分析引擎实时接收反解析引擎发送来的操作日志数据,然后对操作日志进行规则树匹配,如果匹配命中则按照动作进行相应处理。命中规则中动作为阻断则向连接建立的两端分别模拟发送rst包阻断连接,动作为告警则向告警中心发送告警信息。

2.5 Bypass引擎实现

Bypass引擎通过本地UDP通讯分别向数据分流引擎和反解析引擎发送质询包,询问两者的实时状态,两个引擎接收到质询后要立即向Bypass引擎回复运行状态。质询期超时设定为3s,也就是说如果3s内Bypass引擎收不到数据分流引擎和反解析引擎的运行状态,则立刻通过/proc下指定文件向内核发送开启Bypass继电器指令,整个系统进入直接通路状态。在通路状态下,由于继电器的作用,所有网络数据包直接由两块网卡在硬件上转发,此时软件模块全部失效,具体状态可参见图2。

当然,由于存在一个质询周期,如果刚好在质询周期的开始数据分流引擎或者反解析引擎出现问题,那么网络会在质询周期内出现中断的现象,因此在CPU性能较强的情况下,应该将质询周期适当缩短,以保证网络通畅。

3 结束语

UNIX主机行为监控系统,实现了对UNIX服务器进行远程维护的全方位控制和监管,不改变原有网络结构和使用方式,且整体部署方式简单,可以比较方便地集成到现有安全策略的管理架构中。可以预见,该系统将会成为网络安全防护系统的重要组成部分,对单位内部网络安全起到积极的作用。

[1]景杰峰,王国青.电力信息化[M].北京:国电信息中心,2009(5):40-42.

[2]Andrew STanenbaum.王鹏,尤晋元译.操作系统:设计与实现(第2版)[M].北京:电子工业出版社,1998:60-98.

[3]Daniel PBovet,Marco Cesati.陈莉君,冯锐,牛欣源译.深入理解LINUX内核[M].北京:中国电力出版社,2001:35-40.

[4]Maurice JBach.陈葆珏,王旭,柳纯录,等译.UNIX操作系统设计[M].北京:机械工业出版社,2000:62-135.

[5]Alessand Rubini,Jonathan.魏永明,骆刚,姜君译.Linux设备驱动程序[M].北京:中国电力出版社,2002:8-35.

[6]张载鸿.微型机(PC系列)接口控制教程[M].北京:清华大学出版社,1992:156-198.

Design and Implementation of Action Monitor System for UNIX ZHANG Jun

(Test the Electronic Products in Zhejiang Province,Hangzhou Zhejiang310012,China)

This paper introduces the destination to deploy actionmonitor system for UNIX in the enterprise network,and explainshow to design and implement.The system is placed betweenwork area and servers transparently.The system can avoid bottle-neck by zero copy and ensurehigh availability by bypass.The system can insure the security of serverswithout negative externality.

transparent;zero copy;reverse resolution

TP399

A

1001-9146(2010)05-0025-04

2010-07-20

张君(1980-),女,河南内乡人,工程师,电子信息技术.

猜你喜欢
网卡内核引擎
强化『高新』内核 打造农业『硅谷』
Server 2016网卡组合模式
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
蓝谷: “涉蓝”新引擎
微生物内核 生态型农资
挑战Killer网卡Realtek网游专用Dragon网卡
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
RHEL7 Network Teaming(网卡绑定)配置与测试