最新消息:

环境搭建:Docker给你不一样的渗透体验

Kali Linux Eternal 18943浏览 0评论

背景知识科普:

Docker?是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的?Linux?机器上,也可以实现?虚拟化。容器是完全使用?沙箱?机制,相互之间不会有任何接口。

1、虚拟化容器的优势

随着公有云的普及,开发者越来越需要一个快速迁移和高速构建应用的环境。 现在开发者需要能方便地创建运行在云平台上的应用,也就是说应用必须能够脱离底层机器。?而且同时必须是方便获取的。因此,开发者们需要一种创建分布式应用程序的方式,这也是Docker所能够提供的。

举个例子: 我在项目中同一台服务器中同时运行了nginx,forum&wiki(node.js),meteor server(meteor.js)。每个服务又依赖大量的第三方库,如果用传统的方式进行部署。则需要安装大量的依赖模块,费时费力。假如我需要在国外的AWS及国内的阿里云上同时部署多台机器。或者从某个公有云服务商迁移到另外一个服务商。这中间的重复劳动是很让人抵触的。抛开让人生厌的重复劳动,服务之间也有可能因此互相“污染”导致性能下降甚至服务异常。而Docker提供了一种更为聪明的方式,通过容器来打包应用,意味着迁移只需要在新的服务器上启动需要的容器就可以了。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。

?2、Docker在开发和运维中的优势

对开发和运维(DevOps)人员来说,可能最梦寐以求的就是一次性地创建或配置,可以在任意环境、任意时间让应用正常地运行。而Docker恰恰是可以实现这一终极目标的瑞士军刀。

具体说来,Docker在开发和运维过程中,具有如下几个方面的优势。

更快速的交付和部署。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;比如在项目开发过程中我会先用Docker将代码部署到本地进行测试验证。使用Docker在本地轻松搭建出的和服务器类似的架构,使开发环境中的测试更贴近于生产环境。开发完成之后,测试和运维人员可以直接使用相同环境来部署代码。Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。并且,各个步骤都有明确的配置和操作,整个过程全程可见,使团队更容易理解应用的创建和工作过程。

更高效的资源利用。Docker容器的运行不需要额外的虚拟化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。

更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。?利用这种兼容性让用户可以在不同平台之间轻松地迁移应用。

更简单的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式进行分发和更新,从而实现自动化并且高效的容器管理。

3、Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。

Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。

Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。

Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。

Docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要启动N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离的容器,并将应用放到容器内即可。

当然,在隔离性方面,传统的虚拟机方式多了一层额外的隔离。但这并不意味着Docker就不安全。Docker利用Linux系统上的多种防护机制实现了严格可靠的隔离。从1.3版本开始,Docker引入了安全选项和镜像签名机制,极大地提高了使用Docker的安全性。

docker 多开终端:资源消耗的状态:

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
bb27f8c0cf22        0.03%               262.2 MiB / 1.951 GiB   13.12%              648 B / 648 B       4.096 kB / 0 B      12

官方链接:https://www.kali.org/news/official-kali-linux-docker-images/

Docker从入门到夺门而逃

安装docker_kali …..

1.安装之前需要去docker官方网站下载docker,进行安装,我这边安装的是mac版docker.

https://www.docker.com/

2.安装完后开始下载拉取kali镜像,比较小巧大概几百M左右

使用官方一下命令:即可获取相应镜像

docker pull kalilinux/kali-linux-docker

或者

docker run -t -i kalilinux/kali-linux-docker /bin/bash

下载完后即可进入kali_linux 终端下

3.绑定Docker 随机ID,以及配置kali

docker run --name kali  //kali为我随机取得容器名,容器名自定义//    -i -t kalilinux/kali-linux-docker /bin/bash
root@bb27f8c0cf22:/# exit

4.开启docker,使用attach命令连接容器

开启容器?docker start?<容器名>或者<id>

demonMacbookPro:~ demon$ docker start kali

链接docker容器 ?格式为:docker attach <容器名>或者<id>

demonMacbookPro:~ demon$ docker attach kali

进入docker

root@bb27f8c0cf22:/#

5.配置docker_kali以及优化

1.更新源以及安装相应的工具,这里的源使用官方源即可

更新源

root@bb27f8c0cf22:/# apt-get update  
Get:1 http://mirrors.neusoft.edu.cn/kali kali-rolling InRelease [30.5 kB]
Get:2 http://mirrors.neusoft.edu.cn/kali kali-rolling/non-free Sources [126 kB]
Get:3 http://mirrors.neusoft.edu.cn/kali kali-rolling/contrib Sources [67.7 kB]
Get:4 http://mirrors.neusoft.edu.cn/kali kali-rolling/main Sources [11.1 MB]   
Get:5 http://mirrors.neusoft.edu.cn/kali kali-rolling/main amd64 Packages [15.0 MB]
Get:6 http://mirrors.neusoft.edu.cn/kali kali-rolling/contrib amd64 Packages [106 kB]
Get:7 http://mirrors.neusoft.edu.cn/kali kali-rolling/non-free amd64 Packages [164 kB]
Fetched 26.6 MB in 23s (1116 kB/s)                                             
Reading package lists... Done
root@bb27f8c0cf22:/#

安装想要的工具 比如?sqlmap

root@bb27f8c0cf22:/# apt-get install sqlmap

再比如 我这人比较懒,想把kali的工具全部搬过来,全部使用上,使用以下命令。安装kali所有的工具

root@bb27f8c0cf22:/# apt-get install kali-linux-all

下载完,大概10G左右的安装包

另外值得说的是如果msf 里面没有启动数据 请启动相应的数据库。

查看相应教程链接:http://www.mamicode.com/info-detail-1208947.html

?6.docker容器上传下载文件

docker是个封闭的容器。上传和下载也是一个比较麻烦的事。我自己想了一个办法就是把我的物理机 ?mac系统作为ssh 上传下载的地方

我这边已经建立了?ssh通道,不会建立ssh ,查询相关操作系统建立ssh文档。

root@bb27f8c0cf22:/# ssh demon@192.168.1.108
Password:
Last login: Wed Feb  1 06:21:59 2017
demonMacbookPro:~ demon$ exit 
logout
Connection to 192.168.1.108 closed.
root@bb27f8c0cf22:/#

从服务器下载文件 :scp ?用户名@ssh建立的ip的地址:上传文件的绝对路径 ?下载的路径

scp demon@192.168.1.108:/Users/demon/Desktop/sql.hear /home

上传本地文件到服务器:scp /path/local_filename username@servername:/path ?

scp /var/www/test.php  codinglog@192.168.0.101:/var/www/  把本机/var/www/目录下的test.php文件

可查询ssh相关文档

7.下载kitematic—GUI 管理工具

终端开一个是不够的,我们通常终端使用 是多开的情况,但是你再新建一个窗口同样使用一下命令进入

docker attach kali

你会发现窗口是同步的,有没有更加方便的工具设置呢。有的——kitematic就可以实现

https://www.docker.com/products/docker-kitematic

点击EXEC,点击多个,开启终端窗口都不会同步现象。

8.Docker 其他相关命令—–删除多余的容器

demonMacbookPro:~ demon$ docker ps -a -q     -------查看docker 容器的id
bb27f8c0cf22
demonMacbookPro:~ demon$ docker ps -a      ------查看docker 容器 完整内容
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS               NAMES
bb27f8c0cf22        kalilinux/kali-linux-docker   "/bin/bash"         4 days ago          Up 46 minutes                           kali
demonMacbookPro:~ demon$ docker rm   docker随机id     --------删除docker多余id
demonMacbookPro:~ demon$ docker stats      -------查看docker相应进程
demonMacbookPro:~ demon$ docker restart kali(容器名或者id)----重启docker容器

其他命令查询docker相关文档

其中docker的作用不仅这么点,还可以自定义,搭建我们的web靶机等等,可以多尝试下docker的作用

参考资料:http://www.open-open.com/lib/view/open1456844987781.html

其他可以参考我的好基友国光:http://www.sqlsec.com/703.html??docker入门简明教程。

*本文由 即刻安全Demon 原创发布!

转载请注明:即刻安全 » 环境搭建:Docker给你不一样的渗透体验

您必须 登录 才能发表评论!

网友最新评论 (1)



合作伙伴