implementing-rapid7-insightvm-for-scanning — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited implementing-rapid7-insightvm-for-scanning (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Rapid7 InsightVM (formerly Nexpose) is an enterprise vulnerability management platform that combines on-premises scanning via Security Console and Scan Engines with cloud-based analytics through the Insight Platform. InsightVM leverages Rapid7's vulnerability research library, Metasploit exploit knowledge, global attacker behavior data, internet-wide scanning telemetry, and real-time reporting to provide comprehensive vulnerability visibility. This skill covers deploying the Security Console, configuring Scan Engines, setting up scan templates, credentialed scanning, and integrating with the Insight Agent for continuous assessment.
#### Security Console The central management server that:
Note: Security Console is NOT supported in containerized environments.
#### Scan Engines Distributed scanning components that:
#### Insight Agent Lightweight endpoint agent providing:
| Template | Use Case | Depth |
|---|---|---|
| Discovery Scan | Asset inventory, host enumeration | Low |
| Full Audit without Web Spider | Standard vulnerability assessment | Medium |
| Full Audit Enhanced Logging | Deep assessment with verbose logging | High |
| HIPAA Compliance | Healthcare regulatory compliance | High |
| PCI ASV Audit | PCI DSS external scanning requirement | High |
| CIS Policy Compliance | Configuration benchmarking | Medium |
| Web Spider | Web application discovery and assessment | Medium |
# 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>:3780Initial configuration:
# 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-enginePair engines in Security Console:
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#### Windows Credentials (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 Credentials (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>#### Database Credentials
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_scanCustom scan template for balanced scanning:
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# 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 ManagementRemediation 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% SLAimport 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 = False # Self-signed cert on console
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)}")~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.