L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

implementing-rapid7-insightvm-for-scanning

implementing-rapid7-insightvm-for-scanning

部署和配置 Rapid7 InsightVM 安全控制台(Security Console)和扫描引擎(Scan Engines),在企业环境中执行认证和非认证漏洞扫描。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: implementing-rapid7-insightvm-for-scanning description: 部署和配置 Rapid7 InsightVM 安全控制台(Security Console)和扫描引擎(Scan Engines),在企业环境中执行认证和非认证漏洞扫描。 domain: cybersecurity subdomain: vulnerability-management tags: [rapid7, insightvm, vulnerability-scanning, nexpose, scan-engine, asset-discovery, authenticated-scanning] version: "1.0" author: mahipal license: Apache-2.0

使用 Rapid7 InsightVM 实施扫描

概述

Rapid7 InsightVM(前身为 Nexpose)是企业级漏洞管理平台,通过 Security Console 和 Scan Engines 进行本地扫描,并借助 Insight Platform 提供基于云的分析。InsightVM 利用 Rapid7 漏洞研究库、Metasploit 漏洞利用知识、全球攻击者行为数据、全网扫描遥测数据和实时报告,提供全面的漏洞可见性。本技能涵盖部署 Security Console、配置 Scan Engines、设置扫描模板、认证扫描,以及与 Insight Agent 集成实现持续评估。

前置条件

  • 满足最低配置的服务器:16 GB RAM、4 CPU 核心、500 GB 磁盘(Security Console)
  • Scan Engine:8 GB RAM、4 CPU 核心、100 GB 磁盘
  • 可访问目标子网的网络连接(端口因扫描类型而异)
  • 用于认证扫描的管理员凭据(SSH、WMI、SNMP)
  • Rapid7 InsightVM 许可证和 Insight Platform 账户
  • PostgreSQL 数据库(与 Security Console 捆绑)

核心概念

InsightVM 架构组件

Security Console(安全控制台)

核心管理服务器,功能包括:

  • 托管基于 Web 的管理界面(默认端口 3780)
  • 在嵌入式 PostgreSQL 数据库中存储扫描结果
  • 管理 Scan Engine 部署和扫描计划
  • 生成报告和仪表板
  • 连接 Rapid7 Insight Platform 进行云端分析

注意:Security Console 不支持容器化环境。

Scan Engines(扫描引擎)

分布式扫描组件,功能包括:

  • 对目标资产执行主动网络扫描
  • 可跨网络段部署用于隔离环境
  • 支持 Docker Hub 上的容器镜像灵活部署
  • 将结果回传到 Security Console

Insight Agent(洞察代理)

轻量级端点代理,提供:

  • 无需网络扫描的持续漏洞评估
  • 对远程/漫游端点的评估
  • 补充基于引擎的扫描实现全面覆盖
  • 实时资产清单更新

扫描模板类型

模板用例深度
发现扫描资产清单、主机枚举低
完整审计(不含 Web Spider)标准漏洞评估中
完整审计(增强日志)详细评估并记录详细日志高
HIPAA 合规医疗监管合规高
PCI ASV 审计PCI DSS 外部扫描要求高
CIS 策略合规配置基准检查中
Web SpiderWeb 应用发现和评估中

实施步骤

步骤 1:安装 Security Console

# 下载 InsightVM 安装程序(Linux)
chmod +x Rapid7Setup-Linux64.bin
./Rapid7Setup-Linux64.bin -c

# 验证服务运行状态
systemctl status nexposeconsole.service

# 访问 Web 界面
# https://<console-ip>:3780

初始配置:

  1. 打开 https://localhost:3780
  2. 使用许可证密钥完成设置向导
  3. 配置数据库设置(推荐内嵌 PostgreSQL)
  4. 设置管理员凭据
  5. 激活 Insight Platform 连接以使用云端分析

步骤 2:部署分布式 Scan Engines

# 在远程服务器上安装 Scan Engine
./Rapid7Setup-Linux64.bin -c

# 安装时选择"仅 Scan Engine"
# 使用共享密钥与 Security Console 配对

# 基于 Docker 的 Scan Engine 部署
docker pull rapid7/insightvm-scan-engine
docker run -d \
  --name scan-engine \
  -p 40814:40814 \
  -e CONSOLE_HOST=<console-ip> \
  -e CONSOLE_PORT=3780 \
  -e ENGINE_NAME=DMZ-Scanner \
  -e SHARED_SECRET=<pairing-secret> \
  rapid7/insightvm-scan-engine

在 Security Console 中配对引擎:

  1. 管理 > Scan Engines > 新建 Scan Engine
  2. 输入引擎主机名/IP 和端口(默认 40814)
  3. 使用共享密钥进行认证
  4. 验证连接状态显示"Active"

步骤 3:配置资产发现站点

站点配置:
  名称:          Production-Network
  Scan Engine:   Primary-Engine-01
  扫描模板:      完整审计(不含 Web Spider)

  包含的资产:
    - 10.0.0.0/8     (内部网络)
    - 172.16.0.0/12   (DMZ 网络)

  排除的资产:
    - 10.0.0.1        (核心路由器 - 脆弱设备)
    - 10.0.100.0/24   (ICS/SCADA 网段)

  计划:
    频率:    每周
    日期:    周日
    时间:    凌晨 02:00
    最大持续时间:8 小时

步骤 4:配置认证扫描

Windows 凭据(WMI)

凭据类型:    Microsoft Windows/Samba (SMB/CIFS)
域:          CORP.EXAMPLE.COM
用户名:      svc_insightvm_scan
密码:        <服务账户密码>
认证:        NTLM

权限提升:
  类型:  无(使用域管理员或本地管理员)

Linux/Unix 凭据(SSH)

凭据类型:    Secure Shell (SSH)
用户名:      insightvm_scan
认证:        SSH 密钥(推荐)或密码
SSH 私钥:    /opt/rapid7/.ssh/scan_key
端口:        22

权限提升:
  类型:      sudo
  sudo 用户:  root
  sudo 密码:  <sudo 密码>

步骤 5:配置扫描模板

用于均衡扫描的自定义扫描模板:

模板名称:      Enterprise-Standard-Scan

服务发现:
  TCP 端口:    知名端口(1-1024)+ 常见服务
  UDP 端口:    DNS(53), SNMP(161), NTP(123), TFTP(69)
  方式:        SYN 扫描(隐蔽扫描)

漏洞检查:
  仅安全检查:  启用
  跳过潜在:    禁用
  Web 爬取:    禁用(使用单独模板)
  策略检查:    启用(CIS 基准)

性能:
  最大并行资产:   10
  最大每秒请求数:  100
  每资产超时:     30 分钟
  重试次数:       2

步骤 6:设置 Insight Agent 部署

# Windows Agent 安装(通过 GPO 或 SCCM)
msiexec /i agentInstaller-x86_64.msi /quiet /norestart `
  CUSTOMTOKEN=<platform-token> `
  CUSTOMCONFIG=<agent-config>

# Linux Agent 安装
chmod +x agent_installer.sh
./agent_installer.sh install_start \
  --token <platform-token>

# 验证代理连通性
# 检查 InsightVM 控制台:资产 > Agent Management

步骤 7:配置修复工作流

修复项目:
  名称:          Q1-2025-关键修复

  范围:
    严重程度:    关键 + 高
    CVSS 分数:   >= 7.0
    资产:        Production-Network 站点

  分配:
    团队:        基础设施运营
    截止日期:    2025-03-31

  跟踪:
    自动验证:    启用(在下次计划扫描时重新扫描)
    通知:        逾期项发送邮件
    升级:        SLA 75% 时通知管理者

步骤 8:API 集成自动化

import requests
import json

class InsightVMClient:
    """Rapid7 InsightVM API v3 自动化客户端。"""

    def __init__(self, console_url, api_key):
        self.base_url = f"{console_url}/api/3"
        self.session = requests.Session()
        self.session.headers.update({
            "Content-Type": "application/json",
            "Authorization": f"Bearer {api_key}"
        })
        self.session.verify = False  # 控制台使用自签名证书

    def get_sites(self):
        """列出所有已配置的扫描站点。"""
        response = self.session.get(f"{self.base_url}/sites")
        response.raise_for_status()
        return response.json().get("resources", [])

    def start_scan(self, site_id, engine_id=None, template_id=None):
        """触发站点的临时扫描。"""
        payload = {}
        if engine_id:
            payload["engineId"] = engine_id
        if template_id:
            payload["templateId"] = template_id

        response = self.session.post(
            f"{self.base_url}/sites/{site_id}/scans",
            json=payload
        )
        response.raise_for_status()
        return response.json()

    def get_asset_vulnerabilities(self, asset_id):
        """检索特定资产的漏洞。"""
        response = self.session.get(
            f"{self.base_url}/assets/{asset_id}/vulnerabilities"
        )
        response.raise_for_status()
        return response.json().get("resources", [])

    def get_scan_status(self, scan_id):
        """检查正在运行的扫描状态。"""
        response = self.session.get(f"{self.base_url}/scans/{scan_id}")
        response.raise_for_status()
        return response.json()


# 使用示例
client = InsightVMClient("https://insightvm-console:3780", "api-key-here")
sites = client.get_sites()
for site in sites:
    print(f"站点:{site['name']} - 资产:{site.get('assets', 0)}")

最佳实践

  1. 将 Scan Engines 部署在靠近目标网络的位置,以减少穿越防火墙的扫描流量
  2. 对漫游笔记本电脑和远程工作者使用 Insight Agents,这类设备不总是可以通过网络扫描访问
  3. 结合基于代理和基于引擎的扫描以获得最准确的漏洞视图
  4. 在业务关键时段配置扫描黑名单窗口以避免运营影响
  5. 在完整扫描前使用凭据测试验证认证是否有效
  6. 启用安全检查以防止在生产系统上意外造成拒绝服务
  7. 按网络段、业务部门或合规范围分隔扫描站点
  8. 利用基于标签的资产组实现动态报告和修复跟踪

常见陷阱

  • 在工作时间进行完整扫描导致网络拥塞或服务降级
  • 仅使用非认证扫描,遗漏 60-80% 的本地漏洞
  • 未将脆弱设备(打印机、ICS/SCADA、医疗设备)从激进扫描模板中排除
  • 未跨网络段分布 Scan Engines,导致防火墙瓶颈
  • 忽视扫描引擎资源利用率导致扫描不完整
  • 未配置扫描持续时间限制,允许失控扫描无限消耗资源

相关技能

  • performing-agentless-vulnerability-scanning
  • building-vulnerability-data-pipeline-with-api
  • implementing-wazuh-for-vulnerability-detection
  • performing-remediation-validation-scanning
Skills enregistrées