0x03 - 云服务器与Docker

云服务器与Docker

云服务器

云服务器介绍

一台通过公网访问的虚拟服务器,可以是Windows、Linux系统。
在云计算还没进行普及的时候,个人或企业站点往往都是托管在IDC机房内,每一台物理服务器都需要一台机柜,每次购买物理服务器或者对服务器进行升级,我们的运维人员都需要跑老远去机房,然后在机房进行操作的,比如升级内存,添加新设备等操作。

Docker

Docker简介

  • Docker是什么

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

  • Docker组成部分

    Docker Client客户端
    Docker Daemon守护进程
    Docker Image镜像
    Docker Container 容器

Docker环境安装

  • 安装Docker

    1. 安装必要的一些系统工具

      sudo apt update
      
      sudo apt -y install apt-transport-https ca-certificates curl software-properties-common
      
    2. 添加 Docker PGP key

      curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o
      /etc/apt/trusted.gpg.d/docker-ce-archive-keyring.gpg
      
    3. 写入软件源信息

      printf '%s\n' "deb https://download.docker.com/linux/debian bullseye stable" |
      sudo tee /etc/apt/sources.list.d/docker-ce.list
      
    4. 更新APT

      sudo apt update
      
    5. 卸载旧版本Docker

      sudo apt remove docker docker-engine docker.io
      
    6. 安装 Docker

      apt install docker-ce docker-ce-cli containerd.io
      
    7. 查看 Docker 状态

      systemctl status docker
      
    8. 启动 Docker

      systemctl start docker
      
    9. 开机自动启动

      systemctl enable docker
      
  • 安装 docker-compose

    curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.0/docker-
    compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose
    

Docker基础操作

Docker镜像操作

  • 列出镜像

    docker image ls -a
    docker images
    
    REPOSITORY:镜像所在的仓库名称
    TAG:镜像标签
    IMAGEID:镜像ID
    CREATED:镜像的创建日期(不是获取该镜像的日期)
    SIZE:镜像大小
    
  • 拉取镜像

    docker image pull library/hello-world
    
    docker image pull:抓取 image 文件的命令
    library/hello-world:image 文件在仓库里面的位置
    library:是 image 文件所在的组
    hello-world:是 image 文件的名字
    
  • 删除镜像

    docker image rm 镜像名或镜像id
    docker rmi 镜像名或镜像id
    
    如:
    docker image rm hello-world
    docker rmi feb5d9fea6a5
    

Docker容器操作

  • 创建容器

    docker run [option] 镜像名 [向启动容器中传入的命令]
    

    常用可选参数说明:

    -i 表示以“交互模式”运行容器
    -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
    --name 为创建的容器命名
    -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可
    以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
    -d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只
    加-i -t 两个参数,创建后就会自动进去容器)。
    -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
    -e 为容器设置环境变量
    --network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
    
  • 交互式容器

    创建一个交互式容器,并命名为mycentos
    
    docker run -it --name=mycentos centos /bin/bash
    
    在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。
    
  • 守护式容器

    创建一个守护式容器,并命名为mycentos2
    
    docker run -dit --name=mycentos2 centos
    
    如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止。
    
  • 进入运行容器

    docker exec -it 容器名或容器id 进入后执行的第一个命令
    
    例如:
    docker exec -it mycentos2 /bin/bash
    
  • 查看容器

    列出本机正在运行的容器
    docker container ls
    
    列出本机所有容器,包括已经终止运行的
    docker container ls --all
    
  • 停止与启动容器

    停止一个已经在运行的容器
    docker container stop 容器名或容器id
    docker stop 容器名或容器id
    
    启动一个已经停止的容器
    docker container start 容器名或容器id
    docker start 容器名或容器id
    
    kill掉一个已经在运行的容器
    docker container kill 容器名或容器id
    docker kill 容器名或容器id
    
  • 删除容器

    docker container rm 容器名或容器id
    docker rm 容器名或容器id
    

容器保存为镜像

# docker commit 容器名 镜像名
docker commit mycentos3 mycentos3

镜像备份与迁移

可以通过save命令将镜像打包成文件,拷贝给别人使用

# docker save -o 保存的文件名 镜像名
docker save -o ./mycentos3.tar mycentos3

对方在拿到镜像文件后,可以通过load方法,将镜像加载到本地

docker load -i ./centos.tar

Docker搭建漏洞靶场

Docker网络代理设置

在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

proxy.conf文件中,添加以下内容:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

其中,proxy.example.com:8080 要换成可用的免密代理.
proxy.example.com更改为自己的代理地址,`8080``更改为自己的代理端口。

vulhub

https://github.com/vulhub/vulhub
https://hub.docker.com/u/vulhub
  1. 通过浏览器访问https://github.com/vulhub/vulhub下载到本地。

    可以选择在kali终端复制如下命令,克隆项目到本地:

    git clone https://github.com/vulhub/vulhub.git
    

    也可以选择点击Download ZIP下载压缩包,然后拖到kali中,并通过unzip解压:

    unzip vulhub-master.zip
    
  2. 进入目录选定自己需要使用到的靶场,使用命令拉取镜像并开启容器。

    cd vulhub-master
    cd thinkphp/5.0.23-rce
    docker-compose up -d
    

vulnapp

https://github.com/Medicean/VulApps
https://hub.docker.com/r/medicean/vulapps
  1. 打开浏览器访问https://github.com/Medicean/VulApps

  2. 查看漏洞所对应的目录下的README.md文件

  3. 按照文档给的环境启动命令依次复制粘贴到服务器上执行即可

    # 以启动thinkphp漏洞环境为例
    docker pull medicean/vulapps:t_thinkphp_2
    docker run -d -p 80:80 medicean/vulapps:t_thinkphp_2
    
    # -p 80:80 前面的 80 代表物理机的端口,可随意指定;后面的 80 为docker容器中的web服务端口,默认端口80。
    

vulfocus

# Vulfocus 官网
https://github.com/fofapro/vulfocus

# 在线 Vulfocus
https://vulfocus.cn/

# Vulfocus 镜像仓库
https://hub.docker.com/u/vulfocus
  1. 通过docker拉取镜像vulfocus/vulfocus

    docker pull vulfocus/vulfocus:latest
    
  2. 开启靶场

    docker create -p 88:80 -v /var/run/docker.sock:/var/run/docker.sock -eVUL_IP=xx.xx.xx.xx vulfocus/vulfocus
    
    这里的88端口代表物理机的端口,80端口代表docker的端口。
    IP为docker的服务器IP,不能是127.0.0.1
    
  3. 上述步骤只是添加了docker容器,并未进行启动,需要通过命令启动

    docker container start 容器ID
    
  4. 此时靶场已经开启,打开浏览器访问服务器ip加88端口即可打开

    http://192.168.81.57:88
    默认账号密码为 admin admin
    
  5. 添加漏洞,注意搭建好后是没有漏洞的,需要自行添加,存在三种方式

    第一种:镜像管理->添加->点击镜像会弹出漏洞编号和名字,选择好后进行提交即可自动进行下载。
    
    第二种:选择本地导入,打开会自动读取服务器上存在的docker镜像,进行导入即可。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值