摘 要
随着互联网不断发展、贴近生活,电子化的生活安全依赖着网络安全。在漏洞泛滥的今天,网络安全状态不容乐观,许多机构都因没有及时处理漏洞导致被恶意入侵,若网络安全保护不当,将会影响现实安全。中小型网络运维人员常因为外部因素影响难以开展网络安全行动。为了应对这一问题,本文研究尝试用Python语言尝试做一个集成漏洞扫描系统的设计与实现。运用以Python为基础的Django Web框架实现快速的业务开发,运用Docker的轻量级虚拟化集成Nmap安全工具为方案验证手段,构建一个B/S架构模式,面向初级运维人员、初级网络安全研究者的低学习成本漏洞扫描系统平台,方便他们的工作需要。
关键词:Python;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 today's flood of vulnerabilities, the state of network security is not optimistic. Many organizations have been maliciously 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 problem, 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 Docker's lightweight virtualization integration Nmap security tool as a means of program verification 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;System Integration;Cybersecurity;Lightweight
目 录
第一章 绪论
1.1 研究背景及意义
1.1.1研究背景
1.1.2研究意义
1.2 国内外研究现状
1.2.1 国外现状
1.2.2 国内现状
1.3 研究目的
1.4 研究内容
1.5 章节安排
第二章 系统实现使用的技术简介
2.1 Python
2.2 Django
2.3 Docker
2.4 Nmap
2.5 本章小结
第三章 系统的分析与设计
3.1 需求分析
3.2 系统设计
3.2.1 系统总体概述
3.3.2 系统逻辑架构
3.3 系统功能模块设计
3.3.1 用户认证模块
3.3.2 用户信息管理模块
3.3.3 漏洞扫描模块
3.3.4 日志文章模块
3.3.5 权限管理模块
3.4 数据库设计
3.4.1 数据表字段
3.4.2 数据表与系统的关系
3.5 版本使用
3.6 本章小结
第四章 系统的具体实现
4.1系统开发环境
4.2 Django框架初始配置
4.3 通用视图
4.4 用户认证模块
4.5 用户信息管理模块
4.6 漏洞扫描模块
4.7 日志文章模块
4.8 权限管理模块
4.9 本章小结
第五章 系统测试
5.1 测试环境
5.2 测试环境搭建
5.3 测试内容和结果
5.3.1 用户认证模块测试
5.3.2 用户信息管理模块测试
5.3.3 漏洞扫描模块测试
5.3.4 日志文章模块测试
5.3.5 权限管理模块测试
5.4 本章小结
第六章 总结与展望
6.1 工作总结
6.2 展望
参 考 文 献
致 谢
第一章 绪论
1.1 研究背景及意义
随着互联网高速发展,国内涌现许多互联网企业,这些互联网企业用互联网的相关技术颠覆了许多传统行业,在创造了商业奇迹的同时也改变着人们传统的生活方式,最终我们步入了“互联网时代”。但是在步入“互联网时代”的同时,我们日常生活与互联网的关系就变得更加复杂,耦合程度更加高,因为网络安全可以影响到现实生活的生命安全、主权安全、国家安全,因此国家出台了《中华人民共和国网络安全法》,和配套相关国家标准,目前最新的标准版本是《信息安全技术网络安全等级保护基本要求》(GB/T 22239-2019),俗称“等保2.0” [1]。为了符合相关法律法规的要求和保护网络设施不受木马病毒的非法入侵,催生了许多检测系统漏洞、弱点的业务需求。轻量级、简单、易上手、扩展性强的漏洞扫描系统能大大提高运维人员和相关行业工作者自测或者服务的工作效率[2]。
1.1.1 研究背景
随着信息技术的快速发展,网络已经成为人们生活和工作中不可或缺的一部分。然而,随着网络应用的普及,网络安全问题也日益突出。网络漏洞扫描作为网络安全防御的重要手段之一,越来越受到人们的关注。
在过去的几年中,许多组织和企业都面临着网络攻击和数据泄露的问题。这些攻击通常是由于网络漏洞导致的,而解决这些漏洞的关键在于及时发现和修复它们。因此,网络漏洞扫描系统的设计和实现变得尤为重要。
Python作为一种高级编程语言,具有易学易用、跨平台性、丰富的第三方库等优点,因此在网络安全领域中得到了广泛应用。许多网络漏洞扫描工具都是使用Python开发的,如Nmap、Scapy等。
1.1.2 研究意义
网络漏洞扫描系统的设计与实现对网络安全具有重要意义。首先,它可以提高网络安全性,通过发现和修复漏洞,减少网络攻击的风险。其次,它可以提高组织或企业的数据安全性,防止数据泄露和损失。此外,网络漏洞扫描系统还可以提高组织或企业的声誉和信誉,证明其网络安全管理和防御能力。
具体来说,网络漏洞扫描系统可以完成以下任务:
(1)发现网络中的潜在漏洞,包括系统漏洞、应用程序漏洞等。
(2)对漏洞进行分类和评估,确定漏洞的严重程度和影响范围。
(3)提供修复建议和解决方案,帮助组织或企业及时修复漏洞。
(4)生成报告和分析数据,为组织或企业的网络安全决策提供依据。
总之,基于Python的网络漏洞扫描系统的设计与实现具有重要的研究意义和应用价值。它可以提高组织或企业的网络安全防御能力,保护数据安全和隐私,为信息社会的安全和发展做出贡献。
1.2 国内外研究现状
1.2.1 国外现状
国外著名半导体CPU制造商英特尔(Intel)旗下的产品在2018年被Google Project Zero团队挖掘出熔断(meltdown)漏洞、幽灵(spectre)漏洞,英特尔自己的研究团队也公布了一个基于推测执行侧信道攻击的变种漏洞,并命名为预兆(LITE,L1 terminal fault),又称 foreshadow,其中熔断漏洞几乎涉及了自1995年以来采用该相关技术的英特尔处理器,之后的幽灵漏洞的影响范围甚至是所有现代CPU,包括英特尔、AMD、ARM[5]。其中部分漏洞更是无法得到完美修复,打上漏洞补丁后会使得CPU计算性能下降。
美国国家安全局(NSA)的黑客武器库被某个黑客集团公布到网上,其中杀伤力巨大的“永恒之蓝(EternalBlue)”漏洞被不法分子利用,制作成了一款名为“Wannacry”的比特币勒索病毒,通过互联网和局域网双重途径极速传播,瞬间该病毒席卷全球,上到各大政府部门机构,下到校园网内的个人电脑,世界各个角落只要有安装了Windows 7及以下的操作系统的电脑都有机会被感染。许多机构不得不支付巨额的赎金解锁文件,直到某位安全研究人员溯源到了病毒服务器的“自爆开关”,最终事件才告一段落。
在国外,基于Python的网络漏洞扫描系统的研究已经得到了广泛的关注和应用。许多知名的网络安全公司和组织都投入了大量的人力和物力进行相关研究。
目前,国外的研究主要集中在以下几个方面:
(1)智能化漏洞扫描:利用人工智能和机器学习等技术,实现自动化和智能化的漏洞扫描,提高扫描的准确性和效率。
(2)云端漏洞扫描:将漏洞扫描系统部署在云端,实现大规模网络的快速扫描和实时监控。
(3)漏洞共享平台:建立漏洞共享平台,鼓励企业和个人提交漏洞,提高网络安全整体水平。
1.2.2 国内现状
根据国家互联网应急中心的2019年上半年的网络安全态势报告显示:就涉及民生重要基础设施的方面而言,水电行业中暴露的139个监控管理系统,医疗健康709个数据管理系统,存在高危漏洞隐患的占比是25%和75%,互联网金融网站存在的高危漏洞仅上半年就有92个 [6]。我国互联网行业十分发达,在“人人上云”的时代,一般企业服务提供商架设网站的漏洞隐患更是巨大,“上云时代”的数据安全面临的挑战依然严峻。
同时国内基于Python的网络漏洞扫描系统的研究主要集中在高校、科研机构和一些网络安全公司。近年来,随着网络安全问题的日益突出,越来越多的研究人员开始关注网络漏洞扫描系统的设计和实现。
目前,国内的研究主要集中在以下几个方面:
(1)漏洞扫描算法的研究:研究人员针对不同类型的漏洞,设计相应的扫描算法,以提高扫描的准确性和效率。
(2)扫描模块的设计与实现:研究人员根据不同的需求,设计并实现了一系列扫描模块,如端口扫描模块、服务识别模块、漏洞检测模块等。
(3)扫描结果的分析与可视化:研究人员利用数据挖掘、机器学习等技术,对扫描结果进行分析和可视化,以提供更直观的漏洞展示和报告。
1.3 研究目的
基于Python的网络漏洞扫描系统的设计与实现的研究目的主要包括以下几点:
(1)提高扫描的准确性和效率:通过研究和改进扫描算法,提高系统对漏洞的识别准确率和扫描速度。
(2)满足不同需求的应用场景:根据实际应用场景的不同需求,设计和实现相应的扫描模块,以满足不同场景下的漏洞扫描需求。
(3)提供直观的漏洞展示和报告:通过对扫描结果进行分析和可视化,为用户提供更直观的漏洞展示和报告,以便更好地理解和处理漏洞信息。
1.4 研究内容
在漏洞泛滥的今天,互联网安全倍受挑战。只有合理配置设备,关掉不必要的端口和服务,及时了解最新安全动态,打好漏洞补丁加固系统,才能最大限度的减少因漏洞隐患而造成被黑客非法入侵而造成的不必要损失。本人在论文中主要的研究工作:
(1)收集最近几年的国内外因漏洞引起的重大安全事件,分析漏洞对系统乃至现实生活的危害,对项目的侧重方向做出一个初步方向指定。
(2)以中小型网络运维人员和网络安全研究爱好者为主,结合国内该行业的变化特点,以“易部署、轻量化、低学习成本、可扩展”为特点尝试设计与开发工作。设计包含基础的用户模块、日志问题模块和扫描模块。
(3)采用B/S架构,选用Django作为Web框架载体,实现了快捷开发、数据库持久化处理。
(4)结合网络上一些优秀的开源插件,增强项目的功能便利强度和观感。
(5)对项目进行功能测试,确保实现的功能可实行,项目达到预期效果。
1.5 章节安排
本文围绕漏洞的危害,说明及时检测并修复的重要性,因而设计与实现出一种基于python的漏洞扫描系统。文章一共分为五个章节,每个章节的主要内容如下:
第一章首先介绍了漏洞检测的研究背景和意义,程序漏洞的基本概念、程序漏洞的特点和分类,并分析了国内外漏洞危害的情况,最后给出了文章的章节安排。
第二章介绍了实现中使用的一些关键技术,包括Python语言、Django Web框架、Docker技术、Nmap网络扫描器。
第三章介绍了系统的需求分析与设计,包括各个模块的功能、业务流程的设计、关键数据库的设计。
第四章介绍了系统的实现重点细节,包括各个模块(app)功能的具体实现、使用Docker集成Nmap的方法、Docker容器与前台的通信等;
第五章对实现的系统进行测试与验证。简单介绍了测试环境的要求,包括靶机的搭建和配置,以及执行相关模块的功能验证实现功能的程度。
第六章对本文的研究内容进行总结,在不足的地方尝试提出一些优化方案对今后的研究工作与方向进行了展望。
第二章 系统实现使用的技术简介
2.1 Python
Python是现在十分流行的解释型脚本语言之一。其实Python已经在很早就创立了,但是随着近年机器学习、人工智能等技术的创新突破和飞速发展,还有电子化办公的普及,越来越多人使用Python进行编程作业,Python甚至进入了中小学课堂。所以现在的Python生态异常丰富,加上Python有一个庞大开源库,其中的Hack库更是集合了许多网络安全方面高频率使用、性能优异的代码片段,开发者只需导入即可快速使用,不用重复编写,大大的增加了开发效率,Python底层使用C语言编写,在运行效率和可移植性也有良好保证[7]。
2.2 Django
Django是一款优秀的Python Web框架。他采用标准的模型-视图-控制器(MVC)设计模式,内部集成了大量Web开发人员在开发Web系统时高频次使用的功能模块和对象关系映射(ORM),目标是让使用Django的开发人员能用最少时间做出最好的系统。
2.3 Docker
Docker是一种较新型的轻量化虚拟引擎,它基于Linux的内核虚拟化技术(LXC),Docker的运行原理可以简单总结为“把应用承载在容器上运行”。开发人员只需把应用和依赖包一起打包成镜像,之后可以分发到远程仓库上,其他安装了Docker服务的机器很容易就能拉取下来并部署使用。这种虚拟化是一种轻量级的虚拟化技术,用作隔离进程和资源。得益于LXC,它相比于常见的基于VMware、Xen、KVM的虚拟化能节省很多硬件资源。
2.4 Nmap
Nmap是一款强大的开源计算机网络安全扫描器。它的功能包括主机探测、端口扫描、服务版本、操作系统版本扫描,能通过构造特定的探针和数据库结合,快速的进行扫描识别,列举指定网络主机存活情况,检测其中运行的服务端口,甚至拥有一定隐蔽特性来尝试躲避防火墙的审计,借此还能用于检测防火墙规则配置的有效性[8]。
2.5 本章小结
本章对系统中所涉及的几项重要技术进行了简要概述,包括Python、Django、Docker、Nmap,进而为下文的基于Python的漏洞扫描系统的设计与实现研究做了铺垫。
第三章 系统的分析与设计
3.1 需求分析
本系统的目标用户是初级运维人员以及网络安全入门研究者。作为一个中小型网络运维人员的工作环境,网络规模较小,维护经费主要花费在硬件的购置、易耗件的补充上,加上国内网络安全观念的缺失,领导给他们配发的首要任务是保证网络能正常访问,网络安全并不在首位。所以并没有太多的经费花费在购置新型安全防护的硬件设备、大型知名安全公司的网络审查平台,但是在利用漏洞弱点进行网络攻击门槛甚低的今天,完全忽略安全问题并不现实,现实强迫运维人员只能手动或者半自动地使用一些网络上流行的、免费的、开源的安全检测软件。而这些软件基本都依赖一定的环境(如Python2.7、某个Linux发行版)和一定的安全知识基础。即他们需要一款集合一下特点的漏洞扫描系统:
(1)学习成本低:不需要填入太多的复杂参数指令,简单几个参数即可运行;
(2)界面友好:支持图形界面,简单交互即可执行;
(3)轻量级:系统占用资源少,没有太多需要掌握高级开发、安全技术才能开发、使用的特性;
(4)易部署:不需要手动编译、安装,最好能一个批处理或者一个命令行指令,即可部署;
(5)可扩展:能跟着运维人员技术的提高,能逐步加入适应个体网络需求的功能。
3.2 系统设计
3.2.1 系统总体概述
系统总体设计按照软件工程的典范设计——MVC模式。这样的很大程度降低系统整体的耦合程度。把前后端进行分离开发,后端采用了Django轻量级的Web框架,它完全遵从MVC设计模式(在Django中进行了优化并命名为“MTV”)[9],集成了对象关系映射,把业务逻辑层中有关数据代码解离出来,成为一个独立的持久化层,实现了对象模型和关系数据模型之间的映射关系,开发人员在编码过程可以直接进行面向对象编程,而不需要嵌套SQL语句在代码中[10]。在数据库方面,本文选用了国内环境比较流行的MySQL进行存储。得益于Django框架的灵活便利,即便因为其他原因不能使用MySQL进行部署,需要更换为PostgreSQL等其他数据库,只需要在Django相关配置下更改数据库连接配置,并用自带的数据模型控制语句,即可简单变化,使本系统与数据库类型的耦合程度很好的降低。
本系统的整体功能结构如图3-1所示,分为了五大模块:用户认证模块、用户信息管理模块、漏洞扫描模块、日志文章模块、权限管理模块。