当前位置: 首页 > news >正文

告别虚拟机!5分钟在Docker里跑起OpenVAS漏洞扫描器(附最新镜像拉取命令)

5分钟容器化部署OpenVAS:轻量级漏洞扫描实战指南

在安全测试领域,快速搭建可复用的扫描环境一直是刚需。传统虚拟机部署OpenVAS往往需要消耗数GB内存和半小时以上的安装时间,而容器化方案将部署时间缩短到喝杯咖啡的功夫。本文将演示如何用Docker快速拉起最新OpenVAS镜像,并分享几个提升扫描效率的实用技巧。

1. 环境准备与镜像获取

OpenVAS的官方Docker镜像已更新至2024年稳定版,相比虚拟机方案节省90%的磁盘空间。执行以下命令获取最新镜像:

docker pull immauss/openvas:latest

这个社区维护的镜像已包含完整的Greenbone社区版组件,体积约2.4GB。建议配置至少4GB内存的Linux主机或云服务器,Windows/macOS用户需确保Docker Desktop已启用虚拟化支持。

常见问题排查:

  • 若拉取速度慢,可尝试--platform linux/amd64参数
  • 国内用户可配置镜像加速器
  • 首次启动需要下载漏洞数据库,约占用5GB额外空间

2. 一键启动容器服务

通过docker-compose实现服务编排是最佳实践。创建docker-compose.yml文件:

version: '3' services: openvas: image: immauss/openvas:latest ports: - "9392:9392" volumes: - openvas_data:/data environment: - HTTPS=true - PASSWORD=YourSecurePassword123 restart: unless-stopped volumes: openvas_data:

关键配置说明:

参数作用推荐值
portsWeb界面端口映射9392:9392
volumes漏洞数据库持久化命名volume
PASSWORD管理员初始密码12位以上混合字符
restart异常自动恢复unless-stopped

启动命令:

docker-compose up -d

3. 首次访问与基础配置

容器启动约3分钟后,访问https://localhost:9392(替换为实际服务器IP)会出现登录界面。使用默认凭证:

  • 用户名:admin
  • 密码:docker-compose.yml中设置的密码

安全建议:

  1. 立即修改默认密码
  2. Configuration > Users中创建独立测试账号
  3. 开启双因素认证(需安装TOTP插件)

首次登录后会看到仪表盘提示"Feed Update in Progress"。这是后台正在同步最新漏洞数据库,可通过命令查看进度:

docker exec -it openvas bash -c "greenbone-feed-sync"

4. 创建扫描任务实战

我们以扫描测试网站http://testphp.vulnweb.com为例:

  1. 新建目标
    Configuration > Targets中添加:

    • 名称:Demo_WebApp
    • 主机列表:testphp.vulnweb.com
    • 端口列表:80,443
  2. 配置扫描策略
    选择Scan Configs > Full and fast,关键参数:

    { "alive_test": "ICMP Ping", "port_range": "1-65535", "reverse_lookup": false }
  3. 启动扫描
    Scans > Tasks创建新任务:

    • 名称:Quick_Test
    • 扫描目标:选择刚创建的Demo_WebApp
    • 计划:立即执行

性能优化技巧:

  • 内网扫描可关闭Optimize Test选项
  • 对关键系统使用Full and very deep策略
  • 设置定时扫描自动生成对比报告

5. 报告解读与数据持久化

扫描完成后,在Reports页面可看到类似这样的漏洞分布:

风险等级数量典型漏洞
High3SQL注入, XSS
Medium7CSRF, 信息泄露
Low12配置不当

导出报告支持多种格式:

# 获取最新报告ID report_id=$(docker exec openvas gvm-cli --gmp-username admin --gmp-password $PASSWORD --xml "<get_reports/>" | grep -oP 'report id="\K[^"]+') # 导出PDF docker exec openvas gvm-cli --gmp-username admin --gmp-password $PASSWORD --xml "<get_reports report_id='$report_id' format='PDF'/>" > report.pdf

数据备份方案:

  1. 定期打包volume数据:
    docker run --rm -v openvas_data:/data -v $(pwd):/backup busybox tar czvf /backup/openvas_backup_$(date +%s).tar.gz /data
  2. 使用--volumes-from参数迁移到新主机
  3. 设置cronjob自动备份到云存储

6. CI/CD集成方案

将OpenVAS集成到自动化流程需要关注:

  1. API调用
    通过GMP协议实现任务触发:

    import gvm from gvm.protocols.gmp import Gmp connection = gvm.connections.TLSConnection(hostname='openvas') with Gmp(connection=connection) as gmp: gmp.authenticate('api_user', 's3cr3t') task_id = gmp.create_task(name='AutoScan', target_id='...') gmp.start_task(task_id)
  2. 质量门禁
    在Jenkins pipeline中添加检查:

    stage('Security Scan') { steps { sh '''docker run --network host --rm immauss/openvas \ gvm-cli --gmp-username ci_user --gmp-password $GVM_PASS \ --xml "<get_results task_id='${TASK_ID}' severity='>6.5'/>" | grep -q "result" && exit 1 || exit 0''' } }
  3. 资源控制
    限制扫描并发度和频率:

    # docker-compose.yml deploy: resources: limits: cpus: '2' memory: 4G

7. 性能调优与问题排查

常见性能瓶颈解决方案:

  • 内存不足
    修改扫描器配置:

    docker exec openvas gvm-cli --gmp-username admin --gmp-password $PASSWORD --xml ' <modify_scanner scanner_id="08b69003-5fc2-4037-a479-93b440211c73"> <preference> <name>max_checks</name> <value>10</value> </preference> <preference> <name>max_hosts</name> <value>5</value> </preference> </modify_scanner>'
  • 扫描速度慢
    调整NVT线程数:

    UPDATE preferences SET value = '20' WHERE name = 'max_checks';
  • 数据库不同步
    强制重建feed:

    docker exec openvas rm -rf /data/feed-data/* docker restart openvas

监控容器状态命令:

watch -n 5 'docker stats --no-stream openvas && docker exec openvas gvm-cli --gmp-username admin --gmp-password $PASSWORD --xml "<get_tasks/>"'

实际项目中遇到过feed更新中断的情况,通过增加docker-compose.yml中的超时参数解决:

environment: - GVMD_FEED_UPDATE_TIMEOUT=3600
http://www.rkmt.cn/news/1430521.html

相关文章:

  • 在openEuler 20.03 LTS SP3上编译内核踩坑记:FT2000+平台启动卡在EFI stub的排查与解决
  • Linux系统管理员必看:安全审计后如何优雅地清理history与日志,避免误操作
  • AutoDL远程桌面连接保姆级避坑指南:从VNC Viewer配置到SSH隧道稳定维护
  • 世界模型进入实时交互纪元?:Sora 2在3D动态场景生成中实现17ms端到端延迟的关键5步优化
  • JGB37-520(12V 带编码器)电机 详细解析
  • 2026年树洞聊天平台隐私实测:游戏中的心事同样要安全保护 - 时时资讯
  • 软考 系统架构设计师历年真题集萃(269)
  • Windows 11的WLAN图标不见了?别急着重装系统,试试这个设备管理器里的隐藏选项
  • 别再只会点灯了!用STM32F407的PWM驱动舵机,做个会动的机械臂原型(附完整代码)
  • VAD不止于识别:聊聊语音端点检测在降噪、编码和IoT设备里的那些事儿
  • 基于Arduino与Dynamixel的智能遥控拖船:集成4DOF机械臂与FPV的机器人平台实践
  • 向量数据库响应延迟飙至8s?不是QPS过高——揭秘Milvus/Weaviate底层Segment分裂引发的隐性阻塞(仅头部12家AI平台知晓)
  • 终极MapleStory游戏资源编辑器:5步轻松打造专属游戏世界
  • JMeter汇总报告保姆级解读:从‘样本’到‘吞吐量’,每个参数到底在说什么?
  • 185、运动控制中的行业应用:AGV与移动机器人
  • 技术人如何高效处理信息流:从AI、比特币到StoreKit 2的实践思考
  • DouyinLiveWebFetcher:抖音直播数据采集的终极解决方案
  • 数据库原理选择题精选
  • 别再只改SE11了!ABAP搜索帮助增强的完整流程:从创建、分配到调试的避坑指南
  • Linux动态链接库缺失导致FlexNet许可证服务器启动失败的解决方案
  • 告别环境报错:用Docker一键部署MMDetection3D开发环境(支持PyTorch 1.10.1 + CUDA 11.3)
  • Gemini多模态视频分析落地全链路(企业级部署避坑手册)
  • 好用还专业!2026年最值得体验的专业降AI率工具
  • 告别ViT的‘暴力计算’:手把手教你用PyTorch实现MViT的池化注意力(附代码)
  • 从零搭建一个私有化单点登录中心:基于Docker部署Casdoor全记录(含MySQL配置与HTTPS证书)
  • 告别复制粘贴!用Automa插件把网页表格数据一键存入MySQL(附完整Java后端代码)
  • League Akari:英雄联盟玩家的3大智能助手完整指南
  • Java 核心基础进阶:从字符串操作到容器框架的深度解析
  • 别再只用GetX做状态管理了!GetConnect+GetView+Bindings打造企业级Flutter网络请求层
  • 解密SPT-AKI Profile Editor:离线塔科夫存档深度定制实战秘籍