版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[5]。关键字subsys概念如下图3-2所示:图3-2subsys的相关参数表3.3UnionFileSystem命名空间为Docker提供了沙箱隔离功能,CGroups为Docker提供了资源限制功能。Docker容器就像一个集装箱,为了能够支持更多功能和更多类型的文件图像,需要将不同的目录和文件系统装载到一个逻辑文件系统中。因此Docker应用联合文件系统来提供这一功能。Docker使用联合文件系统对Docker映像进行分层。文件系统的每一层称为层。在每个层中还打开只读、写和读写权限。当docker调用只读映像的文件系统层时,多个容器可以共享同一个只读文件系统层。为了便于每一层描述如何完全重建,在对底层图像进行操作时,将同时创建和记录层。由于只需要在更新层时进行信息同步,docker可以实现轻量级的图像同步。Docker中最初使用的联合文件系统是aufs。除了提高可靠性和性能外,aufs还对可写分支均衡进行了一些改进。aufs拒绝一直是Docker支持的存储后端之一,它的代码样式驱使它拒绝合并到Linux内核主线中。不过在最新的Docker中,Overlay2将取代aufs。我们可以在Ubuntu系统的/var/lib/dockr/overlay2中看到docker镜像的分层存储形式。在Dockerimage的底层文件系统中,还包括rootfs和brtfs。Rootfs是Linux操作系统中一个典型的文件系统,它对应于/bin、/proc等标准目录和文件,与docker容器相比,整个Rootfs是可读写的。但是,所有实际的修改都会写入最上面的可写层,并且图像的设计目的不是保存用户状态,而只是创建或复制。Btrfs是一个写时复制文件系统,也包含在Linux内核中,支持多种存储技术。
4网络攻防虚拟平台的设计与实现4.1平台设计4.1.1搭建环境硬件环境:ECS服务器至少要求1核2G,即单核CPU,2G运行内存。用户PC机至少要求CPUP42.0以上,内存256M以上,硬盘有超过10G的存储空间。软件环境:学生PC机操作系统为Windows10系统,安装Python3、MYSQL、Pycharm、Navicat等应用软件。ECS服务器为Centos8操作系统,安装docker、Mysql、python等应用软件。4.1.2平台主要实验场景网络攻防解题模块:此模块类似现在网络安全竞赛中较为流行的CaptureTheFlag(夺旗赛)形式,用户可通过此模块注册登录解题平台进行解题,管理员可登录平台上传对应类型的题目,题目类型包括MISC(杂项)、Web漏洞、二进制漏洞、密码破解等等。用户和管理员还可以随时查看实时动态的得分榜情况。网络攻防渗透模块:此模块则更注重对攻防整体流程的把握,是一个攻防演习的全真模拟过程。由管理员分配SSH连接用户名密码,用户根据公共渗透网站寻找漏洞点,进而对自己的站点进行漏洞修补,同时对其他用户站点进行对应漏洞的攻击,来获取相应的分数。各支队伍都有自己维护的站点,每个站点初始有相同的漏洞。用户在攻击其他站点来getshell得分的同时,还要注意防御其他队伍对自己站点的攻击行为防止失分。用户同样可以看到动态的得分情况。虚拟控制台noVNC模块:用户通过密码登陆后进入虚拟VNC平台,进行相关环境配置,可以进行网络攻防相关实验操作。虚拟蜜罐实验模块:用户通过布置好的作为诱饵的主机,捕捉攻击者的各种类型的攻击行为从而进一步分析,总结哪些攻击手段是最应当注意的,同时对其所用攻击工具和手段进行深入思考。总结出应对不同攻击防御方应当通过何种技术和管理方式进行预防,提高自身的安全防护能力。4.1.3实验平台整体结构平台采用常规的注册登录页面,进入系统后简约的四个实验模块,分别为网络攻防解题模式、网络攻防渗透模式、虚拟蜜罐实验、虚拟控制台。网络攻防解题模块同样采取注册登录的形式,用户进入后可以进行解题、查看得分榜、查看用户,管理员模式可以增删题目、查看榜单,增删用户、创建比赛等;网络攻防渗透模式则是直接跳转至公共渗透网站,每个用户可以通过公共渗透网站寻找初始漏洞;蜜罐实验模式采用用户登录注册的方式,进去管理页面后包括仪表盘、上钩列表、分布式集群、邮件群发和系统设置多个功能,还可以通过切换大屏显示HFish全球态势感知;虚拟网络控制台则使用密码直接登录即可在虚拟环境下进行自主实验。整个实验平台的整体结构如下图4-1所示:图4-1实验平台整体架构4.2平台实现4.2.1登录注册模块实现登录注册前端使用HTML5、JS、CSS进行编写,后端用Flask进行控制,登录注册采用同样的form表单形式,get方式传递用户名密码,submit时触发action属性,由Flask路由跳转至相应函数,进行数据库连接后根据用户名插入或查找,关键代码如下:#进行注册,连接gfpt数据库将所注册的用户名和密码记录进去defRegist():db=pymysql.connect(host="localhost",user="myw",password="mywpassword",database="gfpt")cursor=db.cursor() sql="INSERTINTOuserVALUES('"+request.args.get('username')+"','"+request.args.get('password')+"')"try:cursor.execute(sql)mit()returnrender_template('index.html')except:traceback.print_exc()db.rollback()return'注册失败'db.close()#进行登录,连接gfpt数据库查询输入的用户名密码是否存在defLoginRequest():db=pymysql.connect(host="localhost",user="myw",password="mywpassword",database="gfpt")cursor=db.cursor()sql="select*fromuserwhereusername="+request.args.get('username')+"andpassword="+request.args.get('password')+""try:cursor.execute(sql)results=cursor.fetchall()print(len(results))iflen(results)==1:returnrender_template('test.html')else:return'用户名或密码不正确'mit()except:traceback.print_exc()db.rollback()db.close()数据库采用常用的Mysql进行设计存储,整个平台的数据库名为GFPT,登录注册连接表user,包含字段用户ID、用户名、密码、手机号、邮箱,user表如下表4-1所示:表4-1用户表(user)列名数据类型长度是否为空解释说明idint10否用户序号usernamevarchar25否用户姓名passwordvarchar18否用户密码phoneint11是用户手机号Emailvarchar20是用户邮箱4.2.2攻防解题模块实现搭建在docker容器中,先利用pip安装平台启动所需的相关环境,pipinstall指令逐个安装requirments.txt中版本,列表如下:#pipinstallrequirments.txtFlask==1.0.2Werkzeug==0.15.3Flask-SQLAlchemy==2.4.0Flask-Session==0.3.1Flask-Caching==1.4.0Flask-Migrate==2.3.0Flask-Script==2.0.6SQLAlchemy==1.3.3SQLAlchemy-Utils==0.33.11passlib==1.7.1bcrypt==3.1.4six==1.11.0itsdangerous==1.1.0requests>=2.20.0PyMySQL==0.9.2gunicorn==19.9.0normality==0.6.1dataset==1.1.0mistune==0.8.4netaddr==0.7.19redis==2.10.6datafreeze==0.1.0gevent==1.4.0python-dotenv==0.9.1flask-restplus==0.12.1pathlib2==2.3.2flask-marshmallow==0.10.1marshmallow-sqlalchemy==0.17.0boto3==1.9.39marshmallow==2.20.2banal==0.4.2利用docker-compose文档编写自定义镜像,映射8000端口,数据库使用mariadb:10.4版本,数据库名为ctfd,root用户名密码默认都设置为rv1nm4,关键代码如下:#vimdocker-compose.ymlversion:'2'services:ctfd:build:.user:rootrestart:alwaysports:-"8000:8000"environment:-UPLOAD_FOLDER=/var/uploads-DATABASE_URL=mysql+pymysql://root:ctfd@db/ctfd-REDIS_URL=redis://cache:6379-WORKERS=1-LOG_FOLDER=/var/log/CTFd-ACCESS_LOG=--ERROR_LOG=-volumes:-.data/CTFd/logs:/var/log/CTFd-.data/CTFd/uploads:/var/uploads-.:/opt/CTFd:rodepends_on:-dbnetworks:default:internal:db:image:mariadb:10.4restart:alwaysenvironment:-MYSQL_ROOT_PASSWORD=rv1nm4-MYSQL_USER=rv1nm4-MYSQL_PASSWORD=rv1nm4-MYSQL_DATABASE=ctfdvolumes:-.data/mysql:/var/lib/mysqlnetworks:internal:command:[mysqld,--character-set-server=utf8mb4,--collation-server=utf8mb4_unicode_ci,--wait_timeout=28800,--log-warnings=0]cache:image:redis:4restart:alwaysvolumes:-.data/redis:/data接着建立Dockerfile,编写指令快速创建我们上面所自定义的镜像,docker-composebuild建立,docker-composeup-d启动并持续运行。Dockerfile关键指令如下:FROMpython:3.7-alpineRUNapkupdate&&\apkaddpython3python3-devlinux-headerslibffi-devgccmakemusl-devpy-pipmysql-clientgitopenssl-devRUNadduser-D-u1001-s/bin/bashctfdWORKDIR/opt/CTFdRUNmkdir-p/opt/CTFd/var/log/CTFd/var/uploadsCOPYrequirements.txt.RUNpipinstall-rrequirements.txtCOPY./opt/CTFdRUNfordinCTFd/plugins/*;do\if[-f"$d/requirements.txt"];then\pipinstall-r$d/requirements.txt;\fi;\done;RUNchmod+x/opt/CTFd/docker-entrypoint.shRUNchown-R1001:1001/opt/CTFdRUNchown-R1001:1001/var/log/CTFd/var/uploadsUSER1001EXPOSE8000ENTRYPOINT["/opt/CTFd/docker-entrypoint.sh"]解题模式下数据库采用Mysql进行设计存储,数据库名为ctfd,包括表用户、队伍、通知公告、标签、赛题、评论等,关键表如下:表4-2用户表(user)列名数据类型长度是否为空解释说明IDint11否用户IDOauth_idint11否认证IDNamevarchar125否用户姓名Passwordvarchar125否用户密码Emailvarchar80是用户邮箱typevarchar10否用户类型Hiddentinyint1是是否隐藏Team_idtinyint1是团队IDcreateddatatime是创建日期表4-3题目表(challenges)列名数据类型长度是否为空解释说明IDint11否题目序号namevarchar80是题目名称Descriptiontext是题目描述Max_attemptsint11是最多尝试次数Valueint11是题目分值Categoryvarchar80是题目类别Typevarchar80否题目类型Statevarchar80否完成状态Requirementslongtext是相关要求4.2.3攻防渗透模块实现此模块直接利用docker拉取zhl2008/web14.04镜像,利用python脚本batch.py打包对应数量的队伍网站源码,再编写start.py脚本启动各个队伍镜像。启动脚本的关键代码如下:#python2batch.pyweb_simple5启动五个队伍defstart_flag():os.system('cdflag_server&&shdocker.sh')print'[*]startdockerflag_server'defgen_host_lists():res=''foriinrange(teamno):res+="team%d:172.17.0.%d\n"%(i+1,i+2)open('check_server/host.lists','w').write(res)defstart_team(teamno):team_dir='team'+str(teamno)os.system('cd%s/%s/&&shdocker.sh'%(dir,team_dir))print'[*]startdocker%s'%team_dirif__name__=='__main__':foriinrange(teamno):start_team(i+1)对于队伍容器的停止、删除、重新创建等问题,单个命令执行很不方便,可以编写bash脚本文件,达到一键执行的效果,十分方便快捷,相关指令如下:Vimdel.shdockerstop容器ID_1;dockerrm容器ID_1;sleep2;dockerstop容器ID_2;dockerrm容器ID_2;sleep2;4.2.4虚拟控制台实现虚拟控制台noVNC在github上打包了图形化界面的源码,gitclone命令将其打包至所用的服务器中。使用docker中的pull指令拖取对应VNC镜像,接着run指令启动镜像,-d、-p分别设定映射容器内部和外部端口,对应指令如下:Dockerpullconsol/centos-xfce-vncDockerrun-d-p5901:5901-p6901:6901consol/centos-xfce-vnc4.2.5虚拟蜜罐实验的实现同样是编写docker-compose.yml文档,说明自定义镜像,接着Dockerfile建立指令快速建立自定义镜像。蜜罐实验的镜像比较简单,主要是需要开启多个端口用以诱导攻击者进行攻击,所开端口如下:version:"3"services:hfish:build:context:./dockerfiledockerfile:./Dockerfilerestart:alwaysports:-"9001:9001"-"21:21"-"22:22"-"23:23"-"69:69"-"3306:3306"-"5900:5900"-"6379:6379"-"7879:7879"-"8080:8080"-"8081:8081"-"8989:8989"-"9000:9000"-"9200:9200"-"11211:11211"接着docker-composebuild打包镜像,docker-composeup-d启动并持续运行此容器。
5网络攻防虚拟场景构建平台的测试5.1登录注册功能运行测试本地Pycharm运行app.py,访问:5000登录界面,包括用登录、立即注册和忘记密码找回按钮,如图5-1。图5-1用户登录若没有账户,点击立即注册,跳转至注册界面,如图5-2。图5-2用户注册注册登录成功,进入首页模块选择部分,有四个分区,分别为网络攻防解题模块、网络攻防渗透模块、虚拟控制台实验模块以及蜜罐实验模块,如图5-3。图5-3平台首页5.2攻防解题模块运行测试点击第一模块跳转至ECS服务器中Docker容器搭建的网络攻防解题ctfd平台,如图5-4。图5-4攻防解题模块首页点击Clickhere进入登录注册页面,登录后进入首页,Statistics显示平台基本情况,包括注册用户数、注册IP数、赛题数目,赛题总分值等,如图5-5。图5-5Statistics页面管理员Challenge页面可编辑、添加、删除、查看赛题,添加赛题类型可自定义,常用类型包括web漏洞、逆向分析、密码学破解、MISC杂项技能等等,根据题目难度自定义对应分值,如图5-6,5-7。图5-6管理员查看赛题页面图5-7管理员添加赛题页面用户Challenge页面可查看赛题,提交答案,同时可以查看已正确答题人数和用户名,如图5-8。图5-8用户Challenge页面Users界面可添加、查看基本用户和队伍信息。管理员端还可以设定相关用户和队伍的状态,隐藏或是显现,如图5-9。图5-9Users页面公告,计分板均可正常运行。分别用来发布管理员公告和查看队伍得分及排名情况,如图5-10。图5-10计分板页面5.3攻防渗透模块运行测试点击网络攻防虚拟场景构建平台第二板块进入公共攻防渗透平台,和一般网页无差别,如图5-11。图5-11公共渗透网页运行测试简单拿SQL注入中万能密码来测试登录接口,我们尝试用管理员账户admin登录,提示密码错误,如图5-12。图5-12渗透网站登录页面接下来利用Sql注入单引号闭合绕过密码,如图5-13。图5-13万能密码注入成功登入后台拿到Flag,如图5-14。图5-14拿到Flag由于是攻防演练形式的渗透平台,Flag采取五分钟刷新一轮的机制,这样可以很好的区分已加固漏洞的队伍和未加固的队伍,已加固的队伍不再失分,未加固的队伍还会持续失分。攻击者可以编写对应的自动获取和提交脚
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年邳州市中小学教师招聘笔试真题(教育综合知识)含完整答案
- 2026年初中英语教师资格提升
- 2026年法考《证据法》专项模拟试题及答案解析
- 安全文明施工样板工地创建方案
- 五年级数学下册 1 观察物体配教案 新人教版
- 高中物理 第四章 牛顿运动定律 3 牛顿第二定律教案 教科版必修第一册
- 幼儿园大班语言教案落叶
- 双胎早产考试试题及答案
- 史前考古陶器识别技能测试试卷及答案
- 小学合唱团视唱练耳水平测试规范试题
- 2026福建厦门市市政园林局补充非在编工作人员招聘1人笔试参考题库及答案详解
- 心血管系统超说明书用药总结2026
- GA/T 1999.3-2025道路交通事故车辆速度鉴定方法第3部分:基于视频图像
- 2026年浙江省大学生乡村医生专项计划招聘考试历年参考题库含答案详解
- 修订一单一库质量手册和程序文件参考文件
- 2026年卫健系统公开遴选公务员笔试试题及答案解析(卫健类)
- 2026年氧化钇行业分析报告及未来发展趋势报告
- 2025年江苏省南京市雨花台区小升初数学试卷
- 2025年高级眼镜验光师(三级)《理论知识》考试真题(题后附答案和解析)
- 电网技术改造及检修工程定额和费用计算规定2020 年版答疑汇编2022
- 2025年度医院急诊科人才培养计划
评论
0/150
提交评论