(2020年){安全生产管理}用和开发主机安全监控系统

上传人:精****库 文档编号:143740206 上传时间:2020-09-01 格式:DOCX 页数:10 大小:347.49KB
返回 下载 相关 举报
(2020年){安全生产管理}用和开发主机安全监控系统_第1页
第1页 / 共10页
(2020年){安全生产管理}用和开发主机安全监控系统_第2页
第2页 / 共10页
(2020年){安全生产管理}用和开发主机安全监控系统_第3页
第3页 / 共10页
(2020年){安全生产管理}用和开发主机安全监控系统_第4页
第4页 / 共10页
(2020年){安全生产管理}用和开发主机安全监控系统_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《(2020年){安全生产管理}用和开发主机安全监控系统》由会员分享,可在线阅读,更多相关《(2020年){安全生产管理}用和开发主机安全监控系统(10页珍藏版)》请在金锄头文库上搜索。

1、安全生产管理用和开发主机安全监控系统用Python和wxPython开发主机安全监控系统王世华,沈卫超(北京应用物理与计算数学研究所,高性能计算中心)摘要:本文简要介绍Python,wxPython语言以及Boa图形界面生成器,以及用Python+wxPython快速开发跨平台图形用户界面的方法。同时描述了主机安全监控系统的功能及结构,主要针对于安全管理员图形界面的开发,详细阐述了其中的几个关键技术。关键词:主机安全,安全审计,Python,wxPython,图形用户界面DevelopingMonitoringSystemofHost-SecuritywithPythonandwxPython

2、WangShihua,ShenWeichao(HighPerformanceComputingCenter,InstituteofAppliedPhysicsandComputationalMathematics,Beijing,100088)Abstract:ThispaperintroducesthePython,wxPythonlanguage,andtheBoaconstructorshortly,thenexplainssomebasicmethodsofthesetoolsforrapidlydevelopingcross-platformGUIapplication.Wedesc

3、ribestructureandfunctionsofhost-securitymonitoringsystematthesametime,focusonGUIdevelopmentofthesecurityadministrator,andsomecriticaltechnologiesarepresentedindetails.Keywords:host-security,security-audit,Python,wxPython,GUI(GraphicalUserInterface)1引言随着来自企业或单位内部的安全风险越来越受到重视,内部资源的滥用是网络安全管理中的焦点问题。本文将要

4、介绍的是我们利用Python和wxPython开发的一套主机安全监控系统,以达到强化主机系统安全的目的,它分为三个部分,即:监控代理程序、监控信息中心和管理员控制台。目前我们所使用的绝大多数计算服务器均基于UNIX或者Linux操作系统,但是它们在图形方面的表现能力欠佳,界面不够友好,如何开发一款具有跨平台能力且界面表现友好的应用程序给我们提出了新的挑战。2开发工具简介2.1Python语言Python是一种解释型、面向对象、动态语义、语法优美的脚本型语言,也是开发具有工业强度的商业应用程序的优秀语言,尤其适合开发基于Internet和Web的、数据库密集型的、多层的客户机/服务器系统。Pyt

5、hon是当前移植能力最强的程序语言之一,最初,它是在UNIX上实现的,但之后扩展到了其它许多平台,其中包括MS-Windows、MacOSX、Linux、Solaris等,而且它的源程序和二进制代码都可以免费获得。2.2 wxPython和BoawxPython是Python语言的一个GUI工具集,它可以使Python程序员简单而轻松的创建一个健壮的、具有高级功能的图形用户界面。它在Python中是以扩展模块的方式实现的,拥有自身的窗体/控制,还加入了许多独立于操作系统的窗体,并且封装了流行的wxWindows跨平台GUI库,并且这些库文件是用C+编写的。wxPython同样具有跨平台能力,这

6、意味着我们编写出来的代码可以不经修改的运行在绝大多数操作系统之上,提高了代码的利用率和生产效率。它的基本结构如下图所示:操作系统Platform GUIwxWidgets 工具包wxPython 扩展模块wxPython 库代理类图1 wxPython体系结构Boa是一款wxPython图形界面生成器,也是一个Python的集成开发环境,它建立在wxPython、wxWidgets和Python之上。Boa被设计成为一个用于wxPython的简易Delphi,它不仅是Python开发的集成环境,如:wxPython可视化框架的设计、对象浏览、文档生成、调试、源码控制(CVS)等等,而且还集成了

7、其它Python技术,如:Zope、PyChecker、Py2EXE、Distutils以及Cyclops。3 系统结构和功能3.1系统结构主机安全监控系统由三个部分组成:监控代理程序、监控信息中心和管理员控制台。图2主机安全监控系统结构图监控代理程序从受监控主机采集并根据安全规则分析日志数据,然后将报警信息和归档日志传送给监控信息中心;监控信息中心负责从各监控主机的代理程序收集报警信息和归档日志,并将这些信息转存到后台数据库中;管理员控制台用于接收来自监控信息中心的实时报警信息,以及对归档日志的查询与统计、分析。3.2监控代理程序读模块负责从操作系统的审计日志文件中读取连续的审计日志数据,并

8、将其转换为一个便于存取操作的通用记录格式,传送给数据分析模块。数据分析模块根据安全规则对收到的审计数据进行分析。如果安全规则给出了明确的响应动作,则向动作响应模块发出动作指令,同时向发送模块传送匹配的数据记录。发送模块负责将接收到的数据传送给监控信息中心服务器。接收模块负责接收控制中心传来的安全规则和动作指令,刷新安全规则和向动作相应模块发送动作指令。动作响应模块负责切断用户与系统的连接和封锁用户系统帐号。各模块关系框图如下:图3监控代理程序的功能模块3.3监控信息中心图4监控信息中心的功能模块监控信息中心服务器的接收模块负责接收多个监控代理发送的数据,并传送给数据分析模块。数据分析模块根据安

9、全规则对接收到的数据进行分析,通过发送模块将动作响应传送给特定的监控代理。报警信息通过管理模块传送给管理员控制台,同时归档的数据存入数据库中。管理模块为管理员控制台提供安全监控系统的各种管理、监控与数据分析服务,包括修改和部署安全规则,查询和分析数据库的审计数据,并通过发送模块向各个监控代理部署新的安全规则和发起响应动作。3.4管理员控制台图5管理员控制台的功能模块管理员控制台可以集中的显示安全报警信息并拥有对归档审计数据的分析和查询功能,并且安全管理员能够对主机安全监控系统进行安全策略的集中配置和部署。主要分为7个模块:用户界面模块、身份认证模块、报警模块、统计分析模块、策略编辑模块,系统状

10、态模块和通信模块(发送与接收)。下面就开发该界面的几个关键技术进行论述。4 关键技术分析4.1用户界面设计用户界面的设计采用前面提到的Boa,需要注意的是各窗体控件之间的包容关系,位于顶层的窗体为、,基本窗体为、等等,它们之间的包容关系为先顶层后基本,如果包容关系混乱,将会对以后的窗体布局控制产生影响。另外,如果在界面中使用了图形文件,那么请拷贝到你所保存源码文件的目录下,并手动更改为相对路径,否则在不同平台上运行会出现运行时错误,这是由于Boa默认的保存方式为绝对路径。管理员用户界面如图6、7所示。图6开始主界面图7显示报警信息时的界面4.2窗体布局的处理图形用户界面应该可以很好的处理各窗体

11、之间的布局问题,在wxPython中通常使用Sizers进行布局控制,它类似于Java中的LayoutManagers。在图形界面中每个窗体都拥有一个最小尺寸,基于这个尺寸,当包容窗口改变它自身大小或状态时(更改了字体或标签),窗体布局机制就会自动计算子窗体的大小及位置以进行调整,在Boa中内置了,以及供我们使用。使用Sizers时最重要的一点就是窗体之间的嵌套问题,如果不注意窗体之间的相互关系,既包容窗口和被包容窗口(子窗口)的关系,Sizers可能无法满足你的要求。下面是实现Sizers的一些关键代码,这里还包含了嵌套的Sizers:#处于最上层的主Sizers,可管理附着于上面的子Siz

12、ers。mainSizer=()#依次添加位于最上层窗体的各控件(topLbl,0,5)(panel),0,|,5)#notesSizer是一个Grid控件,它包含了所有用户输入的信息notesSizer=(cols=2,hgap=5,vgap=5)#依次添加位于该层面上的各控件(1)(usernameLbl,0,_RIGHT|_CENTER_VERTICAL)(username,0,)(passLbl,0,_RIGHT|_CENTER_VERTICAL)(pass,0,)#把notesSizer加入到主Sizers当中去(notesSizer,0,|,10)#这里并排放置了两个按钮,并且按钮

13、的间隔可以随着主窗体大小的改变而变化。buttonSizer=()(20,20),1)(OKBtn)(20,20),1)(quitBtn)(20,20),1)(buttonSizer,0,|,10)#加入到主Sizers中#最后,通知,让Sizers进行布局处理(mainSizer)#将Frame放在所需要的Sizer当中,并防止它小于默认尺寸(self)(*()4.3多线程处理wxPython提供一个wxTimer类进行多线程处理,它可以在固定的时间间隔里进行不同的事务处理,并可以根据需要随时启动或停止该线程,且程序稳定性好,所以本系统采用轮询机制进行报警信息的查询。以下是实现的关键代码:1

14、=wxTimer(evtHandler=self,id=wxID_AIC_GUITIMER1)#初始化一个wxTimerEVT_TIMER(self,wxID_AIC_GUITIMER1,1Timer)#建立事件处理句柄1.Start(1000)#启动wxTimer,括号中为时间,单位毫秒。1.Stop()#停止wxTimerdefOnTimer1Timer(self,event):#编写你需要处理事务的代码,从略。4.4报警信息的显示在实际的系统中,一旦产生事件,就会引发大量的报警信息,如何显示这些信息,使得安全管理员能够一目了然的了解系统状况,是值得我们考虑的事情。我们利用wxPython

15、中的wxListCtrl类进行实现。首先,我们把从数据库中查询到的信息进行分离显示,主窗口只显示最主要的信息,如果管理员对于某一条记录感兴趣的话,可以点击该条记录,详细信息会显示在下面的窗口中(参看图7),关键代码:#加入一个列,如果要加入多列,可重复该语句。(col=0,format=wxLIST_FORMAT_LEFT,heading=ID,width=30)#列加入完毕后,设置数据入口点。_(,str(data0)#设置列中每个数据元素的值,如有多个元素,可重复该语句或设置一个循环程序。_(,1,data1);其次,为了使管理员更好的了解一段时间内的系统状况,我们还加入了排序功能,它可以按照列方式进行各种关键字的排序,如按照风险级别、事件发生时间等等,使用排序功能实际上用到了.混合类,使用时必须进行导入import.aslistmix;最后,为了增强界面的表现力,还可以在条目上加入图标,图标存储在中便于以后的重复使用,但目前该功能只能应用在第一列上。关键代码如下:=(16,16)#初始化一个ImageList1=.Add()#加入一个图标_(,_LIST_SMALL)#将wxListCtrl与wxImageList进行关联。5结论主机安全监控系统是基于操作系统级调用且不可旁路的,通过对审计日志的实时分析,可以发现和阻止非法

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号