
ローカルホスト型・エアギャップ対応のVAPTプラットフォームで、8つの並列スキャンモジュールを実行し、CVSS v3.1に基づいて発見事項を決定的にスコアリングし、ローカルLLMによるAI生成の修復アドバイス(オプション)付きのPDFレポートを生成します。
Built by maverickaayush.
ローカルでホストされ、エアギャップ環境でも動作するVAPTツール:認可済みのターゲットドメインを指定すると、8つのスキャンモジュールを並列実行し、すべての発見事項を決定的にスコアリング(CVSS v3.1)し、オプションでローカルLLMによる平易な英語の説明を追加し、PDFレポートとライブWebダッシュボードを生成します。外部API呼び出しは一切なし - すべてがお客様自身のネットワーク上で動作します。
ONUSの2つの実行方法:
- セルフホスト(このリポジトリ):
docker compose up→ ドメインを入力 → 認可チェックボックスにチェック → スキャン。アカウント登録もサインインもメール認証も不要 - シングルオペレーター運用を前提としており、以下のすべてはこの経路を対象にしています。- ホスト型: マネージドインスタンスが tryonus.tech で稼働中です。プロダクション専用機能(アカウント / OAuthサインイン、スキャンキュー、ユーザーごとの履歴)が追加されており、これらはこのリポジトリではデフォルトでオフになっているため、セルフホストはシンプルなままです。セルフホストとホスト型の比較 を参照してください。
| セルフホスト(このリポジトリ) | ホスト型(tryonus.tech) | |
|---|---|---|
| セットアップ | docker compose up | 不要 - サイトを開くだけ |
| サインイン | なし - シングルオペレーター | アカウント / Google / GitHub OAuth |
| スキャンフロー | ドメイン → 認可チェックボックス → スキャン | サインイン後に同じ |
| 追加機能 | - | スキャンキュー、ユーザーごとの履歴、ホスト型メール |
| 実行環境 | お客様自身のネットワーク、エアギャップ | マネージドクラウド |
セルフホストのデフォルト経路は意図的にシンプルになっています:サインアップもメール認証もOAuthも不要。ホスト型専用機能(認証、スキャンキュー)はデフォルトでオフになる設定フラグの背後にあり(REQUIRE_AUTH=false、HOSTED_QUEUE_ENABLED=false。設定 を参照)、docker-compose.yml には設定されていません - つまり、ONUSをローカルで実行してもログインの背後に置かれることはありません。ゼロセットアップをお好みですか?tryonus.tech のホスト型サイトをご利用ください。
| 新規スキャン | ライブスキャン状況 |
|---|---|
![]() | ![]() |
| レポートダッシュボード | スキャン発見 |
|---|---|
![]() | ![]() |
domain → [recon | webscan | ssl_tls | headers | owasp | tech_fingerprint | nuclei | enumeration] (parallel, Celery)
→ any module failed/timed out? → pause for operator retry/continue/cancel
→ aggregator (dedup + OWASP-map + sort)
→ confidence verification (passive re-observation)
→ deterministic CVSS scoring
→ Ollama (Qwen 2.5 7B) AI analysis
→ WeasyPrint PDF + PostgreSQL
→ dashboard / PDF download
6つのレイヤー:Next.jsフロントエンド → FastAPI → Celery/Redis → 8つの並列スキャンモジュール → Ollama(Qwen 2.5 7B)→ WeasyPrint PDF + ダッシュボード。詳細は ARCHITECTURE.md(スキーマ、契約、ガードレール)と docs/QUICK_REF.md(一般的な変更のためのクイックリファレンス)を参照してください。
mem_limit: 4g)、Postgres、Redis、API、ワーカー、フロントエンドが並行して動作します。上記の前提条件を参照:約8GBのディスクと約6GBのRAMが必要で、初回ビルドには10〜15分かかります。
cp .env.example .env
cp backend/subfinder-config/provider-config.yaml.example backend/subfinder-config/provider-config.yaml
docker compose up -d
docker compose ps # wait for zap to report healthy (~2 min)
http://localhost:3000 を開き、ドメインを入力し、認可チェックボックスにチェックを入れて、スキャンを開始します。
サインインもサインアップもメール認証も不要。 セルフホスト版ONUSはデフォルトでシングルオペレーター用です - ダッシュボードを開いてからスキャンするまでの間にアカウント手順はありません。
Ollamaをインストールしなくても動作します。 CVSS/深刻度/優先度のスコアリングは常に決定的です(analysis/cvss_scorer.py)- Ollamaが動作していない場合、発見事項にはAI生成の説明文ではなくルールベースの説明テンプレートが適用されます。これを有効にするには、下記の「オプション:AI生成の説明文を有効にする」を参照してください。
このツールの実行にAPIキーは一切不要です。 ラップされているすべてのスキャンツール(nmap、ZAP、Nikto、testssl.sh、Nuclei、Amass、Naabu、httpx、WhatWeb、WAFW00F、FFUF)とOllama自体が、キーなしで動作します。上記のsubfinder設定コピー手順が唯一の任意の例外です - 空のテンプレートのままでも問題なく、subfinderはフリー/パブリックソースのみで実行されます。サブドメイン列挙を強化するには、開始前にそのファイルに最大2つの無料ティアキーを追加できます:GitHubパーソナルアクセストークンと ProjectDiscovery Chaos APIキー - provider-config.yaml.example 内のコメントを参照してください。
Ollamaはホスト上でネイティブに(Docker内ではなく)実行されるため、ホストのGPUを直接使用できます。コンテナは host.docker.internal を介して接続します。
ollama pull qwen2.5:7b127.0.0.1 のみにバインドされており、Dockerのブリッジネットワークからは到達できません):
sudo systemctl edit ollama
[Service] セクションに追加:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
保存してから:
sudo systemctl daemon-reload && sudo systemctl restart ollama
注意:これによりOllamaはDockerだけでなくローカルネットワークからも到達可能になります - 個人用マシンでは問題ありませんが、共有マシンではファイアウォールルールを推奨します。curl http://localhost:11434/api/tagsdocker compose restart backend workercomposeファイルには、独自の認可済みターゲットを用意しなくてもスキャナーを試せるように、意図的に脆弱な12の練習用アプリ(Juice Shop、DVWA、bWAPP、Mutillidae、NodeGoat、ModSecurity WAFの背後にあるDVWP/WordPress、Metasploitable2、WebGoat)も定義されています。これらはComposeプロファイルの背後にあり、デフォルトではビルド/起動されません:
docker compose --profile targets up -d
警告:これらは意図的に脆弱で、中には実際にバックドアが仕込まれたサービスもあります(Metasploitable2には稼働中のvsftpdバックドアが含まれています)。targets プロファイルは、インターネットや共有ネットワークから到達できないマシンでのみ実行してください - パブリッククラウドインスタンスや露出したホストでは絶対に実行しないでください。
これらのほとんどはプリビルドイメージから実行され、追加のものは不要です。nodegoat と dvwp-wordpress の2つは、このリポジトリにベンダリングされていないソースからビルドされるため、最初にクローンする必要があります:
git clone https://github.com/OWASP/NodeGoat nodegoat-src
git clone https://github.com/vavkamil/dvwp dvwp-src
起動後の公開ポート:Juice Shop :3001、DVWA :8081、bWAPP :8083、Mutillidae :8084、NodeGoat :8085、DVWP(WAF経由、TLS):8444、WebGoat :8082。Metasploitable2はホストポートを公開しません(実際のバックドア付き/未認証のネットワークサービスを公開するため、Dockerの内部ネットワーク経由で backend/worker からのみ到達可能)。
.env(.env.example からコピー)で設定する環境変数: