告别Kali自带版!手把手教你用Docker在Ubuntu 22.04上部署最新OpenVAS(附一键脚本)

张开发
2026/4/18 9:26:46 15 分钟阅读

分享文章

告别Kali自带版!手把手教你用Docker在Ubuntu 22.04上部署最新OpenVAS(附一键脚本)
轻量化OpenVAS部署指南Docker化方案与一键脚本实现在安全运维和渗透测试领域OpenVAS作为开源的漏洞评估系统长期占据着重要地位。然而传统的部署方式往往伴随着资源占用高、配置复杂等问题让不少安全从业者望而却步。本文将介绍一种基于Docker的轻量化部署方案帮助你在Ubuntu 22.04系统上快速搭建最新OpenVAS环境同时提供优化后的一键部署脚本。1. 为什么选择Docker部署OpenVASOpenVAS的传统部署方式主要有两种直接安装在Kali Linux系统上或者下载独立的OpenVAS镜像文件。这两种方式都存在明显的局限性资源占用高OpenVAS扫描引擎和漏洞数据库需要大量内存建议至少8GB和磁盘空间20GB以上依赖复杂传统安装涉及大量系统级依赖容易与其他服务冲突维护困难升级或卸载时可能影响系统稳定性相比之下Docker化部署具有以下优势特性传统部署Docker部署资源隔离差优秀安装复杂度高低系统影响大小升级维护困难简单可移植性差优秀提示Docker容器提供了进程隔离和资源限制能力即使OpenVAS崩溃也不会影响宿主机系统2. 环境准备与Docker安装在开始部署前我们需要确保系统满足以下基本要求Ubuntu 22.04 LTS其他基于Debian的系统也可参考至少4核CPU推荐8核8GB内存扫描大型网络建议16GB50GB可用磁盘空间稳定的网络连接2.1 安装Docker引擎首先更新系统并安装必要的依赖sudo apt update sudo apt upgrade -y sudo apt install -y apt-transport-https ca-certificates curl software-properties-common添加Docker官方GPG密钥和仓库curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null安装Docker引擎sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io验证安装是否成功sudo docker run hello-world2.2 配置Docker优化参数为了获得更好的性能建议调整以下Docker配置sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json EOF { exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOF重启Docker服务使配置生效sudo systemctl restart docker sudo systemctl enable docker3. OpenVAS容器部署实战目前社区维护的OpenVAS Docker镜像主要有以下几个选择mikesplain/openvas更新频繁社区活跃immauss/openvas包含最新漏洞数据库greenbone/openvas-scanner官方镜像功能较基础我们推荐使用immauss/openvas镜像它提供了完整的Greenbone漏洞管理功能。3.1 拉取并运行OpenVAS容器执行以下命令启动容器docker run -d \ --name openvas \ -p 443:443 \ -p 9390:9390 \ -v openvas_data:/var/lib/openvas/mgr/ \ -e OV_UPDATEyes \ -e PUBLIC_HOSTNAME$(hostname) \ --restart unless-stopped \ immauss/openvas参数说明-p 443:443映射HTTPS端口用于Web访问-p 9390:9390映射管理端口-v openvas_data:/var/lib/openvas/mgr/持久化存储漏洞数据-e OV_UPDATEyes启动时自动更新漏洞数据库--restart unless-stopped容器意外退出时自动重启3.2 初始配置与密码修改容器首次启动需要较长时间30分钟以上来初始化漏洞数据库。可以通过以下命令查看进度docker logs -f openvas当看到Update finished日志时表示初始化完成。此时需要修改默认管理员密码docker exec -it openvas gvmd --useradmin --new-passwordyour_secure_password注意请将your_secure_password替换为强密码建议包含大小写字母、数字和特殊字符4. 高级配置与优化4.1 资源限制与调优为防止OpenVAS占用过多系统资源可以为容器设置资源限制docker update --memory 8G --memory-swap 10G --cpus 4 openvas推荐配置小型网络扫描4核CPU8GB内存中型网络扫描8核CPU16GB内存大型网络扫描16核CPU32GB内存4.2 定时更新漏洞数据库OpenVAS的有效性依赖于最新的漏洞数据库。建议设置每日自动更新docker exec openvas bash -c echo 0 3 * * * root /usr/bin/update-openvas /etc/cron.d/openvas-update4.3 配置HTTPS证书为增强安全性建议替换自签名证书docker cp your_cert.crt openvas:/run/var/lib/gvm/CA/servercert.pem docker cp your_key.key openvas:/run/var/lib/gvm/private/CA/serverkey.pem docker restart openvas5. 一键部署脚本实现为简化部署流程我们准备了以下一键部署脚本#!/bin/bash # 检查是否为root用户 if [ $(id -u) -ne 0 ]; then echo 请使用root用户运行此脚本 exit 1 fi # 安装Docker if ! command -v docker /dev/null; then echo 正在安装Docker... apt update apt install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null apt update apt install -y docker-ce docker-ce-cli containerd.io fi # 配置Docker优化参数 mkdir -p /etc/docker cat /etc/docker/daemon.json EOF { exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOF systemctl restart docker systemctl enable docker # 部署OpenVAS容器 echo 正在部署OpenVAS容器... docker run -d \ --name openvas \ -p 443:443 \ -p 9390:9390 \ -v openvas_data:/var/lib/openvas/mgr/ \ -e OV_UPDATEyes \ -e PUBLIC_HOSTNAME$(hostname) \ --restart unless-stopped \ immauss/openvas # 等待初始化完成 echo 等待OpenVAS初始化完成可能需要30分钟以上... while ! docker logs openvas 21 | grep -q Update finished; do sleep 30 echo 仍在初始化中请耐心等待... done # 设置管理员密码 read -s -p 请输入管理员密码: password echo docker exec -it openvas gvmd --useradmin --new-password$password echo OpenVAS部署完成访问地址https://$(hostname -I | awk {print $1})使用说明将脚本保存为deploy_openvas.sh添加执行权限chmod x deploy_openvas.sh运行脚本./deploy_openvas.sh6. 常见问题排查6.1 容器启动失败如果容器无法启动首先检查日志docker logs openvas常见错误及解决方案端口冲突确保443和9390端口未被占用磁盘空间不足至少需要50GB可用空间内存不足增加系统内存或调整容器内存限制6.2 扫描速度慢提高扫描速度的方法增加容器分配的CPU核心数在/etc/openvas/openvas.conf中调整并发扫描数选择针对性的扫描策略而非全量扫描6.3 Web界面无法访问检查步骤确认容器正在运行docker ps检查端口映射docker port openvas验证防火墙设置ufw status7. 安全最佳实践为确保OpenVAS环境的安全性建议遵循以下原则定期更新每周至少更新一次漏洞数据库访问控制限制访问Web界面的IP范围密码策略使用强密码并定期更换日志监控设置日志轮转和异常告警备份策略定期备份openvas_data卷# 备份示例 docker stop openvas tar -czvf openvas_backup_$(date %Y%m%d).tar.gz /var/lib/docker/volumes/openvas_data docker start openvas在实际项目中我发现Docker化部署显著降低了维护成本。特别是在需要频繁创建和销毁测试环境时容器方案比传统虚拟机节省了约70%的资源开销。

更多文章