Project

General

Profile

構築/作成 #3

Updated by Hideki Nakano about 2 months ago

## 関連 
 * [ChatGPT](https://chatgpt.com/g/g-p-694fe6cf6f548191a4bb6943ee6cc250/c/6a452635-d254-83ee-958f-48a0de7f1ae4) 

 ## 概要 

 自宅ネットインフラ2.0構想として、既存の小さなIaC基盤にLLMを組み込んだAI-SOC補助基盤を構築する。 

 主な方針は、LLMを検知エンジンではなくログ分析エンジンとして利用し、Suricata / VyOS / syslog / WireGuard / 将来Wazuh等の検知・収集ログを、N100による一次分析とCore i7 + A2000による深い推論に分けて処理することである。 

 また、ISP提供ルーター等のブラックボックス機器への依存を下げるため、Xeon E3マシンをVyOSベースのRouter兼IPSとして再構成する。 

 ## 背景 

 前回の技術発表では、VPS / Ansible / GitHub / Wiki.js / PostgreSQL / Suricata / OWASP ZAP等を用いて、壊れてもすぐ戻せる小さな自宅インフラを紹介した。 

 今回の続編では、この基盤にAIによるログ分析・推論・記録を追加する。 

 構想のきっかけは以下である。 

 - 極小・省エネ・効率化志向で、十数年前のCeleron 1037UをメインPCとして利用していた 
 - LLM活用への関心からRTX A2000 16GBを中古入手した 
 - A2000活用のためPC更新を検討したが、省エネ志向からN100を選択した結果、A2000の性能を活かし切れなかった 
 - Core i7-12700 + A2000 16GBをFirst LLM、余ったN100 32GBをSecond LLM / AI-SOC Liteとして役割分担する方針にした 
 - dnsmasqの複数脆弱性を契機に、ISP提供ルーターへの依存リスクを認識した 
 - Router / Firewall / NAT / VLAN / IPSの制御点を自分で持つため、Xeon E3をVyOS + Suricata構成へ変更する方針にした 

 ## 作業内容 

 - Xeon E3へVyOSを導入し、Router / Firewall / NAT / VLANを構成する 
 - Xeon E3上でSuricataを稼働させ、IDSから段階的にIPSへ移行する 
 - Raspberry Pi 4 + スマートHUBをSuricata Sensorとして構成し、Router兼IPS稼働までの監視役およびセカンダリIDSとして利用する 
 - N100 32GB上にAI-SOC Liteを構築する 
 - N100でSuricata EVE JSON、VyOS syslog、WireGuard status、DHCP lease、asset list等を収集・正規化する 
 - Python + jqでJSON/ログを正規化し、IP・端末・VLAN・時間窓で集約する 
 - SQLiteまたはPostgreSQLへ保存し、既知ノイズや重複を除去する 
 - severity / frequency / novelty / asset重要度を用いたスコアリングを実装する 
 - Ollama軽量モデルにJSON schema付きで一次分析・要約を依頼する 
 - Core i7-12700 + A2000 16GB上に深い推論用LLM環境を構築する 
 - DeepSeek-R1-Distill-Qwen-32B Q4およびQwen3-32B Q4を候補モデルとして導入する 
 - LiteLLM Proxy / Open WebUI / Vector DB等を必要に応じて構成する 
 - N100の一次分析結果をi7/A2000へエスカレーションする仕組みを設計する 
 - 重大アラートに対して、仮説、根拠、反証、確認コマンド、対応案、rollback案を生成するプロンプトを設計する 
 - Redmineへチケット草案を登録できる形式で出力する 
 - Wiki.js等のナレッジ基盤へ日次/週次レポートを保存する 
 - 初期段階では自動遮断は行わず、人間承認型の対応フローを構築する 
 - 成熟後、Lab等の限定セグメントで時間制限付きblockを検討する 

 ## 受け入れ条件 

 - [ ] Xeon E3上でVyOSによるRouter / Firewall / NAT / VLANが稼働している 
 - [ ] Xeon E3上でSuricataがIDSとして稼働し、EVE JSONを出力できる 
 - [ ] Raspberry Pi 4 + スマートHUBによるSuricata Sensorが稼働している 
 - [ ] N100上でSuricata EVE JSON、VyOS syslog、WireGuard status、DHCP lease、asset listを取り込める 
 - [ ] N100上でPython + jqによるログ正規化処理が動作する 
 - [ ] ログがSQLiteまたはPostgreSQLへ保存される 
 - [ ] severity / frequency / novelty / asset重要度によるスコアリングが実装されている 
 - [ ] N100上の軽量LLMが重要アラートTOP10、端末別サマリ、誤検知候補、確認コマンド案を出力できる 
 - [ ] Core i7-12700 + A2000上でDeepSeekまたはQwen 32B級モデルが動作する 
 - [ ] N100の一次分析結果をi7/A2000へ渡し、深い推論を実行できる 
 - [ ] 深い推論結果として、仮説、根拠、反証、確信度、確認コマンド、対応案、rollback案が出力される 
 - [ ] LLMが直接遮断を実行しない設計になっている 
 - [ ] Redmineチケット草案またはナレッジ記録用Markdownを生成できる 
 - [ ] RunbookまたはWiki.jsに構成・運用手順が記録されている 

 ## 実施手順 

 1. 現行構成の棚卸しを行う 
    - Xeon E3 
    - N100 32GB 
    - Core i7-12700 + A2000 16GB 
    - Celeron 1037UN 
    - Raspberry Pi 4 + スマートHUB 
    - VPS / Wiki.js / Redmine / GitHub 

 2. Xeon E3をVyOS Router兼IPSとして再構成する 
    - VyOS導入 
    - Router / Firewall / NAT / VLAN設定 
    - Suricata導入 
    - 初期はIDSモードで稼働 
    - IPS化は段階的に実施 

 3. Raspberry Pi 4 + スマートHUBをIDS Sensorとして構成する 
    - ミラーまたは監視対象ポートを定義 
    - Suricata Sensorを構築 
    - EVE JSON出力を確認 
    - 将来的にセカンダリIDSとして活用 

 4. N100にAI-SOC Liteを構築する 
    - Docker Composeを作成 
    - log-ingester(Python)を実装 
    - parser / jq処理を実装 
    - SQLiteまたはPostgreSQLを構成 
    - Ollama軽量モデルを導入 
    - cronまたはsystemd timerで定期実行する 

 5. 一次分析処理を実装する 
    - EVE JSON / syslog / WireGuard status / DHCP lease / asset listを取り込む 
    - JSON/ログを正規化する 
    - IP・端末・VLAN・時間窓で集約する 
    - 既知ノイズと重複を除去する 
    - score = severity + frequency + novelty + asset重要度 を計算する 
    - Ollama軽量LLMへJSON schema付きで要約依頼する 

 6. Core i7 + A2000に深い推論環境を構築する 
    - Ollamaまたはllama.cpp CUDAを導入 
    - LiteLLM Proxyを構成する 
    - Open WebUIを導入する 
    - 必要に応じてQdrant等のVector DBを導入する 
    - DeepSeek-R1-Distill-Qwen-32B Q4 / Qwen3-32B Q4を導入する 

 7. エスカレーション処理を設計する 
    - High severity 
    - 同一端末で複数検知 
    - 通常外の外向き通信 
    - EndpointログとNetworkログの一致 
    - novelty score高 
    上記条件に該当するイベントをi7/A2000へ渡す 

 8. 深い推論用プロンプトを設計する 
    - 仮説 
    - 根拠 
    - 反証 
    - 確信度 
    - 確認コマンド 
    - VyOS block案 
    - rollback案 
    - チケット草案 
    - ナレッジ用報告書 
    を固定形式で出力させる 

 9. Redmine / Wiki.js連携を行う 
    - 重要イベントをRedmineチケット草案化 
    - 日次/週次レポートをWiki.jsへ保存 
    - 判断根拠と対応履歴を記録する 

 10. 承認型レスポンスを導入する 
    - LLM出力は直接実行しない 
    - 人間が確認後にVyOS/Wazuh等で対処 
    - block案には対象、期限、影響範囲、rollbackを必ず含める 

 ## 確認方法 

 - VyOSで各VLANからインターネット接続、名前解決、NAT、Firewallの動作を確認する 
 - SuricataのEVE JSONにalertが出力されることを確認する 
 - Raspberry Pi 4 Sensorで監視対象通信を観測できることを確認する 
 - N100のlog-ingesterがEVE JSON / syslog / WireGuard status / DHCP lease / asset listを読み込めることを確認する 
 - 正規化済みログがDBへ保存されることを確認する 
 - 既知ノイズ除去および重複除去が想定通り動作することを確認する 
 - スコアリング結果が妥当な順序で重要イベントを抽出することを確認する 
 - N100軽量LLMがJSON summary / Markdown report / チケット草案を生成できることを確認する 
 - i7/A2000上でDeepSeekまたはQwen 32B級モデルが実行できることを確認する 
 - 重大イベントを投入した際に、仮説、根拠、反証、確認コマンド、対応案、rollback案が生成されることを確認する 
 - LLM出力により自動遮断が直接実行されないことを確認する 
 - Redmineチケット草案またはWiki.js記録が期待する形式で生成されることを確認する 

 ## リスク・注意点 

 - LLMをIPSやEDRの代替にしない。パケット処理と検知はSuricata/VyOS等に任せる 
 - LLMの回答は仮説であり、ログ・設定状態・実機確認で裏取りする 
 - 初期段階では自動遮断を行わない 
 - block案には必ず対象、期限、影響範囲、rollback手順を含める 
 - 誤検知や既知ノイズを適切に管理しないと、レポートがノイズで埋まる 
 - N100は軽量LLM向けであり、深い推論や大規模モデルには向かない 
 - i7/A2000は重大イベントの深い推論に限定し、常時大量ログ処理には使わない 
 - Router兼IPSはネットワーク中核となるため、設定ミス時の通信断に注意する 
 - VyOS / Suricata / VLAN構成変更時はrollback手順を事前に用意する 
 - Redmine / Wiki.js は自宅での実装例であり、構想上はナレッジ基盤・チケット管理として抽象化可能 

 ## 関連Wikiページ 

 - 自宅ネットインフラ2.0構想 
 - AI-SOC Lite設計 
 - VyOS Router兼IPS設計 
 - Suricata EVE JSON運用 
 - N100一次分析LLM構築 
 - i7/A2000深い推論LLM構築 
 - Redmineチケット連携設計 
 - Wiki.jsナレッジ記録運用 
 - WireGuard補助ノード設計 
 - Raspberry Pi 4 IDS Sensor設計 

 ## 関連キーワード 

 `AI-SOC` `LLM` `N100` `Core-i7-12700` `RTX-A2000` `DeepSeek` `Qwen` `Ollama` `LiteLLM` `Open-WebUI` `Suricata` `EVE-JSON` `VyOS` `Router` `IPS` `IDS` `Wazuh` `Velociraptor` `WireGuard` `VLAN` `Redmine` `Wiki.js` `GitHub` `Runbook` `log-ingester` `jq` `Python` 

 ## 次のアクション 

 - [ ] Phase 1としてCore i7/A2000のLLM環境をセットアップする 
 - [ ] Raspberry Pi 4 + スマートHUBでIDS Sensorを構築する 
 - [ ] Xeon E3のVyOS Router兼IPS構成案を詳細化する 
 - [ ] N100のAI-SOC Lite用Docker Compose構成を設計する 
 - [ ] Suricata EVE JSONの取り込みサンプルを作成する 
 - [ ] 一次分析のJSON schemaを定義する 
 - [ ] Redmineチケット草案出力フォーマットを確定する

Back