《基于Python的漏洞扫描系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Python的漏洞扫描系统的设计与实现.docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘 要随着互联网不断发展、贴近生活,电子化的生活安全依赖着网络安全。在漏洞泛滥的今天,网络安全状态不容乐观,许多机构都因没有及时处理漏洞导致被恶意入侵,若网络安全保护不当,将会影响现实安全。中小型网络运维人员常因为外部因素影响难以开展网络安全行动。为了应对这一问题,本文研究尝试用Python语言尝试做一个集成漏洞扫描系统的设计与实现。运用以Python为基础的Django Web框架实现快速的业务开发,运用Docker的轻量级虚拟化集成Nmap安全工具为方案验证手段,构建一个B/S架构模式,面向初级运维人员、初级网络安全研究者的低学习成本漏洞扫描系统平台,方便他们的工作需要。关键词:Pytho
2、n;Django;Docker;漏洞扫描;系统集成;网络安全;轻量级Abstract With the continuous development of the Internet and its closeness to life, the safety of electronic life depends on network security. In todays flood of vulnerabilities, the state of network security is not optimistic. Many organizations have been malicious
3、ly invaded due to failure to deal with vulnerabilities in time. If the network security is not properly protected, it will affect actual security. middle and small network operators often find it difficult to carry out cybersecurity operations due to external factors. In order to deal with this prob
4、lem, this paper attempts to use Python programming language to try to design and implement an integrated vulnerability scanning system. Django is a high-level Python Web framework to rapid development, and use Dockers lightweight virtualization integration Nmap security tool as a means of program ve
5、rification to build a B / S architecture model for junior operations and maintenance personnel, junior network security research The low learning cost vulnerability scanning system platform of the authors is convenient for their work needs.Key words: Python;Django;Docker;Vulnerability Scanning;Syste
6、m Integration;Cybersecurity;Lightweight目 录第一章 绪论11.1 课题背景和意义11.2 程序漏洞11.2.1程序漏洞的定义11.2.2程序漏洞的特点及分类11.3 国内外漏洞危害现状21.3.1 国外危害现状21.3.2 国内危害现状21.4 主要工作31.5 章节安排3第二章 系统实现使用的技术简介52.1 Python52.2 Django52.3 Docker52.4 Nmap52.5 本章小结6第三章 系统的分析与设计73.1 需求分析73.2 系统设计73.2.1 系统总体概述73.3.2 系统逻辑架构83.3 系统功能模块设计93.3.1
7、用户认证模块93.3.2 用户信息管理模块103.3.3 漏洞扫描模块113.3.4 日志文章模块113.3.5 权限管理模块123.4 数据库设计123.4.1 数据表字段123.4.2 数据表与系统的关系123.5 版本使用143.6 本章小结15第四章 系统的具体实现164.1系统开发环境164.2 Django框架初始配置164.3 通用视图174.4 用户认证模块184.5 用户信息管理模块214.6 漏洞扫描模块234.7 日志文章模块254.8 权限管理模块294.9 本章小结29第五章 系统测试305.1 测试环境305.2 测试环境搭建305.3 测试内容和结果315.3.1
8、 用户认证模块测试315.3.2 用户信息管理模块测试315.3.3 漏洞扫描模块测试325.3.4 日志文章模块测试325.3.5 权限管理模块测试335.4 本章小结33第六章 总结与展望346.1 工作总结346.2 展望34参 考 文 献36致 谢37广东东软学院本科生毕业设计(论文)第一章 绪论1.1 课题背景和意义随着互联网高速发展,国内涌现许多互联网企业,这些互联网企业用互联网的相关技术颠覆了许多传统行业,在创造了商业奇迹的同时也改变着人们传统的生活方式,最终我们步入了“互联网时代”。但是在步入“互联网时代”的同时,我们日常生活与互联网的关系就变得更加复杂,耦合程度更加高,因为网
9、络安全可以影响到现实生活的生命安全、主权安全、国家安全,因此国家出台了中华人民共和国网络安全法,和配套相关国家标准,目前最新的标准版本是信息安全技术网络安全等级保护基本要求(GB/T 22239-2019),俗称“等保2.0” 1。为了符合相关法律法规的要求和保护网络设施不受木马病毒的非法入侵,催生了许多检测系统漏洞、弱点的业务需求。轻量级、简单、易上手、扩展性强的漏洞扫描系统能大大提高运维人员和相关行业工作者自测或者服务的工作效率2。1.2 程序漏洞1.2.1 程序漏洞的定义程序漏洞从狭义上来讲是程序编写者在编写代码的时候因为自身技术水平有限、疏忽大意、完成软件工程周期有限需要加班加点赶制等
10、各种人为因素造成的程序本身缺陷。而从广义上来讲,程序漏洞的造成除了是上述软件编写者的责任外,还包括设计规划人员、在研发周期内处理技术架构、业务逻辑上的失误造成的业务逻辑漏洞、底层技术框架漏洞等3。1.2.2 程序漏洞的特点及分类软件漏洞的特点是:“它的个体可以被消灭或者规避,但是他的存在是不可以被消灭。”一般经验丰富的程序员在程序编写时注意编写方法的使用,来规避常见的漏洞触发条件的产生。但是尽管如此,上到应用层的Web软件系统,下到硬件层的CPU指令集,依然存在着各种漏洞。常见的程序漏洞可以分为以下几类:(1)从层次上可分为:硬件漏洞、通信协议漏洞、软件漏洞;(2)从利用位置上可分为:本地漏洞
11、、远程漏洞;(3)从原理上可分为:数据溢出、绕过验证、语法注入、文件包含、业务逻辑设计缺陷;(4)从危害上可分为:硬件损害、越权控制、拒绝服务、非法获取数据、软件功能篡改等4。1.3 国内外漏洞危害现状1.3.1 国外危害现状国外著名半导体CPU制造商英特尔(Intel)旗下的产品在2018年被Google Project Zero团队挖掘出熔断(meltdown)漏洞、幽灵(spectre)漏洞,英特尔自己的研究团队也公布了一个基于推测执行侧信道攻击的变种漏洞,并命名为预兆(LITE,L1 terminal fault),又称 foreshadow,其中熔断漏洞几乎涉及了自1995年以来采用
12、该相关技术的英特尔处理器,之后的幽灵漏洞的影响范围甚至是所有现代CPU,包括英特尔、AMD、ARM5。其中部分漏洞更是无法得到完美修复,打上漏洞补丁后会使得CPU计算性能下降。美国国家安全局(NSA)的黑客武器库被某个黑客集团公布到网上,其中杀伤力巨大的“永恒之蓝(EternalBlue)”漏洞被不法分子利用,制作成了一款名为“Wannacry”的比特币勒索病毒,通过互联网和局域网双重途径极速传播,瞬间该病毒席卷全球,上到各大政府部门机构,下到校园网内的个人电脑,世界各个角落只要有安装了Windows 7及以下的操作系统的电脑都有机会被感染。许多机构不得不支付巨额的赎金解锁文件,直到某位安全研
13、究人员溯源到了病毒服务器的“自爆开关”,最终事件才告一段落。1.3.2 国内危害现状如同一小节所述,“Wannacry”也不可避免在我国互联网环境内肆虐横行。包括各大高校局域网、政府机构、工厂工控系统在内,甚至加油站自动操作终端在内的机器,只要开启了SMB相关端口的机器,都被感染上了病毒。尽管国家互联网应急中心紧急印发了相关的预警文件,各大安全厂商连同客户单位连夜加急排查风险、加固系统,也造成了不少的国民财富损失。根据国家互联网应急中心的2019年上半年的网络安全态势报告显示:就涉及民生重要基础设施的方面而言,水电行业中暴露的139个监控管理系统,医疗健康709个数据管理系统,存在高危漏洞隐患
14、的占比是25%和75%,互联网金融网站存在的高危漏洞仅上半年就有92个 6。我国互联网行业十分发达,在“人人上云”的时代,一般企业服务提供商架设网站的漏洞隐患更是巨大,“上云时代”的数据安全面临的挑战依然严峻。1.4 主要工作在漏洞泛滥的今天,互联网安全倍受挑战。只有合理配置设备,关掉不必要的端口和服务,及时了解最新安全动态,打好漏洞补丁加固系统,才能最大限度的减少因漏洞隐患而造成被黑客非法入侵而造成的不必要损失。本人在论文中主要的研究工作:(1) 收集最近几年的国内外因漏洞引起的重大安全事件,分析漏洞对系统乃至现实生活的危害,对项目的侧重方向做出一个初步方向指定。(2) 以中小型网络运维人员
15、和网络安全研究爱好者为主,结合国内该行业的变化特点,以“易部署、轻量化、低学习成本、可扩展”为特点尝试设计与开发工作。设计包含基础的用户模块、日志问题模块和扫描模块。(3) 采用B/S架构,选用Django作为Web框架载体,实现了快捷开发、数据库持久化处理。(4) 结合网络上一些优秀的开源插件,增强项目的功能便利强度和观感。(5) 对项目进行功能测试,确保实现的功能可实行,项目达到预期效果。1.5 章节安排本文围绕漏洞的危害,说明及时检测并修复的重要性,因而设计与实现出一种基于python的漏洞扫描系统。文章一共分为五个章节,每个章节的主要内容如下:第一章首先介绍了漏洞检测的研究背景和意义,
16、程序漏洞的基本概念、程序漏洞的特点和分类,并分析了国内外漏洞危害的情况,最后给出了文章的章节安排。第二章介绍了实现中使用的一些关键技术,包括Python语言、Django Web框架、Docker技术、Nmap网络扫描器。第三章介绍了系统的需求分析与设计,包括各个模块的功能、业务流程的设计、关键数据库的设计。第四章介绍了系统的实现重点细节,包括各个模块(app)功能的具体实现、使用Docker集成Nmap的方法、Docker容器与前台的通信等;第五章对实现的系统进行测试与验证。简单介绍了测试环境的要求,包括靶机的搭建和配置,以及执行相关模块的功能验证实现功能的程度。第六章对本文的研究内容进行总
17、结,在不足的地方尝试提出一些优化方案对今后的研究工作与方向进行了展望。4第二章 系统实现使用的技术简介2.1 PythonPython是现在十分流行的解释型脚本语言之一。其实Python已经在很早就创立了,但是随着近年机器学习、人工智能等技术的创新突破和飞速发展,还有电子化办公的普及,越来越多人使用Python进行编程作业,Python甚至进入了中小学课堂。所以现在的Python生态异常丰富,加上Python有一个庞大开源库,其中的Hack库更是集合了许多网络安全方面高频率使用、性能优异的代码片段,开发者只需导入即可快速使用,不用重复编写,大大的增加了开发效率,Python底层使用C语言编写,
18、在运行效率和可移植性也有良好保证7。2.2 DjangoDjango是一款优秀的Python Web框架。他采用标准的模型视图控制器(MVC)设计模式,内部集成了大量Web开发人员在开发Web系统时高频次使用的功能模块和对象关系映射(ORM),目标是让使用Django的开发人员能用最少时间做出最好的系统。2.3 DockerDocker是一种较新型的轻量化虚拟引擎,它基于Linux的内核虚拟化技术(LXC),Docker的运行原理可以简单总结为“把应用承载在容器上运行”。开发人员只需把应用和依赖包一起打包成镜像,之后可以分发到远程仓库上,其他安装了Docker服务的机器很容易就能拉取下来并部署
19、使用。这种虚拟化是一种轻量级的虚拟化技术,用作隔离进程和资源。得益于LXC,它相比于常见的基于VMware、Xen、KVM的虚拟化能节省很多硬件资源。 2.4 NmapNmap是一款强大的开源计算机网络安全扫描器。它的功能包括主机探测、端口扫描、服务版本、操作系统版本扫描,能通过构造特定的探针和数据库结合,快速的进行扫描识别,列举指定网络主机存活情况,检测其中运行的服务端口,甚至拥有一定隐蔽特性来尝试躲避防火墙的审计,借此还能用于检测防火墙规则配置的有效性8。2.5 本章小结本章对系统中所涉及的几项重要技术进行了简要概述,包括Python、Django、Docker、Nmap,进而为下文的基于
20、Python的漏洞扫描系统的设计与实现研究做了铺垫。38第三章 系统的分析与设计3.1 需求分析本系统的目标用户是初级运维人员以及网络安全入门研究者。作为一个中小型网络运维人员的工作环境,网络规模较小,维护经费主要花费在硬件的购置、易耗件的补充上,加上国内网络安全观念的缺失,领导给他们配发的首要任务是保证网络能正常访问,网络安全并不在首位。所以并没有太多的经费花费在购置新型安全防护的硬件设备、大型知名安全公司的网络审查平台,但是在利用漏洞弱点进行网络攻击门槛甚低的今天,完全忽略安全问题并不现实,现实强迫运维人员只能手动或者半自动地使用一些网络上流行的、免费的、开源的安全检测软件。而这些软件基本
21、都依赖一定的环境(如Python2.7、某个Linux发行版)和一定的安全知识基础。即他们需要一款集合一下特点的漏洞扫描系统:(1) 学习成本低:不需要填入太多的复杂参数指令,简单几个参数即可运行;(2) 界面友好:支持图形界面,简单交互即可执行;(3) 轻量级:系统占用资源少,没有太多需要掌握高级开发、安全技术才能开发、使用的特性;(4) 易部署:不需要手动编译、安装,最好能一个批处理或者一个命令行指令,即可部署;(5) 可扩展:能跟着运维人员技术的提高,能逐步加入适应个体网络需求的功能。3.2 系统设计3.2.1 系统总体概述系统总体设计按照软件工程的典范设计MVC模式。这样的很大程度降低
22、系统整体的耦合程度。把前后端进行分离开发,后端采用了Django轻量级的Web框架,它完全遵从MVC设计模式(在Django中进行了优化并命名为“MTV”)9,集成了对象关系映射,把业务逻辑层中有关数据代码解离出来,成为一个独立的持久化层,实现了对象模型和关系数据模型之间的映射关系,开发人员在编码过程可以直接进行面向对象编程,而不需要嵌套SQL语句在代码中10。在数据库方面,本文选用了国内环境比较流行的MySQL进行存储。得益于Django框架的灵活便利,即便因为其他原因不能使用MySQL进行部署,需要更换为PostgreSQL等其他数据库,只需要在Django相关配置下更改数据库连接配置,并
23、用自带的数据模型控制语句,即可简单变化,使本系统与数据库类型的耦合程度很好的降低。本系统的整体功能结构如图3-1所示,分为了五大模块:用户认证模块、用户信息管理模块、漏洞扫描模块、日志文章模块、权限管理模块。图3-1 系统整体功能架构3.3.2 系统逻辑架构本系统平台采用B/S端架构设计,方便使用者随时随地地在安全的情况下从任意电脑访问系统平台进行使用。如图3-2所示:用户只需要通过浏览器登陆Web系统前台,对Web图形界面的功能进行操作,操作请求就会通过网络(局域网、互联网均可)传到后端服务器Tomcat中间件上的部署Django后台的业务系统,根据不同的业务需要,运行不同的功能11。若是与
24、业务数据有关的,将会通过ORM与数据库进行通信,若是进行漏洞扫描的将会与Docker服务器上承载的相关功能的容器进行通信,根据请求,通过在容器内运行扫描程序,对目标主机进行扫描,然后将扫描结果回传,后台再通过Ajax技术将结果在Web前端页面进行呈现。图3-2系统逻辑架构3.3 系统功能模块设计 3.3.1 用户认证模块用户认证模块是对系统使用者进行鉴权认证的基本模块。对已授权的用户的进行帐号信息注册、对已拥有帐号的用户进行登陆认证,进入系统使用帐号权限范围内的业务。如图3-3所示,具体流程描述为:(1) 访问者首先进入登录界面,根据帐号的有无进行登录、注册操作;(2) 若访问者拥有帐号,输入
25、正确则直接进入系统主页,输入错误则回跳登录页面重新登录或者放弃登录;(3) 若访问者没有帐号,则跳转进入注册界面进行账号注册,注册成功则跳转到登陆界面,注册失败则回跳注册页面重新注册或者放弃注册。图3-3 用户认证流程3.3.2 用户信息管理模块用户信息管理模块是用户对个人信息进行维护修改的模块。它需要包括用户能对帐号自身的邮箱、联系电话、职位、个人简介、帐号头像、密码的修改功能权限,设计流程图见图3-4。(1) 用户进入信息管理能看见帐号当前的信息列表;(2) 若是需要修改的情况,在点击列表页进入修改界面;(3) 修改完成后返回信息列表页,确认信息的修改。图3-4 用户信息管理流程3.3.3
26、 漏洞扫描模块漏洞扫描模块的流程如图3-5所示:(1) 用户在前台打开指定功能模块页面,输入目标参数;(2) 后台响应前台的请求,与Docker容器服务器通信,并把从前台获取的目标参数发送到Docker服务器执行操作;(3) Docker容器内的模块把操作结果保存到数据库里,并回传到前台显示。图3-5 漏洞扫描基本流程3.3.4 日志文章模块日志文章模块是用户在进行记录的功能模块。用户能使用它简单方便地记录工作内容、漏洞弱点线索、最新的漏洞修复方法、运维心得等。所以要有一个分类属性能对这些日志进行分门别类进行管理,并需要可以随时改变日志文章的内容、分类,日志内容输入需要支持富文本编辑,方便记录
27、含有多媒体的内容。模块架构包括分类、日志文章、所有文章三大功能,如图3-6所示:(1) 用户能对分类进行增、删、查、改;(2) 用户能对文章进行增、删、查、改,包括文章是否公开,栏目的变更;(3) 用户能查看其他用户公开的日志文章。图3-6 日志文章模块架构3.3.5 权限管理模块权限管理模块是管理其余模块数据、访问权限的功能。需要拥有一个特殊的超级管理员帐号。超级管理员需要拥有以下操作功能:(1) 普通用户、普通组的访问权限管理,包括某组、某用户对各模块的具体功能的允许、禁止访问;(2) 用户与用户组之间的归属关系管理,包括用户归属于哪个用户组;(3) 用户和用户组的增删改查;(4) 其他功
28、能模块数据的增删改查。3.4 数据库设计 3.4.1 数据表字段根据上述各模块的功能流程规划,具体设计了以下的数据表(已忽略部分Django Web框架自动生成的表):(1)auth_user:用户基础表,用于存放用户的基本信息,其中密码的存放采用了Django默认的PBKDF2算法加密保存12。表3-1 用户基础表字段名数据类型长度是否可空键引用字段含义idint11否主键IDpasswordvarchar128否用户密码last_logindatetime6是最后登录时间is_superusertinyint1否是否为超级帐号usernamevarchar150否用户名first_name
29、varchar30否名字last_namevarchar150否姓氏(2)account_userinfo:用户信息补充表,用于存放用户的个人信息资料。表3-2 用户信息补充表字段名数据类型长度是否可空键引用字段含义idint11否主键IDprofessionvarchar100是职位aboutmelongtext0是个人简述photovarchar100否头像phonevarchar20是联系手机user_idint11否外键关联用户ID(3)article_articlecolumn:文章分类表,用于存放用户设置的文章类别。表3-3 文章分类表字段名数据类型长度是否可空键引用字段含义idi
30、nt11否主键IDcolumnvarchar200否职位createddate0否个人简述user_idint11否外键关联用户ID(4)article_articlepost:日志文章表,用于存放用户编写的文章。表3-4 日志文章表字段名数据类型长度是否可空键引用字段含义idint11否主键IDtitlevarchar200否文章标题slugvarchar400否标题全拼bodylongtext0否文章内容createddatetime6否创建时间updateddatetime6否更新时间author_idint11否外键关联作者ID(5) article_articlepost_users
31、_like:文章点赞表,用于存放用户点赞其他用户发表的文章之记录。表3-5 文章点赞表字段名数据类型长度是否可空键引用字段含义idint11否主键IDarticlepost_idint11否外键关联文章IDuser_idint11否外键关联用户ID(6)scanner_scannerdata:扫描记录表,用于存放用户的扫描操作记录。表3-6 扫描记录表字段名数据类型长度是否可空键引用字段含义idint11否主键IDsource_addresschar39否扫描发起IPtarget_addresschar39否扫描目标IPtoolvarchar200否扫描工具typevarchar200否具体功
32、能timevarchar6否扫描时间resultlongtext0否扫描结果3.4.2 数据表与系统的关系(1)auth_user表主要用于用户认证模块、用户个人信息模块的信息处理上。包括注册的创建数据、登录的验证数据,姓氏名字以及绑定邮箱则会用在个人信息上。(2)account_userinfo表主要用于用户个人信息模块的信息处理上。作为对个人信息所需字段在auth_user缺少的补足,包括承载了用户个人简介、头像、职位、联系电话。(3)article_articlecolumn、article_articlepost、article_articlepost_users_like三张表主要用
33、于日志文章模块的信息处理上。它们分别管理分类、文章、文章被点赞的情况,文章要从属于某个分类下、点赞属于某些用户对其他用户的文章进行的行为,这些都要利用外键将这些业务上的行为在数据上关联对应起来。(4)scanner_scannerdata表主要用于漏洞扫描模块的信息处理上。表中字段详细记录了扫描操作人、操作时登录的IP地址、扫描对象的IP地址、扫描时间、使用的工具功能以及扫描结果13,这样能方便日后编写运维需要时翻看历史或者安全合法合规性审查时候调取使用。3.5 版本使用为了系统平台在开发时能够切实可行,保证系统的可行性,经过资料收集和初步验证,系统平台将主要使用以下版本的软件进行开发,见表3
34、-7。表3-7 软件版本软件版本Python3.7Django2.2.1PyMySQL0.9.3Jquery1.11Editor.md1.5LayUI2.5.6MySQL5.7.263.6 本章小结本章主要对系统的各个模块面向需求对象进行了分析,并且梳理了系统的总体架构、业务流程架构,对各个模块功能进行详细功能设计,并确定了系统平台使用软件的版本,以便为系统的详细实现方法设计规划好一个蓝图,方便下面代码的具体实现。第四章 系统的具体实现4.1系统开发环境作为一款优秀的Web框架,Django有高效的开发特性,在“开发模式”下自带轻量级一个服务器,代码修改支持热部署,无须搭建配置Nginx、Ap
35、ache亦可以运行。在开发阶段,本文将使用虚拟机代替远程服务器进行功能实现和验证,下表4-1罗列了配套的开发环境。表4-1 系统开发环境类型软件版本操作系统Windows 10集成开发环境Pycharm 2019.3.4数据库管理Navicat 12虚拟机VMware Workstation 15模拟终端MobaXterm浏览器Firefox 754.2 Django框架初始配置本系统的实现将使用PyCharm作为集成环境开发环境。PyCharm具有图形界面的包管理系统,能够轻松管理Python项目中所需要的库,更是支持市面上流行的Python Web框架。(1)首先在Pycharm内的任务栏
36、选择“新建项目”并命名,即可完成一个Django的项目创建。当然这个操作也可以在python终端中使用“django-admin startproject”指令完成。(2)紧接着配置Django的框架环境文件setting.py,包括配置对应的系统语言(LANGUAGE_CODE)、时区(TIME_ZONE)、数据库(DATABASES)如图4-1,其中使用Python3连接MySql数据库需要项目导入PyMySQL库。(3)配置静态资源,在工程目录下创建一个static目录用于存放系统需要的静态文件如CSS、JS,以及一些配合系统使用的插件如下文提及的LayUI、Markdown编辑器等。图
37、4-1 数据库连接设置4.3 通用视图为了把更多的精力放在业务的实现上,本系统将采用先设定通用视图模板,再根据业务需要继承并增添控件的解决方法应对前端的交互,并使用前端框架LayUI进行美化,和减少代码冗余。(1) 首先新建四个基础HTML模板文件base、header、footer、paginator,分别作为基础页、头部、尾部、页码,并编写头部、尾部、页码;(2) 编写基础页,在相应部分插入头部、尾部(页码暂时不插入留作下文备用),见图4-2;(3) 继承模板编写首页home.html,核心代码见图4-3,效果见图4-4。图4-2 base.html核心代码图4-3 home.html核心
38、代码图4-4 home.html效果4.4 用户认证模块用户认证模块包含用户的注册、登录、退出功能。在Django中功能将以应用(App)的概念存在14。(1) 首先要在终端调用指令“python3 manage.py startapp account”创建用户模块。随即在框架环境文件setting.py中的INSTALLED_APPS内追加应用名称,把模块注册到框架里。(2) 以请求类型作为区分,根据图4-5的响应流程,编写注册、登录的视图函数,获取前台数据进行处理,核心代码见图4-6。(3) 配置URL映射,在应用中新建urls.py文件并设置前台视图对应函数,见图4-7,再配置项目下的u
39、rls.py文件对视图对应函数设置管理分发到应用下的urls.py上,见图4-8。图4-5 登录响应流程图4-6 注册、登录功能核心代码图4-7 应用下的urls.py配置图4-8项目下的urls.py配置4.5 用户信息管理模块用户信息包括邮箱、联系电话、职位、个人简介、头像、密码。因为上一小节使用的User数据模型对象为Django框架自动生成,需要新增数据模型必须在对应应用下的model.py文件下追加,完成后重新迁移数据模型,之前再编写后台业务代码与前台HTML样式。(1) 新增与User关联的用户信息数据模型,代码见图4-9;(2) 使用manage.py的“makemigratio
40、ns”、“migrate”指令完成模型迁移;(3) 根据业务设置,编写个人信息查看、个人信息修改的前后台代码。前台效果如图4-10,后台核心代码如图4-11。因新用户注册并没有补全全部的个人信息和头像,所以要注意在后台获取个人信息的时候要判断该用户的信息是否有存在于account_userinfo表,没有的话要先进行创建,避免ORM层获取数据创立对象关系映射时报错。在前台显示上若用户无上传头像将使用默认头像进行替代显示;(4) 部署ImgCrop图片上传裁剪插件到项目中,使用LayUI前端框架插件整合到个人信息页面,效果见图4-12;(5) 修改密码功能使用了django.contrib.au
41、th内置的修改密码视图函数,简单编写好前台HTML输入框后,在应用下的url.py下把请求指向内置函数即可,关键代码见图4-13;图4-9 UserInfo数据模型图4-10 个人信息页面布局图4-11 个人信息后台视图核心代码图4-12 上传图片插件效果图4-13 修改密码URL配置代码4.6 漏洞扫描模块漏洞扫描模块本文将以集成Nmap作为案例,通过Django后端远程调用Docker镜像生成容器,确保每次使用都是在纯净的环境下运行扫描功能15。(1) 首先新建数据模型ScannerData。用来记录操作结果,以便日后审计使用,模型代码见图4-14;(2) 紧接着编写前台HTML文件。仍然
42、是基于继承模板的编写,并使用侧边栏管理系统集成的功能插件,前台布局见图4-15;(3) 处理后台视图代码核心功能见图4-16;(4) 其中,在通信上使用了paramiko库插件编写一个exec函数用于使用SSH协议连接Docker服务器传输指令,调用函数exec见图4-17。图4-14 ScannerData数据模型图4-15 漏洞扫描模块前台布局图4-16 漏洞扫描后台部分核心代码图4-17 exec函数设计4.7 日志文章模块日志文章模块用于用户记录分享内部运维工作中的遇到的问题、学习掌握的技术,这些日志文章多半包含图片代码,所以我们采用了支持时下流行的Markdown标记语言的编辑器Ed
43、itor.md代替传统的textarea文本栏进行Markdown文本输入和数据呈现。(1) 首先分别编写栏目和日志文章的数据模型ArticleColumn、ArticlePost,并进行模型构建,代码见图4-18;(2) 导入Editor.md插件,利用基础模板设计日志发布页、日志正文页、分类列表页,日志列表页,页面效果见图4-19、4-20、4-21,其中列表类的页面插入使用了上文准备的分页模板paginator.html;(3) 接着编写“所有日志栏目”,可以查看其他用户公开分享的日志文章,并且实现点赞互动,效果见图4-22;(4) 增加一个侧栏tablist.html作为功能快捷导航,
44、效果见图4-23;(5) 最后编写相关后台视图函数,包括栏目和日志文章数据的增删改查、分享文章的查看,部分核心代码见图4-24。图4-18 日志文章模块数据模型图4-19 日志发表页效果图4-20 日志正文页效果图4-21 分类列表页效果图4-22 其他用户文章互动页效果图4-23 侧部导航栏效果图4-24 部分后台核心代码4.8 权限管理模块作为使用Django Web框架开发的一个轻量级的扫描系统平台,为了减少重复编码,在后台权限管理上提倡使用Django自带权限管理模块进行处理。(1) 首先使用manage.py createsuperuser指令激活该模块并创建超级管理员帐号;(2)
45、接着在把项目下需要管理的模块(App)自身工程目录下admin.py上进行注册如图4-25,此后相关的模块功能就可以在“http:/项目地址/admin/”下进行权限管理,包括业务数据、用户组、角色权限的增删查改都可以轻松完成。图4-25 日志文章模块注册核心代码4.9 本章小结本章主要对系统的用户认证模块、用户信息管理模块、漏洞扫描模块、日志文章模块、后台管理模块在具体编程方法的实现进行了详细的介绍,包括模块数据模型的建立、前台布局的设计、后台视图处理、插件工具的使用。第五章 系统测试5.1 测试环境系统平台功能涉及到扫描一个完整的网络上的主机设备,由于实验设备有限,测试将使用VMware虚拟机环境模拟真实网络结构以及网络上的主机,其中Docker服务和本系统平台将部署在同一个虚拟服务器内。5.2 测试环境搭建通过VMware虚拟三台服务器主机以及一个内部网络。其一部署Windows 2003 Server作为靶机,安装常见的服务环境模拟一般服务器,安装服务