创建kali docker环境
Tuesday, March 7, 2023
本文共1293字
3分钟阅读时长
⚠️本文是作者P3troL1er原创,首发于https://peterliuzhi.top/posts/%E5%88%9B%E5%BB%BAkali-docker%E7%8E%AF%E5%A2%83/。商业转载请联系作者获得授权,非商业转载请注明出处!
Happiness cannot be travelled to, owned, earned, worn or consumed. Happiness is the spiritual experience of living every minute with love, grace and gratitude.
— Denis Waitley
Dockerfile
根据官网的描述,这个docker镜像不含任何默认工具:
因此我们可以编写Dockerfile来控制docker的构建:
FROM kalilinux/kali-rolling
LABEL maintainer="peterliuall <peterliuforever@gmail.com>"
ENV DEBIAN_FRONTEND noninteractive
ENV TZ Asia/Shanghai
# 如果想要工具更齐全一点可以RUN apt update && apt -y install kali-linux-large
# 但是这样占用空间可能有点恐怖
RUN apt update && apt -y install kali-linux-headless
RUN chsh -s /bin/zsh && echo "Y" | sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
RUN zsh -c "apt install wget && \
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh && \
chmod a+x ./Miniconda3-py310_23.1.0-1-Linux-x86_64.sh && \
./Miniconda3-py310_23.1.0-1-Linux-x86_64.sh -b -p $HOME/miniconda && \
source $HOME/miniconda/bin/activate && conda init &&\
echo 'source $HOME/miniconda/bin/activate && conda init > /dev/null' >> ~/.zshrc && \
source ~/.zshrc"
RUN zsh -c "apt-get install openssh-server vim tmux"
RUN zsh -c "source $HOME/miniconda/bin/activate && conda init && \
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U pip &&\
python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata && \
ln -snf `which python3` /usr/local/bin/python"
RUN mkdir /var/run/sshd
RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g' /etc/default/rsync
COPY rsync.conf /etc
RUN echo 'root:123456' |chpasswd
RUN mkdir /root/sync
RUN ls /usr/bin/ && \
locale-gen en_US.UTF-8 && \
echo 'LANG="en_US.UTF-8"\nLANGUAGE="en_US.UTF-8:"' > /etc/default/locale && \
echo 'export LANG="en_US.UTF-8"\nexport LANGUAGE="en_US.UTF-8:"' >> /etc/zsh/zshrc && \
/bin/zsh -c "source /etc/zsh/zshrc"
WORKDIR /security
RUN echo "cd /security" >> ~/.zshrc
COPY entrypoint.sh /sbin
RUN chmod +x /sbin/entrypoint.sh
ENTRYPOINT [ "/sbin/entrypoint.sh" ]
安装了普通的kali配件,同时使用miniconda来管理python,使用oh-my-zsh来美化终端(主题默认)
其他文件
其他文件包括entrypoint.sh、rsync.conf,全都放在与Dockerfile同一目录下:
entrypoint.sh
#!/bin/bash
/usr/bin/rsync --daemon --config=/etc/rsync.conf
/usr/sbin/sshd -D
rsync.conf
# 编辑配置信息
max connections = 8
log file = /var/log/rsync.log
timeout = 300
[sync] # 模块名
comment = sync
# path为需要同步的文件夹路径
path = /root/sync
read only = no
list = yes
uid = root
gid = root
docker-compose.yml
这个文件用于控制container的生成,包含挂载共享文件夹,设置端口等:
version: "2.2"
services:
kali:
image: kali:rolling
container_name: kali_instance
working_dir: /security
volumes:
- //d/database_BooksAndFiles/VMware/share_files/:/security/
ports:
- "23:22" # 22是ssh端口
- "874:873" # 874是srync端口
cap_add:
- ALL
tty: true
如何食用
首先先build镜像文件:
docker build -t kali:rolling .
然后生成容器:
如果想要登录docker的shell,可以使用如下命令:
docker exec -it <镜像文件id或全名> /bin/bash
下一次重启容器,可以使用docker desktop,也可以使用命令行:
docker restart <镜像文件id或全名>
然后在Windows Terminal中试一试ssh root@127.0.0.1 -p 23
看一下能不能连上,能连上就可以用vscode连上
如果不能连上,可以参见这篇SSH连接报错:Permission denied, please try again.的解决方法 - 腾讯云开发者社区-腾讯云
使用vscode连接
先保证你的vscode有安装以下插件:
然后在这里打开一个config文件:
然后更改config文件如下:
其中kaliDocker可以改成你喜欢的名字
然后就可以连接啦
通过密钥免密连接
因为vscode每次连接、更换文件夹都要输入密码,非常的不方便,因此我们可以使用公私密钥实现免密登录
首先我们在Windows上生成公私密钥(如果之前生成过了就不用重新生成了)(现在一般Windows都会自带openssh了,直接就能用):
让它使用rsa加密的方式生成一个密钥,一直回车即可
然后进入C:\User\<你的用户名>\.ssh\
文件夹,然后就能看到自己生成的id_rsa和id_rsa.pub,其中.pub文件就是公钥
然后使用scp将这个公钥传输到docker中的$HOME/.ssh/
中,如果docker中没有这个文件夹,需要手动在docker中mkdir .ssh
创建文件夹
scp -P23 id_rsa.pub root@127.0.0.1:/root/.ssh
然后登录你的docker中的shell,将这个公钥加入已认证密钥列表中:
cd ~/.ssh/
cat id_rsa.pub >> authorized_keys
然后就OK啦~
扫码阅读此文章
点击按钮复制分享信息
点击订阅