首页
/ EyeWitness项目在CentOS 7下的Docker容器化部署指南

EyeWitness项目在CentOS 7下的Docker容器化部署指南

2025-07-08 01:57:21作者:蔡怀权

项目背景

EyeWitness是一款用于网站截图和识别技术的开源工具,主要用于安全评估和渗透测试。它能够自动捕获目标网站的截图,识别默认凭据、暴露的管理界面等安全风险点。本文将详细介绍如何在CentOS 7环境下通过Docker容器化部署EyeWitness工具。

Dockerfile解析

基础镜像选择

该Dockerfile基于CentOS 7官方镜像构建,这是一个稳定且广泛使用的Linux发行版,特别适合企业环境部署:

FROM centos:centos7

用户权限配置

为了安全考虑,Dockerfile中创建了专门的用户来运行EyeWitness,避免了使用root权限带来的安全隐患:

ARG USER=eyewitness
ARG UID=1000
ARG GID=1000

RUN groupadd -g $GID -r $USER && \
    useradd $USER -u $UID -g $USER -m

环境变量设置

配置了Python相关的环境变量,确保程序运行时的编码和缓冲设置正确:

ENV LC_ALL=en_US.UTF-8 \
    LANG=en_US.UTF-8 \
    PYTHONUNBUFFERED=1 \
    PYTHONIOENCODING=UTF-8 \
    PIP_NO_CACHE_DIR=off

源码获取与安装

通过Git获取EyeWitness最新源码,并执行安装脚本完成依赖安装:

RUN yum install -y git && \
    git clone --depth 1 https://github.com/RedSiege/EyeWitness.git /home/$USER/EyeWitness && \
    cp /tmp/setup.sh /home/$USER/EyeWitness/Python/setup/setup.sh && \
    yum remove -y git

WORKDIR /home/$USER/EyeWitness

RUN cd Python/setup && \
    ./setup.sh && \
    cd .. && \
    chown -R $USER:$USER /home/$USER/EyeWitness && \
    mkdir -p /tmp/EyeWitness && \
    chown $USER:$USER /tmp/EyeWitness

容器入口点

配置容器启动时自动运行EyeWitness主程序,并设置默认参数:

ENTRYPOINT ["python3", "Python/EyeWitness.py", "-d", "/tmp/EyeWitness/results", "--no-prompt"]

实际部署步骤

1. 构建Docker镜像

将上述Dockerfile保存后,执行以下命令构建镜像:

docker build -t eyewitness:centos7 .

2. 运行容器

构建完成后,可以通过以下命令运行容器:

docker run -it --rm -v $(pwd)/results:/tmp/EyeWitness/results eyewitness:centos7 -f targets.txt

其中:

  • -v $(pwd)/results:/tmp/EyeWitness/results 将本地results目录挂载到容器中,用于保存扫描结果
  • -f targets.txt 指定包含目标URL列表的文件

3. 使用自定义参数

EyeWitness支持多种参数配置,例如:

docker run -it --rm eyewitness:centos7 --web --headless -f targets.txt --timeout 20

常用参数说明:

  • --web: 使用传统浏览器模式截图
  • --headless: 使用无头浏览器模式
  • --timeout: 设置页面加载超时时间(秒)
  • --middleware-ip: 通过中间服务器访问目标

安全注意事项

  1. 始终使用非root用户运行安全工具
  2. 定期更新容器镜像以获取最新安全补丁
  3. 扫描操作应在授权范围内进行
  4. 敏感扫描结果应妥善保管

常见问题解决

  1. 截图失败:检查网络连接,确保容器可以访问目标URL
  2. 依赖安装问题:尝试重建镜像,确保yum源可用
  3. 权限问题:确保挂载目录对容器用户可写
  4. 编码问题:确认环境变量LC_ALL和LANG设置正确

通过这种Docker化的部署方式,EyeWitness可以在各种环境中快速部署和使用,同时保持了环境的隔离性和一致性。这种部署方式特别适合需要频繁使用EyeWitness进行安全评估的场景。