前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在docker中运行Kali Linux

在docker中运行Kali Linux

原创
作者头像
点火三周
修改2021-04-30 16:02:46
10.2K0
修改2021-04-30 16:02:46
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

## 背景

当使用各种工具或创建隔离的环境时,Docker是虚拟化的绝佳替代品。Docker是轻量级的(在Linux上本机运行,没有虚拟机管理程序层),并且是不需要GUI的用例的理想选择。Offensive Security已经创建了一个官方的Kali Linux Docker镜像,名为`kalilinux/kali-rolling`,我们将在本文中用其创建并运行Kali Linux容器。

Kali Linux
Kali Linux

我假设你已经安装了docker(如果没有,请参阅:https://docs.docker.com/engine/install/)。

轻松安装和运行Kali image是很容易的:(参阅:https://www.kali.org/docs/containers/official-kalilinux-docker-images/):

```bash

docker pull kalilinux / kali-rolling

docker run -ti kalilinux / kali-rolling / bin / bash

```

这将下载官方的Kali Linux Docker镜像,并基于该镜像创建一个容器,然后/bin/bash在该容器中启动。这个镜像只是一个骨架,尽管已配置了Kali apt源,但未安装任何工具。

## 首要要务

您要做的第一件事是更新Kali软件包并安装将要使用的工具,例如Metasploit。使用上面的`docker run`命令启动一个容器,然后在Kali Shell中运行以下命令:

```bash

apt update

apt dist-upgrade

apt autoremove

apt clean

```

Kali有几个meta packages,这些package里打包了许多Kali工具,以便于安装。我们可通过网址:https : //www.kali.org/news/kali-linux-metapackages/ 查看已提供的meta package的名称以及其中包含的内容的描述。一般来说,我们可以以`kali-tools-top10`作为起点:

```bash

apt install kali-tools-top10

```

我还建议安装`man-db`和安装`exploitdb`软件包。

下一步,让我们创建一个本地Docker映像,其中包含更新和安装的Kali工具。这意味着,您将可以使用所有可用的工具快速创建新的Kali Linux容器。

要基于我们所做的更改来创建新映像,请退出Kali Linux shell(这将停止容器)并运行以下命令:

```bash

docker ps -a

```

这将列出所有Docker容器(-a意味着还包括停止的容器)。输出类似于以下内容:

```bash

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

2a08d58bcfa8 kalilinux/kali-rolling "/bin/bash" About a minute ago Exited (0) 2 seconds ago thirsty_snyde

```

复制容器ID(在上面的示例中为2a08d58bcfa8)并运行:

```bash

docker commit <CONTAINER ID> my-kali

```

这将基于当前容器中的更改创建一个新的名为`my-kali`的Docker映像。下次要创建新的Kali容器时,请使用新的映像名称:

```bash

docker run -ti my-kali /bin/bash

```

## 持久化策略

我们运行kali,肯定会有不少数据是希望能持久化存储,而不至于在删除容器时会丢失。通常,我们使用Kali时数据保存在以下目录中:

- `/root` — home dir for root (downloads, notes, source code etc.)

- `/var/lib/postgresql` — Postgres database files (used by Metasploit)

当您使用之前创建的自定义映像启动新的Kali Linux容器,我们可通过以下命令,将上面的两个位置映射到Docker Volumes:

```bash

docker run -ti --rm --mount src=kali-root,dst=/root --mount src=kali-postgres,dst=/var/lib/postgresql my-kali

```

- 这将创建两个名为`kali-root`和`kali-postgres`的volume,并将它们映射到创建的容器 (如已存在这两个volume,则直接映射)

- `--rm`开关使Docker一旦停止(即一旦退出shell),便删除该容器。这是个好习惯(并且是首选行为,别在一堆停止的容器上浪费存储空间),因为你随时可以通过已持久化的组件(镜像和两个volume)来重新创建它。

另一种选择是将主机上的目录映射到那两个路径。这称为“bind mount”,也可以通过-v或来完成--mount。例如:

```bash

docker run -ti --rm --mount type=bind,src=/some/path/kali-root,dst=/root --mount type=bind,src=/some/path/kali-postgres,dst=/var/lib/postgresql my-kali bash

```

使用此选项,主机上的目标目录必须已经存在;其次,您将必须先使用`docker cp`来将`/var/lib/postgresql`从先前创建的容器(空的Metasploit数据库)中拷贝到要在主机上映射到的目录,否则Postgres将不会启动。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档