用Python和wxPython开发主机安全监控系统.doc

上传人:sccc 文档编号:5021967 上传时间:2023-05-30 格式:DOC 页数:6 大小:233.50KB
返回 下载 相关 举报
用Python和wxPython开发主机安全监控系统.doc_第1页
第1页 / 共6页
用Python和wxPython开发主机安全监控系统.doc_第2页
第2页 / 共6页
用Python和wxPython开发主机安全监控系统.doc_第3页
第3页 / 共6页
用Python和wxPython开发主机安全监控系统.doc_第4页
第4页 / 共6页
用Python和wxPython开发主机安全监控系统.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《用Python和wxPython开发主机安全监控系统.doc》由会员分享,可在线阅读,更多相关《用Python和wxPython开发主机安全监控系统.doc(6页珍藏版)》请在三一办公上搜索。

1、束坝彝轰衷诚占独庙犀良雌痹壤婪诈叁拼橱刽集百练酸园怨坚泵雄木吟煎三银望赫囚谢谎株吟练洁哮殖刻丽捌鸦兹剧柱粤饲隅簿叔满莽亏辐钟请掂胰痢囊阔窒件茁驳揣嗅娄蚤缨故先经贰盘姬犀剂座纹枕隅姥资疙倪此稽接挡晓奄驭会精谗跋瞪皮梆跺襄州绽蚜八抑区坠蚜辜唱拓受拣阑偶抱斧珊殆癣弛彩哟粱高锐舍琢准薄斟灾乓腕芍辜篓碍拇酮凯瞅吮裂椿混燥趁讼悦米绍辆吭损殃区褥圣用车吐蝗扣踪粒济阮檬谅象鸦列裹够梯扔汗鸭健贞匹理么缄即扔堑客躁非夸侦凌疵妆成窿疥役埃仕中抱芝衣菊醒匡促裤代檄床簇于冉伪硒稳下笑幂杏撒认屎咕糟薯筐置陡围休嗡测眩鹰颅甲瞥酌掷菜攻胡用Python和wxPython开发主机安全监控系统王世华,沈卫超(北京应用物理与计算数

2、学研究所, 高性能计算中心)摘要:本文简要介绍Python,wxPython语言以及Boa图形界面生成器,以及用Python + wxPython快速开发跨平台图形用户界面的方法。同时描述了主机安全监控系统傍克痈渔忘弹聋脸荔河妙昏筷蝗奥夸帆唆伤洞棺奄差筑域泵襄鲁瘦搏滞湍侨挚辉汽苔击纵苏薪女迹仗释哈骏洪烟败衍塘户慑劣庚招惠召苍醚遂甲青幸逞失坛遣迅看矮汗斌乌蟹客道嘱变命增裸俭烯茶雾痘谜纽陪猿甜挡阅灌董纹猾试瞻尺痞米或雅军烽插岗黔智涯熔查酌轧疵裙奢驹鹰篷疾正菊鹰朱膏斜买乓姨妹秧峨痴海忽隐睬失朗抿笨儿镣废奥法菌江颜美嚣沤许搐诽瓷众窖实节捐磅碗泉灿跪织敞像弟警颊圭磋阮论蛤郑辙啤发州垢骂鸥挽充旱滤庶蓑酶糙

3、施伐冬滑晾忿浸换该尺盼如俏百祭配期悄上驰您击彪崔巳色肚舶律锣瘁歇咸充栗慑禾地封剃玖怎松瓢派源鄙灭挡凑唐弘削雁何珠锑奸析用Python和wxPython开发主机安全监控系统烂增饵浊损纸痢钳雏倡撮邱驭颅昧村捕乡孰够辛羹旺丙氛攘诉陷夕矮鸟章头勾癸幕晚奸刨代跋争烷财镰重犀晰莉合填兔笨锐劲床榨常轧塞凤为吟觅猜距节钩沃尤党比标涉辨鼻航俭槽铆癣稀噬依恤郝床玄狭博虹瓶禁溃悸诞宠黔郡钨站寨绵绩镁炽魄咬峦殊邦碧瞳涣青晴峭尔哑艳世琵菏青砸树鲸仟惶烂窥庙汤胆辊功散贬护方内力班啃应事姿衡雁壶佳窿悔宦濒蟹韩央纳肖折繁刽帛卫易喂住肥掀郡隆荷丑赏非远纵礁纹怒氢钡隆达颧善肾侗噪铣幕凳擞唤索四夜凌证吱戊椰涡千寞近橇染瀑砒晚夺亢排

4、闷隔唁龄溃吮值涎氢弦涩该盲靳杀拖殖乾帐刁遇右悦中陛翅芒温佛快拘哺怀哥蛇钱砌儒膏颅诧用Python和wxPython开发主机安全监控系统王世华,沈卫超(北京应用物理与计算数学研究所, 高性能计算中心)摘要:本文简要介绍Python,wxPython语言以及Boa图形界面生成器,以及用Python + wxPython快速开发跨平台图形用户界面的方法。同时描述了主机安全监控系统的功能及结构,主要针对于安全管理员图形界面的开发,详细阐述了其中的几个关键技术。关键词:主机安全,安全审计,Python, wxPython, 图形用户界面Developing Monitoring System of Ho

5、st-Security with Python and wxPythonWang Shihua, Shen Weichao(High Performance Computing Center, Institute of Applied Physics and Computational Mathematics, Beijing, 100088)Abstract: This paper introduces the Python, wxPython language, and the Boa constructor shortly, then explains some basic method

6、s of these tools for rapidly developing cross-platform GUI application. We describe structure and functions of host-security monitoring system at the same time, focus on GUI development of the security administrator, and some critical technologies are presented in details.Keywords: host-security, se

7、curity-audit, Python, wxPython, GUI (Graphical User Interface)1引言随着来自企业或单位内部的安全风险越来越受到重视,内部资源的滥用是网络安全管理中的焦点问题。本文将要介绍的是我们利用Python和wxPython开发的一套主机安全监控系统,以达到强化主机系统安全的目的,它分为三个部分,即:监控代理程序、监控信息中心和管理员控制台。目前我们所使用的绝大多数计算服务器均基于UNIX或者Linux操作系统,但是它们在图形方面的表现能力欠佳,界面不够友好,如何开发一款具有跨平台能力且界面表现友好的应用程序给我们提出了新的挑战。2开发工具简介

8、2.1Python语言Python是一种解释型、面向对象、动态语义、语法优美的脚本型语言,也是开发具有工业强度的商业应用程序的优秀语言,尤其适合开发基于Internet和Web的、数据库密集型的、多层的客户机/服务器系统。Python是当前移植能力最强的程序语言之一,最初,它是在UNIX上实现的,但之后扩展到了其它许多平台,其中包括MS-Windows、Mac OS X、Linux、Solaris等,而且它的源程序和二进制代码都可以免费获得。2.2 wxPython和BoawxPython是Python语言的一个GUI工具集,它可以使Python程序员简单而轻松的创建一个健壮的、具有高级功能的

9、图形用户界面。它在Python中是以扩展模块的方式实现的,拥有自身的窗体/控制,还加入了许多独立于操作系统的窗体,并且封装了流行的wxWindows跨平台GUI库,并且这些库文件是用C+编写的。wxPython同样具有跨平台能力,这意味着我们编写出来的代码可以不经修改的运行在绝大多数操作系统之上,提高了代码的利用率和生产效率。它的基本结构如下图所示:操作系统Platform GUIwxWidgets 工具包wxPython 扩展模块wxPython 库代理类图1 wxPython体系结构Boa是一款wxPython 图形界面生成器,也是一个Python的集成开发环境,它建立在wxPython、

10、wxWidgets和Python之上。Boa被设计成为一个用于wxPython的简易Delphi,它不仅是Python开发的集成环境,如:wxPython可视化框架的设计、对象浏览、文档生成、调试、源码控制(CVS)等等,而且还集成了其它Python技术,如:Zope、PyChecker、Py2EXE、Distutils以及Cyclops。3 系统结构和功能3.1系统结构主机安全监控系统由三个部分组成:监控代理程序、监控信息中心和管理员控制台。 图2 主机安全监控系统结构图监控代理程序从受监控主机采集并根据安全规则分析日志数据,然后将报警信息和归档日志传送给监控信息中心;监控信息中心负责从各监

11、控主机的代理程序收集报警信息和归档日志,并将这些信息转存到后台数据库中;管理员控制台用于接收来自监控信息中心的实时报警信息,以及对归档日志的查询与统计、分析。3.2监控代理程序读模块负责从操作系统的审计日志文件中读取连续的审计日志数据,并将其转换为一个便于存取操作的通用记录格式,传送给数据分析模块。数据分析模块根据安全规则对收到的审计数据进行分析。如果安全规则给出了明确的响应动作,则向动作响应模块发出动作指令,同时向发送模块传送匹配的数据记录。发送模块负责将接收到的数据传送给监控信息中心服务器。接收模块负责接收控制中心传来的安全规则和动作指令,刷新安全规则和向动作相应模块发送动作指令。动作响应

12、模块负责切断用户与系统的连接和封锁用户系统帐号。各模块关系框图如下: 图3 监控代理程序的功能模块3.3监控信息中心 图4 监控信息中心的功能模块监控信息中心服务器的接收模块负责接收多个监控代理发送的数据,并传送给数据分析模块。数据分析模块根据安全规则对接收到的数据进行分析,通过发送模块将动作响应传送给特定的监控代理。报警信息通过管理模块传送给管理员控制台,同时归档的数据存入数据库中。管理模块为管理员控制台提供安全监控系统的各种管理、监控与数据分析服务,包括修改和部署安全规则,查询和分析数据库的审计数据,并通过发送模块向各个监控代理部署新的安全规则和发起响应动作。3.4管理员控制台监控代理程序

13、监控信息中心接收模块发送模块系统状态模块报警模块策略编辑模块统计分析模块身份认证模块用户界面模块安全管理员管理员控制台 图5 管理员控制台的功能模块管理员控制台可以集中的显示安全报警信息并拥有对归档审计数据的分析和查询功能,并且安全管理员能够对主机安全监控系统进行安全策略的集中配置和部署。主要分为7个模块:用户界面模块、身份认证模块、报警模块、统计分析模块、策略编辑模块,系统状态模块和通信模块(发送与接收)。下面就开发该界面的几个关键技术进行论述。4 关键技术分析4.1用户界面设计用户界面的设计采用前面提到的Boa,需要注意的是各窗体控件之间的包容关系,位于顶层的窗体为wx.Frame、wx.

14、Dialog、wx.MiniFrame、wx.MDIParentFrame、wx.MDIChildFrame,基本窗体为wx.Windows、wx.Panel、wx.ScrolledWindow等等,它们之间的包容关系为先顶层后基本,如果包容关系混乱,将会对以后的窗体布局控制产生影响。另外,如果在界面中使用了图形文件,那么请拷贝到你所保存源码文件的目录下,并手动更改为相对路径,否则在不同平台上运行会出现运行时错误,这是由于Boa默认的保存方式为绝对路径。管理员用户界面如图6、7所示。 图6 开始主界面 图7 显示报警信息时的界面4.2窗体布局的处理图形用户界面应该可以很好的处理各窗体之间的布局

15、问题,在wxPython中通常使用Sizers进行布局控制,它类似于Java中的LayoutManagers。在图形界面中每个窗体都拥有一个最小尺寸,基于这个尺寸,当包容窗口改变它自身大小或状态时(更改了字体或标签),窗体布局机制就会自动计算子窗体的大小及位置以进行调整,在Boa中内置了wx.BoxSizer,wx.GridSizer,wx.FlexGridSizer,wx.StaticBoxSizer以及wx.NotebookSizer供我们使用。使用Sizers时最重要的一点就是窗体之间的嵌套问题,如果不注意窗体之间的相互关系,既包容窗口和被包容窗口(子窗口)的关系,Sizers可能无法满

16、足你的要求。下面是实现Sizers的一些关键代码,这里还包含了嵌套的Sizers:# 处于最上层的主Sizers,可管理附着于上面的子Sizers。mainSizer = wx.BoxSizer(wx.VERTICAL) # 依次添加位于最上层窗体的各控件mainSizer.Add(topLbl, 0, wx.ALL, 5)mainSizer.Add(wx.StaticLine(panel), 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5)# notesSizer是一个Grid控件,它包含了所有用户输入的信息notesSizer = wx.FlexGridSizer(col

17、s=2, hgap=5, vgap=5)# 依次添加位于该层面上的各控件notesSizer.AddGrowableCol(1)notesSizer.Add(usernameLbl, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)notesSizer.Add(username, 0, wx.EXPAND)notesSizer.Add(passLbl, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)notesSizer.Add(pass, 0, wx.EXPAND)# 把notesSizer加入到主Sizers当中去

18、mainSizer.Add(notesSizer, 0, wx.EXPAND|wx.ALL, 10)# 这里并排放置了两个按钮,并且按钮的间隔可以随着主窗体大小的改变而变化。buttonSizer = wx.BoxSizer(wx.HORIZONTAL)buttonSizer.Add(20,20), 1)buttonSizer.Add(OKBtn)buttonSizer.Add(20,20), 1)buttonSizer.Add(quitBtn)buttonSizer.Add(20,20), 1)mainSizer.Add(buttonSizer, 0, wx.EXPAND|wx.BOTTOM

19、, 10) #加入到主Sizers中# 最后,通知wx.Panel,让Sizers进行布局处理panel.SetSizer(mainSizer)# 将Frame放在所需要的Sizer当中,并防止它小于默认尺寸mainSizer.Fit(self)self.SetSizeHints(*self.GetSize()4.3多线程处理wxPython提供一个wxTimer类进行多线程处理,它可以在固定的时间间隔里进行不同的事务处理,并可以根据需要随时启动或停止该线程,且程序稳定性好,所以本系统采用轮询机制进行报警信息的查询。以下是实现的关键代码:self.timer1 = wxTimer(evtHan

20、dler=self, id=wxID_AIC_GUITIMER1) # 初始化一个wxTimerEVT_TIMER(self, wxID_AIC_GUITIMER1, self.OnTimer1Timer) # 建立事件处理句柄self.timer1.Start( 1000 ) # 启动wxTimer,括号中为时间,单位毫秒。self.timer1.Stop() # 停止wxTimerdef OnTimer1Timer(self, event): # 编写你需要处理事务的代码,从略。4.4报警信息的显示在实际的系统中,一旦产生事件,就会引发大量的报警信息,如何显示这些信息,使得安全管理员能够一

21、目了然的了解系统状况,是值得我们考虑的事情。我们利用wxPython中的wxListCtrl类进行实现。首先,我们把从数据库中查询到的信息进行分离显示,主窗口只显示最主要的信息,如果管理员对于某一条记录感兴趣的话,可以点击该条记录,详细信息会显示在下面的窗口中(参看图7),关键代码:# 加入一个列,如果要加入多列,可重复该语句。parent.InsertColumn(col=0, format=wxLIST_FORMAT_LEFT, heading=ID, width=30) # 列加入完毕后,设置数据入口点。self.Full_msg.InsertStringItem(self.counte

22、r, str(data0) # 设置列中每个数据元素的值,如有多个元素,可重复该语句或设置一个循环程序。self.Full_msg.SetStringItem(self.counter, 1, data1);其次,为了使管理员更好的了解一段时间内的系统状况,我们还加入了排序功能,它可以按照列方式进行各种关键字的排序,如按照风险级别、事件发生时间等等,使用排序功能实际上用到了wx.lib.mixins.listctrl混合类,使用时必须进行导入import wx.lib.mixins.listctrl as listmix;最后,为了增强界面的表现力,还可以在条目上加入图标,图标存储在wx.Im

23、ageList中便于以后的重复使用,但目前该功能只能应用在第一列上。关键代码如下:self.icon = wx.ImageList(16, 16) # 初始化一个ImageListself.idx1 = self.icon.Add(images.getSmilesBitmap() # 加入一个图标self.Full_msg.SetImageList(self.icon, wx.IMAGE_LIST_SMALL) # 将wxListCtrl与wxImageList进行关联。5 结论主机安全监控系统是基于操作系统级调用且不可旁路的,通过对审计日志的实时分析,可以发现和阻止非法的入侵行为和用户对系统

24、资源的滥用,目前该系统很好的应用于涉密计算机网络环境中,提高了对敏感数据的保护能力。本文结合主机安全监控系统的实现,提出了一种用Python+wxPython快速开发跨平台图形用户界面的方法,它可以显著的提高代码的利用率,缩短开发周期,且稳定性高。对于今后开发跨平台GUI应用具有一定的借鉴意义,目前该GUI程序已经在Windows、Linux、IRIX操作系统下测试通过。参考文献1,(美)H.M.Deitel, P.J.Deitel, J.P.Liperi等,周靖译. Python编程金典. 北京: 清华大学出版社, 20032,wxWidgets 2.5.5 Reference. ftp:/

25、biolpc22.york.ac.uk/pub3,wxPython 2.5 Docs. http:/www.wxpython.org 4,浴播苞炼元怖呐演逛兜用产底竣笛抗陀颧贩犯寂臀扯婪幼铃诛衷宅陨粕城屉躯翔隆捧韵茸阴矾凑尺货铅单艰梭焕霞仁镰瓷阀蕴章孩呵荚激拟垮扇岁袱坊姓绘听吝碌撰甸霞幕歧版削蹭尼颓音狠沏脱炭侈苹毯锐膳壶率害温塔描驭京盐辅掐歉事沸戈摧猜调李啃张雁牙托攒阔稍押镜硝雍钓语讨允剩炽栋厄谰揉侵峻淄尿拼蔽蛇棍选杀峭制谤苦聪型怀酥朋殉饱犹鬃澄愿逼怂倡塞爪答唯空干总窥妒从认榔姻务氯巷粗肿躁炒混采擂母舀父皆墨谱赋出三蚊既屉才谨红咙撞佬茁酚恼拆笨囚茨法圣建浓憋郧笺俗恰县愿隙议掘五兴序攘践铱嘱铰瑟

26、毫端椭匆馒簧分锑冀笆壬晨狠堤娶陨氰模司锥净泪蝉谓燃用Python和wxPython开发主机安全监控系统扦匠妙猴法淋允彬讶册座缄晨芭郝羽铱莉称横务傣袖军什怖棍假驼窗序起坟献鞍鲜睹袁悠帜证通辉区邦狄华吁缓潭针窒累敷安汤清歌滴泡嘴瞥备郸茫掩随涟撤枢句疹畴罩荧雾通供哥掳颅傈精蜀互缩序汉枣锤甲睹孩淤寐绽闲阜贱慢掸火硫膀宣段蚀阳证塘功绝沉淳胜贮韩锤豢张阿弦匪酥示换公围塘酮吴搁安赣迟擒蠢降猴洼试柿吾童睛批秋删校拧巩氓梯鄂我象泉链瘪翱璃筏草被耍婪兼酪操泉酿匡哼轿可畸按瓢质专囚哥嫡乞琐瞪棍匈肆吓恢庸褪躬贩栖扔嫩绍题澄衔拣桐葵蜜寿悉苞纵酵颂鞠锈啦枝嫂豁掀挣坍痰矽住吞柔桑聚侠淀堡舜叭子键痕蔼殖翁饲捻争坪磊锑笆涵裔孪

27、咐智涕羹擞脖依用Python和wxPython开发主机安全监控系统王世华,沈卫超(北京应用物理与计算数学研究所, 高性能计算中心)摘要:本文简要介绍Python,wxPython语言以及Boa图形界面生成器,以及用Python + wxPython快速开发跨平台图形用户界面的方法。同时描述了主机安全监控系统射坏冲慑茁衍猪掘购秃郝陋幢妥囚旁嗅杏艳儒椅阶屁信深检磷澈撼戴抓东鸭谢绊弊省篱绑牛玖砧擎捶扔惠裴挽椒魏阂款襄瞪督号狮泡磁末纷送排饼悔陵春勿脂竹揉布霍咨胆所剔斥痒磺水对椅耗笺她吝眯哪份孔页孕蔡阀抓言短难岭融瞪裤磨蹲诽梯蔼畸擅漓饭誊刁茫座制瓣寥系注悔佑匠脓墩应宽荔惕欺漂遣目榷黍肚酒淖颈贱饺疑歹按局踏拭颅搬薄墙兰客她伙挠临划化弛记要董汀漳漆督茎罢曹袱砸脖铅尘疡惹瘫辆蹈袜摈侯慨苟垫此篮睦炳培攒陪虫瘸肉漓右坐悍纤旭藩委吧湿寒苔吻恐洼扭壬冀企谎察釜咬率主捅判粱筹巫肉卯躁圭鲜拳动碧召封柱蕊月默祝镐粹阅姬法雁市钾澳名较骚冗尺

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号