implementing-rapid7-insightvm-for-scanning について
Rapid7 InsightVM を導入するセキュリティチーム向けの実践ガイドです。Security Console、分散 Scan Engine、スキャンテンプレート、認証スキャン、Insight Agent、修復ワークフロー、API 自動化を扱います。
主な機能
- 01Security Console と Scan Engine の導入
- 02資産検出とスキャンテンプレートの設定
- 03認証スキャンの構成
- 04Insight Agent の展開
- 05修復ワークフローと API 自動化の設定
活用シーン
- 01InsightVM 導入の計画
- 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
以下の機能を提供する軽量のエンドポイントエージェントです。
- ネットワークスキャンを行わずに継続的な脆弱性評価を実行します
- リモートおよびローミング中のエンドポイントを評価します
- 包括的なカバレッジのために、エンジンベースのスキャンを補完します
- リアルタイムで資産インベントリを更新します
スキャンテンプレートの種類
| テンプレート | 用途 | 深度 |
|---|---|---|
| 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
Step 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
Step 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)}")
ベストプラクティス
- ファイアウォールを通過するスキャントラフィックを最小化するため、スキャンエンジンは対象ネットワークの近くに配置してください
- ネットワークスキャンで常に到達できるとは限らないローミングノートPCやリモートワーカーには、Insight Agentを使用してください
- 最も正確な脆弱性の全体像を得るため、エージェントベースとエンジンベースのスキャンを組み合わせてください
- 業務上重要な時間帯の運用への影響を避けるため、スキャンのブラックアウトウィンドウを設定してください
- 完全スキャンの前に認証情報テストを実行し、認証が機能することを確認してください
- 本番システムへの誤ったサービス拒否を防ぐため、安全チェックを有効にしてください
- ネットワークセグメント、事業部門、またはコンプライアンスの範囲ごとにスキャンサイトを分けてください
- 動的なレポート作成とリメディエーションの追跡のため、タグベースのアセットグループを活用してください
よくある落とし穴
- 業務時間中に完全スキャンを実行し、ネットワークの輻輳やサービスの低下を引き起こすこと
- 認証なしスキャンのみを使用し、ローカルの脆弱性の60〜80%を見逃すこと
- 過激なスキャンテンプレートから、脆弱な機器(プリンター、ICS/SCADA、医療機器)を除外していないこと
- スキャンエンジンをネットワークセグメント間に分散配置せず、ファイアウォールがボトルネックになること
- スキャンエンジンのリソース使用率を無視し、スキャンが不完全に終わること
- スキャン時間の上限を設定していないため、暴走したスキャンが無期限にリソースを消費すること
関連スキル
- performing-agentless-vulnerability-scanning
- building-vulnerability-data-pipeline-with-api
- implementing-wazuh-for-vulnerability-detection
- performing-remediation-validation-scanning