| 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 Spider | Web 应用发现和评估 | 中 |
实施步骤
步骤 1:安装 Security Console
chmod +x Rapid7Setup-Linux64.bin
./Rapid7Setup-Linux64.bin -c
systemctl status nexposeconsole.service
初始配置:
- 打开 https://localhost:3780
- 使用许可证密钥完成设置向导
- 配置数据库设置(推荐内嵌 PostgreSQL)
- 设置管理员凭据
- 激活 Insight Platform 连接以使用云端分析
步骤 2:部署分布式 Scan Engines
./Rapid7Setup-Linux64.bin -c
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 中配对引擎:
- 管理 > Scan Engines > 新建 Scan Engine
- 输入引擎主机名/IP 和端口(默认 40814)
- 使用共享密钥进行认证
- 验证连接状态显示"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()
response.json()
():
response = .session.get(
)
response.raise_for_status()
response.json().get(, [])
():
response = .session.get()
response.raise_for_status()
response.json()
client = InsightVMClient(, )
sites = client.get_sites()
site sites:
()
最佳实践
- 将 Scan Engines 部署在靠近目标网络的位置,以减少穿越防火墙的扫描流量
- 对漫游笔记本电脑和远程工作者使用 Insight Agents,这类设备不总是可以通过网络扫描访问
- 结合基于代理和基于引擎的扫描以获得最准确的漏洞视图
- 在业务关键时段配置扫描黑名单窗口以避免运营影响
- 在完整扫描前使用凭据测试验证认证是否有效
- 启用安全检查以防止在生产系统上意外造成拒绝服务
- 按网络段、业务部门或合规范围分隔扫描站点
- 利用基于标签的资产组实现动态报告和修复跟踪
常见陷阱
- 在工作时间进行完整扫描导致网络拥塞或服务降级
- 仅使用非认证扫描,遗漏 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