12 KiB
12 KiB
CC24-Hub
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 5.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
# 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
# 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
# Klonen des Repositorys
sudo git clone https://git.cc24.dev/mstoeck3/cc24-hub /var/www/cc24-hub
cd /var/www/cc24-hub
# Abhängigkeiten installieren
sudo npm install
# Production-Build erstellen
sudo npm run build
# Berechtigungen setzen
sudo chown -R www-data:www-data /var/www/cc24-hub
3. Umgebungsvariablen konfigurieren
Erstelle /var/www/cc24-hub/.env
:
# === 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=/var/www/cc24-hub/public/uploads
# Berechtigungen sichern
sudo chmod 600 /var/www/cc24-hub/.env
sudo chown www-data:www-data /var/www/cc24-hub/.env
4. Nginx konfigurieren
Erstelle /etc/nginx/sites-available/cc24-hub
:
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 /var/www/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;
}
# 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
:
[Unit]
Description=CC24-Hub DFIR Guide
After=network.target nginx.service
Wants=nginx.service
[Service]
Type=exec
User=www-data
Group=www-data
WorkingDirectory=/var/www/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=/var/www/cc24-hub
CapabilityBoundingSet=
# Resource Limits
LimitNOFILE=65536
MemoryMax=512M
[Install]
WantedBy=multi-user.target
# 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)
# 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:
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
# Repository aktualisieren
cd /var/www/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:
/var/www/cc24-hub/src/data/tools.yaml
/var/www/cc24-hub/.env
/etc/nginx/sites-available/cc24-hub
/etc/systemd/system/cc24-hub.service
🤝 Beiträge
Contributions sind willkommen! Bitte:
- Issue im Repository erstellen
- Feature-Branch erstellen
- Pull Request öffnen
- Tests durchführen
📞 Support
Bei Problemen oder Fragen:
- Issues: Repository Issues
- Dokumentation: Siehe
/knowledgebase
auf der Website
📄 Lizenz
Dieses Projekt steht unter der BSD-3-Clause Lizenz.