关于 implementing-rapid7-insightvm-for-scanning
这是面向安全团队的 Rapid7 InsightVM 扫描实施指南,涵盖控制台、扫描引擎、扫描模板、凭据扫描和 Insight Agent。内容还涉及分段部署、修复工作流与 API 自动化。
主要功能
- 01部署 Security Console 与 Scan Engine
- 02配置资产发现和扫描模板
- 03设置凭据扫描
- 04部署 Insight Agent
- 05配置修复工作流与 API 自动化
适用场景
- 01规划 InsightVM 企业部署
- 02为不同网段配置扫描
- 03评估漫游终端漏洞
- 04自动化漏洞管理任务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-rapid7-insightvm-for-scanning安装后在 Claude Code 中输入/implementing-rapid7-insightvm-for-scanning确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
为扫描实施 Rapid7 InsightVM
概述
Rapid7 InsightVM(原 Nexpose)是一个企业级漏洞管理平台,它通过 Security Console 和 Scan Engine 进行本地扫描,并结合 Insight Platform 提供基于云的分析。InsightVM 利用 Rapid7 的漏洞研究库、Metasploit 漏洞利用知识、全球攻击者行为数据、全网扫描遥测以及实时报告,提供全面的漏洞可见性。本技能涵盖部署 Security Console、配置 Scan Engine、设置扫描模板、凭证扫描,以及与 Insight Agent 集成以实现持续评估。
何时使用
- 在环境中部署或配置“为扫描实施 rapid7 insightvm”能力时
- 在建立符合合规要求的安全控制措施时
- 在构建或改进该领域的安全架构时
- 在开展需要此实施的安全评估时
前提条件
- 满足最低要求的服务器: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 Engine
分布式扫描组件,它们:
- 对目标资产执行主动网络扫描
- 可跨网段部署,以适应分段环境
- 在 Docker Hub 上以容器镜像形式提供,便于灵活部署
- 将结果报告回 Security Console
Insight Agent
轻量级端点 Agent,提供:
- 无需网络扫描的持续漏洞评估
- 对远程/漫游端点的评估
- 作为基于引擎扫描的补充,实现全面覆盖
- 实时资产清单更新
扫描模板类型
| 模板 | 使用场景 | 深度 |
|---|---|---|
| Discovery Scan | 资产清单、主机枚举 | 低 |
| Full Audit without Web Spider | 标准漏洞评估 | 中 |
| Full Audit Enhanced Logging | 带详细日志的深度评估 | 高 |
| HIPAA Compliance | 医疗保健法规合规 | 高 |
| PCI ASV Audit | PCI DSS 外部扫描要求 | 高 |
| CIS Policy Compliance | 配置基准测试 | 中 |
| Web Spider | Web 应用程序发现与评估 | 中 |
工作流
第 1 步:安装 Security Console
# Download InsightVM installer (Linux)
chmod +x Rapid7Setup-Linux64.bin
./Rapid7Setup-Linux64.bin -c
# Verify service is running
systemctl status nexposeconsole.service
# Access web interface
# https://<console-ip>:3780
初始配置:
- 访问 https://localhost:3780
- 使用许可证密钥完成设置向导
- 配置数据库设置(推荐使用嵌入式 PostgreSQL)
- 设置管理员凭证
- 激活 Insight Platform 连接以进行云分析
第 2 步:部署分布式 Scan Engine
# Install Scan Engine on remote server
./Rapid7Setup-Linux64.bin -c
# During installation, select "Scan Engine only"
# Pair with Security Console using shared secret
# Docker-based Scan Engine deployment
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 中配对引擎:
- Administration > Scan Engines > New Scan Engine
- 输入引擎主机名/IP 和端口(默认 40814)
- 使用共享密钥进行身份验证
- 验证连接状态显示为“Active”
第 3 步:配置资产发现站点
Site Configuration:
Name: Production-Network
Scan Engine: Primary-Engine-01
Scan Template: Full Audit without Web Spider
Included Assets:
- 10.0.0.0/8 (Internal network)
- 172.16.0.0/12 (DMZ network)
Excluded Assets:
- 10.0.0.1 (Core router - fragile)
- 10.0.100.0/24 (ICS/SCADA segment)
Schedule:
Frequency: Weekly
Day: Sunday
Time: 02:00 AM
Max Duration: 8 hours
第 4 步:配置凭证扫描
Windows 凭证(WMI)
Credential Type: Microsoft Windows/Samba (SMB/CIFS)
Domain: CORP.EXAMPLE.COM
Username: svc_insightvm_scan
Password: <service-account-password>
Authentication: NTLM
Privilege Elevation:
Type: None (use domain admin or local admin)
Linux/Unix 凭证(SSH)
Credential Type: Secure Shell (SSH)
Username: insightvm_scan
Authentication: SSH Key (preferred) or Password
SSH Private Key: /opt/rapid7/.ssh/scan_key
Port: 22
Privilege Elevation:
Type: sudo
sudo User: root
sudo Password: <sudo-password>
数据库凭证
Credential Type: Microsoft SQL Server
Instance: MSSQLSERVER
Domain: CORP
Username: insightvm_db_scan
Authentication: Windows Authentication
Credential Type: Oracle
Port: 1521
SID: ORCL
Username: insightvm_scan
第 5 步:配置扫描模板
用于平衡扫描的自定义扫描模板:
Template Name: Enterprise-Standard-Scan
Service Discovery:
TCP Ports: Well-known (1-1024) + common services
UDP Ports: DNS(53), SNMP(161), NTP(123), TFTP(69)
Method: SYN scan (stealth)
Vulnerability Checks:
Safe checks only: Enabled
Skip potential: Disabled
Web spidering: Disabled (separate template)
Policy checks: Enabled (CIS benchmarks)
Performance:
Max parallel assets: 10
Max requests per second: 100
Timeout per asset: 30 minutes
Retries: 2
第 6 步:设置 Insight Agent 部署
# Windows Agent Installation (via GPO or SCCM)
msiexec /i agentInstaller-x86_64.msi /quiet /norestart `
CUSTOMTOKEN=<platform-token> `
CUSTOMCONFIG=<agent-config>
# Linux Agent Installation
chmod +x agent_installer.sh
./agent_installer.sh install_start \
--token <platform-token>
# Verify agent connectivity
# Check InsightVM console: Assets > Agent Management
第 7 步:配置修复工作流
Remediation Project:
Name: Q1-2025-Critical-Remediation
Scope:
Severity: Critical + High
CVSS Score: >= 7.0
Assets: Production-Network site
Assignment:
Team: Infrastructure-Ops
Due Date: 2025-03-31
Tracking:
Auto-verify: Enabled (re-scan on next scheduled scan)
Notification: Email on overdue items
Escalation: Manager notification at 75% SLA
第 8 步:用于自动化的 API 集成
import requests
import json
class InsightVMClient:
"""Rapid7 InsightVM API v3 client for automation."""
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 = not os.environ.get("SKIP_TLS_VERIFY", "").lower() == "true" # Set SKIP_TLS_VERIFY=true for self-signed certs in lab environments
def get_sites(self):
"""List all configured scan sites."""
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):
"""Trigger an ad-hoc scan for a site."""
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):
"""Retrieve vulnerabilities for a specific asset."""
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):
"""Check the status of a running scan."""
response = self.session.get(f"{self.base_url}/scans/{scan_id}")
response.raise_for_status()
return response.json()
def create_remediation_project(self, name, description, assets, vulns):
"""Create a remediation tracking project."""
payload = {
"name": name,
"description": description,
"assets": {"includedTargets": {"addresses": assets}},
"vulnerabilities": {"includedVulnerabilities": vulns}
}
response = self.session.post(
f"{self.base_url}/remediations",
json=payload
)
response.raise_for_status()
return response.json()
# Usage
client = InsightVMClient("https://insightvm-console:3780", "api-key-here")
sites = client.get_sites()
for site in sites:
print(f"Site: {site['name']} - Assets: {site.get('assets', 0)}")
最佳实践
- 将扫描引擎部署在靠近目标网络的位置,以尽量减少穿越防火墙的扫描流量
- 对于网络扫描无法始终触达的移动笔记本电脑和远程工作人员,使用 Insight Agent
- 结合基于 Agent 和基于引擎的扫描,以获得最准确的漏洞视图
- 在业务关键时段配置扫描停用窗口,以避免影响运营
- 在完整扫描之前使用凭据测试,以验证身份验证是否正常工作
- 启用安全检查,以防止对生产系统造成意外的拒绝服务
- 按网段、业务单元或合规范围划分扫描站点
- 利用基于标签的资产组进行动态报告和修复跟踪
常见陷阱
- 在业务时段运行完整扫描,导致网络拥塞或服务降级
- 仅使用未经身份验证的扫描,遗漏 60-80% 的本地漏洞
- 未将脆弱设备(打印机、ICS/SCADA、医疗设备)从激进的扫描模板中排除
- 未能跨网段分布扫描引擎,导致防火墙瓶颈
- 忽视扫描引擎资源利用率,导致扫描不完整
- 未配置扫描持续时间限制,使失控的扫描无限期消耗资源
相关技能
- performing-agentless-vulnerability-scanning
- building-vulnerability-data-pipeline-with-api
- implementing-wazuh-for-vulnerability-detection
- performing-remediation-validation-scanning
评论
支持 Markdown