闫 梅
(山西机电职业技术学院信息工程系 山西 长治 046001)
随着新技术的快速发展,网络作为现代社会信息传播的重要途径,遍布于人们日常生活的方方面面。人们在享受着网络带给我们方便快捷的同时,网络欺诈、隐私泄露等网络安全事件时有发生,给个人、公司、国家的财产造成损失,网络安全越来越成为不可忽视的问题。网络安全技术的快速更新对人才需求提出更多新的挑战,目前对网络安全从业人员培养主要依赖于理论课程的学习,缺乏对实际场景下攻防历练的实操练习。在学习过程中,为帮助学习者真正理解漏洞形成的原因,需要在真实的渗透测试演练系统下展开实操[1]。不同系统环境下迁移成本高、部署过程繁琐、对本机系统的影响等问题,是搭建渗透测试平台过程中经常遇到的问题,Docker作为一种新兴的虚拟化技术,其快速的启动时间、一致的运行环境、快速的交付和部署、轻松的迁移等特点可以较好地解决上述问题,为学习者提供方便快捷的学习环境。
Docker是一个开源的应用容器引擎,开发者可以打包需要的应用以及依赖包到一个可移植的镜像中,发布到任何Linux或Windows机器上。与传统虚拟技术最大的不同在于,Docker是在操作系统的基础上实现的虚拟技术,相当于是宿主机上一个普通的进程,能够保证运行环境的一致性,一次配置多次运行,不会出现由于环境配置不一致引起的开发、测试问题[2]。Docker容器与传统虚拟机对比,见图1。
图1 Docker容器与传统虚拟机对比
Docker采用C/S的系统架构,主要由客户端、守护进程、容器、镜像、仓库组成,见图2。Docker客户端作为Docker用户与Docker交互的主要方式;守护进程运行于服务器端后台,用于接收客户端的请求;容器是通过镜像来创建应用运行的实例,容器之间相互隔离,互不影响,保证安全的平台[3];镜像是一个只读文件,提供了运行程序完整的软硬件资源,可以将镜像看作是容器的模板,同一个镜像文件,可以生成多个同时运行的容器实例。
图2 Docker组成结构图
Docker的运行过程具体如下。
(1)客户端通过执行终端命令调用服务器端的daemon守护进程。
(2)守护进程向Linux OS请求建立容器。
(3)Linux创建一个空的容器。
(4)守护进程检查本机是否有Docker镜像文件,若有,加载到容器并完成安装;若本机无Docker镜像文件,则去仓库联网下载,下载回来后再进行装载到容器的动作[4]。
(5)形成安装好镜像文件的容器。
网络安全从业人员在学习Web渗透测试的过程中,通常会利用Windows系统下可用的DVWA平台进行学习或者在自己的PC端借助于虚拟机,在虚拟机上安装Centos并部署操作环境[1]。在统一进行学习或培训的过程中,机房电脑带有还原系统,每次课前部署学习环境的过程比较麻烦,采用Docker技术实现的学习平台搭建具有部署启动速度快,占用空间小的优点。如图3所示,基于Docker的Web渗透测试平台采用B/S的系统架构,教室机作为服务器安装虚拟机,在虚拟机上安装centos的Linux操作系统并利用Docker部署Web渗透测试平台,学生机通过浏览器打开部署好的Web渗透测试平台。
图3 基于Docker的Web渗透测试平台的设计
3.2.1 宿主机与虚拟机上Linux系统的连通性配置
使用VMware Workstation 15版本的虚拟机,在新建的虚拟机上安装完成Centos 7 64位操作系统,为了实现宿主机与centos系统之间的通信,需进行如下的网络配置。
(1)宿主机的操作。在宿主机下通过在命令行窗口中输入ipconfig命令,查看本机的IP地址为:172.18.16.200、子网掩码:255.255.255.0、网关:172.18.16.1。
(2)centos上的操作。默认情况下虚拟机上的系统采用dhcp的方式获取IP地址,通过输入ip a命令查看centos上自动获取的IP地址为192.168.157.131。为了实现宿主机与Linux操作系统的连通性,两者的网段需要保持一致,切换目录到/etc/sysconfig/network-scripts目录下,输入l s命令查看该目录下存在哪些文件和目录,见图4。
图4 network-scripts目录下文件
其中,ifcfg-ens33为Linux操作系统下的网卡配置文件,通过vim编辑器打开,修改BOOTPROTO=”static”,同时在文件后手动添加TCP/IP信息,IP地址设置为IPADDR=172.18.16.222,子网掩码设置为NETMASK=255.255.255.0,网关设置为GATEWAY=172.18.16.1,保存并退出文件编辑,见图5。
图5 网卡配置文件内容
(3)vm虚拟机的配置。打卡虚拟机下的“虚拟网络编辑器”,通过“更改设置”,设置桥接模式桥接至Realtek PCIe GBE Family Controller。
(4)测试Linux与宿主机的连通性。Linux操作系统与宿主机之间相互ping测试,实现Linux与宿主机的连通,见图6。
图6 Linux与宿主机之间的相互测试
3.2.2 Docker容器的配置
(1)repo文件的定位。选择国内的源地址http://download.Docker.com/Linux/centos/Docker-ce.repo作为Docker的安装源,切换目录到/etc/yum.repos.d目录下,通过l s命令可以看到”/etc/yum.repo.d”目录下的众多repo文件,见图7,执行yum命令时,会首先从中取得软件仓库的地址并下载“元数据”。
图7 众多repo文件
(2)使用yum下载并安装Docker。为避免repo文件的丢失,通过执行 cp ./* /home/back完成对repo文件的备份。通过输入命令#wget https://download.Docker.com/Linux/centos/Docker-ce.repo,在阿里源下载Docker,见图8。
图8 Docker源的下载
yum会把下载的软件包和header存储在cache中,使用yum clean命令删除,然后通过yum makecache命令将服务器上的软件包信息在本地缓存,以提高搜索安装软件的速度,见图9。
图9 创建本地缓存
(3)Docker的启用。通过执行#systemctl start Docker #sysrtem status Docker命令,启用Docker并查看运行的状态,见图10。
图10 Docker运行状态
在查看运行状态过程中发现有一行标红的提示,为了解决此问题,我们在/etc/sysconfig/Docker文件设置-enabled=false关闭SELinux,重新启动Docker后再次查看运行状态,发现问题得到解决。
3.2.3 Web渗透测试平台的部署
(1)Web渗透测试平台的上传。通过xftp软件连接到目标的centos,将Web渗透测试平台环境的tar包导入到centos系统下的/root目录下,见图11。
图11 Web渗透测试平台环境的上传
切换到centos系统下的/root目录下,查看文件是否上传成功,通过ls命令验证文件是否上传成功。
(2)利用Docker导入平台环境。通过执行#dokcer load
图12 平台环境的导入
(3)利用Docker启用Web渗透测试环境。通过执行#Docker run -d -p 8001:80 dcn-anhui命令,在后台运行Docker容器通过参数-p映射端口号8001,渗透平台环境启动成功,见图13。
图13 平台的启动
教师机打开本地浏览器,在地址栏中输入centso的IP地址及映射的容器端口号,http://172.18.16.222:8001,成功访问Web渗透测试平台,见图14。
图14 访问Web渗透测试平台
学生机在局域网内访问教师机上的Web渗透测试平台时出现无法访问的情况,需要在教师机虚拟机下Linux操作系统/etc/sysctl.conf文件中添加net.ipv4.ip_forward=1开启centos7 ip转发,见图15,学生机成功访问Web渗透测试平台。
图15 开启centos ip转发
针对学习者在搭建学习环境平台中遇到的问题,基于Docker技术搭建Web渗透测试平台,简化了学习者的操作难度,学习者只要通过浏览器即可访问服务器端的资源,提高了学习的效率。