实用指南:CentOS 7 Docker 部署 DVWA 教程

CentOS 7 Docker 部署 DVWA 教程(精准适配环境)

环境: CentOS 7 Docker 环境,直接按以下步骤操作即可,全程贴合 CentOS 7 的权限和端口特性,避免踩坑:

一、前置检查(确保 Docker 正常可用)

先确认 Docker 服务已启动,避免后续部署失败:

# 1. 查看 Docker 状态
systemctl status docker
# 2. 若未启动,执行启动命令(并设置开机自启,可选)
sudo systemctl start docker
sudo systemctl enable docker  # 开机自启,下次无需手动启动
# 3. 验证 Docker 权限(CentOS 7 需确保当前用户在 docker 组,避免每次输 sudo)
# 若执行 docker 命令提示权限不足,执行以下命令(执行后退出终端重新登录)
sudo usermod -aG docker $USER

二、部署 DVWA 步骤(CentOS 7 专属命令)

1. 拉取官方 DVWA 镜像(稳定无兼容问题)

docker pull vulnerables/web-dvwa
  • 等待拉取完成(镜像约 1GB,CentOS 7 建议用国内镜像源加速,若拉取慢可看下方“加速技巧”);
  • 拉取成功后,用 docker images 验证,能看到 vulnerables/web-dvwa 即正常。

2. 启动 DVWA 容器(CentOS 7 必加权限参数)

CentOS 7 下必须带 --privileged--cap-add=SYS_ADMIN 参数,否则数据库会启动失败:

# 映射本地 8080 端口(避免 80 端口被系统服务占用)
docker run -d \
-p 8080:80 \
--name dvwa-container \
--privileged \
--cap-add=SYS_ADMIN \
vulnerables/web-dvwa
  • 参数说明:
    • -p 8080:80:用 8080 端口(CentOS 7 的 80 端口可能被 httpd 占用,8080 更安全);
    • --privileged + --cap-add=SYS_ADMIN:解决 CentOS 7 容器权限不足,确保 MySQL 正常启动;
    • --name dvwa-container:自定义容器名,方便后续管理。

3. 验证容器启动状态

# 查看运行中的容器
docker ps
# 若没看到 dvwa-container,查看报错日志(排查问题)
docker logs dvwa-container
  • 正常状态:STATUS 列显示 Up(如 Up 3 minutes),说明启动成功。

三、访问与初始化 DVWA(CentOS 7 特有注意事项)

1. 开放 8080 端口(CentOS 7 防火墙默认拦截)

CentOS 7 自带 firewalld 防火墙,必须开放 8080 端口才能外部访问:

# 1. 开放 8080 端口(永久生效)
sudo firewall-cmd --permanent --add-port=8080/tcp
# 2. 重新加载防火墙规则(让配置生效)
sudo firewall-cmd --reload
# 3. 验证端口是否开放成功
sudo firewall-cmd --query-port=8080/tcp
# 输出 yes 即成功

2. 访问 DVWA 页面

  • 本地访问(CentOS 7 服务器本身):打开浏览器输入 http://localhost:8080
  • 远程访问(其他电脑/手机):输入 http://你的CentOS7服务器IP:8080(如 http://192.168.1.100:8080)。

3. 初始化数据库(首次访问必须做)

  1. 进入登录页后,点击底部的 Create / Reset Database 按钮;
  2. 等待 1-2 秒,页面提示 Database setup complete! 即初始化成功。

4. 登录 DVWA

  • 用户名:admin
  • 密码:password
  • 登录后,点击左侧 DVWA Security,选择 Low 安全级别(新手入门),点击 Submit 保存。

四、CentOS 7 专属问题排查

1. 容器启动失败(日志显示 MySQL 启动报错)

  • 原因:权限不足或 SELinux 限制;
  • 解决:
    # 先停止并删除旧容器
    docker stop dvwa-container && docker rm dvwa-container
    # 带 SELinux 禁用参数重新启动
    docker run -d \
    -p 8080:80 \
    --name dvwa-container \
    --privileged \
    --cap-add=SYS_ADMIN \
    --security-opt seccomp=unconfined \
    vulnerables/web-dvwa

2. 远程访问不了(浏览器提示无法连接)

  • 排查步骤:
    1. 确认容器在运行:docker ps 看 dvwa-container 状态;
    2. 确认端口已开放:firewall-cmd --query-port=8080/tcp(必须输出 yes);
    3. 确认服务器 IP 正确:ip addr 查看 CentOS 7 的网卡 IP(如 eth0 的 inet 地址);
    4. 关闭 SELinux(若仍无法访问):
      sudo setenforce 0  # 临时关闭(重启失效)
      # 永久关闭:编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled,重启服务器

3. 拉取镜像太慢(CentOS 7 网络问题)

  • 配置 Docker 国内镜像加速(阿里云):
    # 1. 创建 Docker 配置目录
    sudo mkdir -p /etc/docker
    # 2. 写入加速配置
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
    }
    EOF
    # 3. 重启 Docker 服务
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    重新执行 docker pull vulnerables/web-dvwa,拉取速度会显著提升。

五、CentOS 7 常用容器管理命令

操作命令
停止 DVWA 容器docker stop dvwa-container
启动已停止的容器docker start dvwa-container
重启容器docker restart dvwa-container
查看容器日志docker logs dvwa-container
删除容器(无需时)docker stop dvwa-container && docker rm dvwa-container
查看镜像docker images
删除镜像docker rmi vulnerables/web-dvwa

总结

CentOS 7 部署 DVWA 的核心是:加足容器权限(–privileged + --cap-add=SYS_ADMIN)+ 开放防火墙端口(8080),按上面步骤操作,5 分钟就能正常使用。登录后先把安全级别调到 Low,开始练习 XSS 基础注入(如 <script>alert(1)</script>),后续再逐步提升难度~

posted @ 2025-12-23 22:39  gccbuaa  阅读(1)  评论(0)    收藏  举报