# ForensicPathways Ein kuratiertes Verzeichnis für Digital Forensics und Incident Response (DFIR) Tools, Methoden und Konzepte mit KI-gestützten Workflow-Empfehlungen. ## ✨ Funktionen ### 🎯 Hauptansichten - **Kachelansicht (Grid View):** Übersichtliche Kartenansicht aller Tools/Methoden - **Matrix-Ansicht:** Interaktive Matrix nach forensischen Domänen und Untersuchungsphasen (NIST Framework) - **KI-Empfehlungen:** AI-gestützte Workflow-Empfehlungen basierend auf Szenario-Beschreibungen ### 🔍 Navigation & Filterung - **Tag-System:** Intelligente Filterung nach Kategorien und Eigenschaften - **Volltext-Suche:** Durchsuchen von Namen, Beschreibungen und Tags - **Domain/Phase-Filter:** Filterung nach forensischen Bereichen und Ermittlungsphasen ### 📚 Inhaltstypen - **Software/Tools:** Open Source und proprietäre forensische Software - **Methoden:** Bewährte forensische Verfahren und Prozesse - **Konzepte:** Grundlegendes Fachwissen und theoretische Grundlagen ### 📖 Knowledgebase - **Erweiterte Dokumentation:** Detaillierte Artikel zu Tools und Methoden - **Praktische Anleitungen:** Installation, Konfiguration und Best Practices - **Markdown-basiert:** Einfache Erstellung und Wartung von Inhalten ### 🤝 Contribution-System - **Tool/Methoden-Beiträge:** Webformular für neue Einträge - **Knowledgebase-Artikel:** Artikel-Editor mit Datei-Upload - **Git-Integration:** Automatische Issue-Erstellung für Review-Prozess - **File-Management:** Nextcloud-Integration für Medien-Uploads ### 🔐 Authentifizierung - **OIDC-Integration:** Single Sign-On mit OpenID Connect - **Berechtigungssteuerung:** Schutz für AI-Features und Contribution-System - **Session-Management:** Sichere JWT-basierte Sessions ## 🛠 Technische Grundlage - **Framework:** Astro 4.x mit TypeScript - **Styling:** CSS Custom Properties mit Dark/Light Mode - **API:** Node.js Backend mit Astro API Routes - **Datenbank:** YAML-basierte Konfiguration (tools.yaml) ## 📋 Voraussetzungen - **Node.js:** Version 18.x oder höher - **npm:** Version 8.x oder höher - **Nginx:** Für Reverse Proxy (Produktion) ## 🔧 Externe Abhängigkeiten (Optional) ### OIDC Provider - **Zweck:** Benutzerauthentifizierung - **Beispiel:** Nextcloud, Keycloak, Auth0 - **Konfiguration:** `OIDC_ENDPOINT`, `OIDC_CLIENT_ID`, `OIDC_CLIENT_SECRET` ### Nextcloud - **Zweck:** File-Upload für Knowledgebase-Beiträge - **Features:** Medien-Management, öffentliche Links - **Konfiguration:** `NEXTCLOUD_ENDPOINT`, `NEXTCLOUD_USERNAME`, `NEXTCLOUD_PASSWORD` ### AI Service (Mistral/OpenAI-kompatibel) - **Zweck:** KI-gestützte Tool-Empfehlungen - **Konfiguration:** `AI_API_ENDPOINT`, `AI_API_KEY`, `AI_MODEL` ### Uptime Kuma - **Zweck:** Status-Monitoring für gehostete Services - **Integration:** Status-Badges in der Service-Übersicht ### Git Provider (Gitea/GitHub/GitLab) - **Zweck:** Issue-Erstellung für Contributions - **Konfiguration:** `GIT_PROVIDER`, `GIT_API_ENDPOINT`, `GIT_API_TOKEN` ## 🚀 Installation ### Lokale Entwicklung ```bash # Repository klonen git clone https://git.cc24.dev/mstoeck3/cc24-hub.git cd cc24-hub # Dependencies installieren npm install # Umgebungsvariablen konfigurieren cp .env.example .env # .env bearbeiten (siehe Konfiguration unten) # Development Server starten npm run dev ``` Die Seite ist dann unter `http://localhost:4321` verfügbar. ### Produktions-Deployment #### 1. System vorbereiten ```bash # System-Updates sudo apt update && sudo apt upgrade -y # Node.js installieren (Ubuntu/Debian) curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs # Nginx installieren sudo apt install nginx -y # Systemd für Service-Management sudo systemctl enable nginx ``` #### 2. Anwendung installieren ```bash # Klonen des Repositorys sudo git clone https://git.cc24.dev/mstoeck3/cc24-hub /opt/cc24-hub cd /opt/cc24-hub # Abhängigkeiten installieren sudo npm install # Production-Build erstellen sudo npm run build # Berechtigungen setzen sudo chown -R www-data:www-data /opt/cc24-hub ``` #### 3. Umgebungsvariablen konfigurieren Erstelle `/opt/cc24-hub/.env`: ```bash # === GRUNDKONFIGURATION === NODE_ENV=production PUBLIC_BASE_URL=https://ihre-domain.de # === AI-KONFIGURATION (Optional) === AI_API_ENDPOINT=https://api.mistral.ai/v1 AI_API_KEY=your_mistral_api_key AI_MODEL=mistral-small-latest AI_RATE_LIMIT_DELAY_MS=2000 # === AUTHENTIFIZIERUNG === AUTHENTICATION_NECESSARY=true OIDC_ENDPOINT=https://ihr-oidc-provider.de OIDC_CLIENT_ID=cc24-hub-client OIDC_CLIENT_SECRET=your_super_secret_client_secret AUTH_SECRET=your_jwt_secret_min_32_characters_long # === NEXTCLOUD (Optional) === NEXTCLOUD_ENDPOINT=https://ihre-nextcloud.de NEXTCLOUD_USERNAME=cc24-hub-user NEXTCLOUD_PASSWORD=nextcloud_app_password NEXTCLOUD_UPLOAD_PATH=/kb-media NEXTCLOUD_PUBLIC_URL=https://ihre-nextcloud.de/s # === GIT-INTEGRATION (Optional) === GIT_PROVIDER=gitea GIT_API_ENDPOINT=https://ihr-git-server.de/api/v1 GIT_API_TOKEN=your_git_api_token GIT_REPO_URL=https://ihr-git-server.de/user/cc24-hub # === UPLOAD-KONFIGURATION === LOCAL_UPLOAD_PATH=/opt/cc24-hub/public/uploads ``` ```bash # Berechtigungen sichern sudo chmod 600 /opt/cc24-hub/.env sudo chown www-data:www-data /opt/cc24-hub/.env ``` #### 4. Nginx konfigurieren Erstelle `/etc/nginx/sites-available/cc24-hub`: ```nginx server { listen 80; server_name ihre-domain.de; # Redirect HTTP to HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name ihre-domain.de; # SSL Konfiguration (Let's Encrypt empfohlen) ssl_certificate /etc/letsencrypt/live/ihre-domain.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ihre-domain.de/privkey.pem; # Security Headers add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Referrer-Policy "strict-origin-when-cross-origin"; # Static Files location / { try_files $uri $uri/ @nodejs; root /opt/cc24-hub/dist; index index.html; # Cache static assets location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf)$ { expires 1y; add_header Cache-Control "public, immutable"; } } # API Routes to Node.js location @nodejs { proxy_pass http://localhost:4321; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; proxy_read_timeout 300s; proxy_connect_timeout 75s; } # Upload limit client_max_body_size 50M; } ``` ```bash # Site aktivieren sudo ln -s /etc/nginx/sites-available/cc24-hub /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx ``` #### 5. Systemd Service einrichten Erstelle `/etc/systemd/system/cc24-hub.service`: ```ini [Unit] Description=ForensicPathways DFIR Guide After=network.target nginx.service Wants=nginx.service [Service] Type=exec User=www-data Group=www-data WorkingDirectory=/opt/cc24-hub Environment=NODE_ENV=production ExecStart=/usr/bin/node ./dist/server/entry.mjs Restart=always RestartSec=10 StandardOutput=journal StandardError=journal # Security NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=yes ReadWritePaths=/opt/cc24-hub CapabilityBoundingSet= # Resource Limits LimitNOFILE=65536 MemoryMax=512M [Install] WantedBy=multi-user.target ``` ```bash # Service aktivieren und starten sudo systemctl daemon-reload sudo systemctl enable cc24-hub sudo systemctl start cc24-hub # Status prüfen sudo systemctl status cc24-hub ``` ## 🔧 Konfiguration ### Minimalkonfiguration (ohne Auth) ```bash # Nur für Tests geeignet AUTHENTICATION_NECESSARY=false PUBLIC_BASE_URL=http://localhost:4321 ``` ### Tools-Datenbank Die Tools werden in `src/data/tools.yaml` verwaltet. Vollständiges Beispiel: ```yaml tools: - name: Autopsy type: software # software|method|concept description: >- Die führende Open-Source-Alternative zu kommerziellen Forensik-Suiten mit intuitiver grafischer Oberfläche. Besonders stark in der Timeline-Analyse, Keyword-Suche und dem Carving gelöschter Dateien. Die modulare Plugin-Architektur erlaubt Erweiterungen für spezielle Untersuchungsszenarien. icon: 📦 skillLevel: intermediate # novice|beginner|intermediate|advanced|expert url: https://www.autopsy.com/ domains: - incident-response - static-investigations - malware-analysis - mobile-forensics - cloud-forensics phases: - examination - analysis platforms: - Windows - Linux related_concepts: - SQL Query Fundamentals - Hash Functions & Digital Signatures accessType: download # download|web|api|cli|service license: Apache 2.0 knowledgebase: false # true für erweiterte Dokumentation tags: - gui - filesystem - timeline-analysis - carving - artifact-extraction - keyword-search # Optional: Für gehostete Services projectUrl: https://autopsy.ihre-domain.de statusUrl: https://status.ihre-domain.de/api/badge/1/status # Beispiel Methode - name: Live Response Methodology type: method description: >- Strukturierte Vorgehensweise zur Sammlung volatiler Daten von laufenden Systemen ohne Shutdown. icon: 📋 skillLevel: advanced url: https://www.sans.org/white-papers/live-response/ domains: - incident-response phases: - data-collection related_concepts: - Memory Forensics Fundamentals tags: - volatile-data - live-analysis - methodology knowledgebase: true # Beispiel Konzept - name: Hash Functions & Digital Signatures type: concept description: >- Kryptographische Grundlagen für Datenintegrität und Authentifizierung in der digitalen Forensik. icon: 🔐 skillLevel: intermediate url: https://en.wikipedia.org/wiki/Cryptographic_hash_function domains: - incident-response - static-investigations - malware-analysis phases: - data-collection - examination tags: - cryptography - data-integrity - evidence-preservation knowledgebase: false # Konfiguration der Domänen domains: - id: incident-response name: Incident Response & Breach-Untersuchung - id: static-investigations name: Datenträgerforensik & Ermittlungen - id: malware-analysis name: Malware-Analyse & Reverse Engineering - id: mobile-forensics name: Mobile Geräte & App-Forensik - id: cloud-forensics name: Cloud & Virtuelle Umgebungen # Konfiguration der Phasen (NIST Framework) phases: - id: data-collection name: Datensammlung description: Imaging, Acquisition, Remote Collection Tools - id: examination name: Auswertung description: Parsing, Extraction, Initial Analysis Tools - id: analysis name: Analyse description: Deep Analysis, Correlation, Visualization Tools - id: reporting name: Bericht & Präsentation description: Documentation, Visualization, Presentation Tools # Domänenübergreifende Kategorien domain-agnostic-software: - id: collaboration-general name: Übergreifend & Kollaboration description: Cross-cutting tools and collaboration platforms - id: specific-os name: Betriebssysteme description: Operating Systems which focus on forensics ``` ## 📦 Updates ```bash # Repository aktualisieren cd /opt/cc24-hub sudo git pull # Dependencies aktualisieren sudo npm install # Rebuild sudo npm run build # Service neustarten sudo systemctl restart cc24-hub ``` ## 💾 Backup Wichtige Dateien für Backup: ```bash /opt/cc24-hub/src/data/tools.yaml /opt/cc24-hub/.env /etc/nginx/sites-available/cc24-hub /etc/systemd/system/cc24-hub.service ``` ## 🤝 Beiträge Contributions sind willkommen! Bitte: 1. Issue im Repository erstellen 2. Feature-Branch erstellen 3. Pull Request öffnen 4. Tests durchführen ## 📞 Support Bei Problemen oder Fragen: - **Issues:** [Repository Issues](https://git.cc24.dev/mstoeck3/cc24-hub/issues) - **Dokumentation:** Siehe `/knowledgebase` auf der Website ## 📄 Lizenz Dieses Projekt steht unter der **BSD-3-Clause** Lizenz.