prod preps
This commit is contained in:
parent
10331b9ece
commit
a9c15eb9c6
69
.env.example
69
.env.example
@ -1,43 +1,36 @@
|
||||
# AI Configuration
|
||||
AI_API_ENDPOINT=https://aiendpoint.org
|
||||
AI_API_KEY=your_apikey_here
|
||||
AI_MODEL='ai_model_name_here'
|
||||
AI_RATE_LIMIT_DELAY_MS=2000
|
||||
# ===========================================
|
||||
# CC24-Hub Environment Configuration
|
||||
# ===========================================
|
||||
|
||||
# Git Repository
|
||||
GIT_REPO_URL=https://git.cc24.dev/mstoeck3/cc24-hub.git
|
||||
GIT_API_ENDPOINT=https://git.cc24.dev/api/v1
|
||||
GIT_API_TOKEN=
|
||||
LOCAL_REPO_PATH=/var/git/cc24-hub
|
||||
# Authentication & OIDC (Required)
|
||||
AUTH_SECRET=change-this-to-a-strong-secret-key-in-production
|
||||
OIDC_ENDPOINT=https://your-oidc-provider.com
|
||||
OIDC_CLIENT_ID=your-oidc-client-id
|
||||
OIDC_CLIENT_SECRET=your-oidc-client-secret
|
||||
AUTHENTICATION_NECESSARY=true
|
||||
|
||||
# Application Configuration (Required)
|
||||
PUBLIC_BASE_URL=https://your-domain.com
|
||||
NODE_ENV=production
|
||||
|
||||
# AI Service Configuration (Required for AI features)
|
||||
AI_MODEL=mistral-large-latest
|
||||
AI_API_ENDPOINT=https://api.mistral.ai
|
||||
AI_API_KEY=your-mistral-api-key
|
||||
AI_RATE_LIMIT_DELAY_MS=1000
|
||||
|
||||
# Git Integration (Required for contributions)
|
||||
GIT_REPO_URL=https://git.cc24.dev/mstoeck3/cc24-hub
|
||||
GIT_PROVIDER=gitea
|
||||
GIT_API_ENDPOINT=https://git.cc24.dev/api/v1
|
||||
GIT_API_TOKEN=your-git-api-token
|
||||
|
||||
# OIDC Configuration
|
||||
OIDC_ENDPOINT=https://oidc-provider.org
|
||||
OIDC_CLIENT_ID=your_oidc_client_id
|
||||
OIDC_CLIENT_SECRET=your_oidc_client_secret
|
||||
AUTH_SECRET=your_super_secret_jwt_key_that_should_be_at_least_32_characters_long_for_security
|
||||
|
||||
AUTHENTICATION_NECESSARY=false # Always set this to true in prod
|
||||
|
||||
|
||||
# Application
|
||||
PUBLIC_BASE_URL=http://localhost:4321
|
||||
|
||||
# Media Storage
|
||||
# File Upload Configuration (Optional)
|
||||
LOCAL_UPLOAD_PATH=./public/uploads
|
||||
# Nextcloud integration (optional)
|
||||
NEXTCLOUD_ENDPOINT=
|
||||
NEXTCLOUD_USERNAME=
|
||||
NEXTCLOUD_PASSWORD=
|
||||
|
||||
# Nextcloud Integration (Optional)
|
||||
NEXTCLOUD_ENDPOINT=https://your-nextcloud.com
|
||||
NEXTCLOUD_USERNAME=your-username
|
||||
NEXTCLOUD_PASSWORD=your-password
|
||||
NEXTCLOUD_UPLOAD_PATH=/kb-media
|
||||
NEXTCLOUD_PUBLIC_URL=
|
||||
|
||||
# Custom upload limits (optional)
|
||||
MAX_FILE_SIZE=52428800 # 50MB in bytes
|
||||
MAX_UPLOADS_PER_HOUR=100
|
||||
|
||||
# Development/Production mode
|
||||
NODE_ENV=development
|
||||
|
||||
# Logging level
|
||||
LOG_LEVEL=info
|
||||
NEXTCLOUD_PUBLIC_URL=https://your-nextcloud.com/s/
|
799
README.md
799
README.md
@ -1,34 +1,78 @@
|
||||
# CC24-Hub
|
||||
|
||||
Ein kuratiertes Verzeichnis für digitale Forensik- und Incident-Response-Tools mit KI-gestützten Empfehlungen, entwickelt für die Seminargruppe CC24-w1.
|
||||
Ein kuratiertes Verzeichnis für Digital Forensics und Incident Response (DFIR) Tools, Methoden und Konzepte mit KI-gestützten Workflow-Empfehlungen.
|
||||
|
||||
## 🎯 Projektübersicht
|
||||
## ✨ Funktionen
|
||||
|
||||
CC24-Hub bietet eine strukturierte Übersicht über bewährte DFIR-Tools, -Methoden und -Konzepte mit intelligenten Empfehlungsfunktionen. Das Projekt orientiert sich am NIST-Framework (SP 800-86) und kategorisiert nach forensischen Domänen und Untersuchungsphasen.
|
||||
### 🎯 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
|
||||
|
||||
### Hauptfunktionen
|
||||
### 🔍 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
|
||||
|
||||
- **KI-gestützte Empfehlungen**: Workflow- und Tool-Vorschläge basierend auf forensischen Szenarien
|
||||
- **Drei Kategorien**: Software-Tools, forensische Methoden UND Grundlagenkonzepte
|
||||
- **Matrix-Ansicht**: Visualisierung nach Domänen × Prozess-Phasen
|
||||
- **Erweiterte Filter**: Suche nach Name, Tags, Domäne, Phase, Lizenz
|
||||
- **CC24-Server Integration**: Direkte SSO-Links zu gehosteten Instanzen
|
||||
- **Knowledgebase**: Erweiterte Dokumentation mit praktischen Erkenntnissen
|
||||
- **Konzept-Verlinkung**: Automatische Verknüpfung zwischen Tools und Grundlagenkonzepten
|
||||
- **Status-Monitoring**: Live-Überwachung verfügbarer Services
|
||||
- **Responsive Design**: Dark/Light Mode, Mobile-optimiert
|
||||
### 📚 Inhaltstypen
|
||||
- **Software/Tools:** Open Source und proprietäre forensische Software
|
||||
- **Methoden:** Bewährte forensische Verfahren und Prozesse
|
||||
- **Konzepte:** Grundlegendes Fachwissen und theoretische Grundlagen
|
||||
|
||||
## 🛠️ Technischer Stack
|
||||
### 📖 Knowledgebase
|
||||
- **Erweiterte Dokumentation:** Detaillierte Artikel zu Tools und Methoden
|
||||
- **Praktische Anleitungen:** Installation, Konfiguration und Best Practices
|
||||
- **Markdown-basiert:** Einfache Erstellung und Wartung von Inhalten
|
||||
|
||||
- **Framework**: [Astro](https://astro.build/) mit Server-Side Rendering
|
||||
- **Backend**: Node.js mit API-Routen für KI und Authentifizierung
|
||||
- **Styling**: Vanilla CSS mit CSS Custom Properties
|
||||
- **Datenformat**: YAML für Tool-/Methoden-/Konzept-Definitionen
|
||||
- **KI-Integration**: Mistral AI über OpenAI-kompatible API
|
||||
- **Authentifizierung**: OIDC (OpenID Connect) mit JWT-Sessions
|
||||
- **Node.js**: >=18.0.0
|
||||
### 🤝 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
|
||||
|
||||
## 🚀 Installation & Deployment
|
||||
### 🔐 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
|
||||
|
||||
@ -40,6 +84,10 @@ cd cc24-hub
|
||||
# Dependencies installieren
|
||||
npm install
|
||||
|
||||
# Umgebungsvariablen konfigurieren
|
||||
cp .env.example .env
|
||||
# .env bearbeiten (siehe Konfiguration unten)
|
||||
|
||||
# Development Server starten
|
||||
npm run dev
|
||||
```
|
||||
@ -48,150 +96,128 @@ Die Seite ist dann unter `http://localhost:4321` verfügbar.
|
||||
|
||||
### Produktions-Deployment
|
||||
|
||||
#### Voraussetzungen
|
||||
#### 1. System vorbereiten
|
||||
|
||||
- Ubuntu/Debian server
|
||||
- Node.js 18+
|
||||
- Nginx
|
||||
- Domain
|
||||
- SSL Zertifikat
|
||||
```bash
|
||||
# System-Updates
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
|
||||
#### Installationsschritte
|
||||
# Node.js installieren (Ubuntu/Debian)
|
||||
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs
|
||||
|
||||
##### 1. Vorbereitung
|
||||
# Nginx installieren
|
||||
sudo apt install nginx -y
|
||||
|
||||
# Systemd für Service-Management
|
||||
sudo systemctl enable nginx
|
||||
```
|
||||
|
||||
#### 2. Anwendung installieren
|
||||
|
||||
```bash
|
||||
# Klonen des Repositorys
|
||||
git clone https://git.cc24.dev/mstoeck3/cc24-hub
|
||||
cd cc24-hub
|
||||
sudo git clone https://git.cc24.dev/mstoeck3/cc24-hub /var/www/cc24-hub
|
||||
cd /var/www/cc24-hub
|
||||
|
||||
# Abhängigkeiten installieren
|
||||
npm install
|
||||
sudo npm install
|
||||
|
||||
# Production-Build anstoßen
|
||||
npm run build
|
||||
```
|
||||
|
||||
##### 2. Webroot vorbereiten
|
||||
|
||||
```bash
|
||||
# Webroot erstellen und Berechtigungen setzen
|
||||
sudo mkdir -p /var/www/cc24-hub
|
||||
sudo chown -R $USER:$USER /var/www/cc24-hub
|
||||
|
||||
# Build in Webroot kopieren
|
||||
sudo cp -r ./dist/* /var/www/cc24-hub/
|
||||
sudo cp ./src/data/tools.yaml /var/www/cc24-hub/src/data/
|
||||
sudo cp package.json /var/www/cc24-hub/
|
||||
|
||||
# Prod-Abhängigkeiten installieren
|
||||
cd /var/www/cc24-hub
|
||||
npm install --omit=dev
|
||||
# Production-Build erstellen
|
||||
sudo npm run build
|
||||
|
||||
# Berechtigungen setzen
|
||||
sudo chown -R www-data:www-data /var/www/cc24-hub
|
||||
```
|
||||
|
||||
##### 3. Umgebungsvariablen setzen
|
||||
#### 3. Umgebungsvariablen konfigurieren
|
||||
|
||||
Erstelle `/var/www/cc24-hub/.env`:
|
||||
|
||||
```bash
|
||||
# AI Konfiguration
|
||||
AI_API_ENDPOINT=https://llm.mikoshi.de # hier geeigneten Endpunkt setzen
|
||||
AI_API_KEY=your_ai_api_key
|
||||
AI_MODEL=mistral/mistral-small-latest # hier geeignetes KI-Modell wählen
|
||||
# === GRUNDKONFIGURATION ===
|
||||
NODE_ENV=production
|
||||
PUBLIC_BASE_URL=https://ihre-domain.de
|
||||
|
||||
# Authentifizierung ("false" setzen für Tests, oder wenn kostenlose KI verwendet wird)
|
||||
# === 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://cloud.cc24.dev
|
||||
OIDC_CLIENT_ID=your_oidc_client_id
|
||||
OIDC_CLIENT_SECRET=your_oidc_client_secret
|
||||
AUTH_SECRET=your_super_secret_jwt_key_min_32_chars
|
||||
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
|
||||
|
||||
# Public Configuration
|
||||
PUBLIC_BASE_URL=https://your-domain.com # hier die URL setzen, mit der von außen zugegriffen wird
|
||||
# === 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
|
||||
```
|
||||
|
||||
```bash
|
||||
# .env sichern
|
||||
# Berechtigungen sichern
|
||||
sudo chmod 600 /var/www/cc24-hub/.env
|
||||
sudo chown www-data:www-data /var/www/cc24-hub/.env
|
||||
```
|
||||
|
||||
##### 4. Systemd-Service erstellen
|
||||
|
||||
Create `/etc/systemd/system/cc24-hub.service`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=CC24-Hub DFIR Tool Directory
|
||||
After=network.target
|
||||
Wants=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=www-data
|
||||
Group=www-data
|
||||
WorkingDirectory=/var/www/cc24-hub
|
||||
ExecStart=/usr/bin/node server/entry.mjs
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StartLimitInterval=60s
|
||||
StartLimitBurst=3
|
||||
|
||||
# Environment
|
||||
Environment=NODE_ENV=production
|
||||
Environment=PORT=3000
|
||||
|
||||
# Security
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ReadWritePaths=/var/www/cc24-hub
|
||||
|
||||
# Logging
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
SyslogIdentifier=cc24-hub
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
##### 5. Nginx Reverse Proxy konfigurieren
|
||||
#### 4. Nginx konfigurieren
|
||||
|
||||
Erstelle `/etc/nginx/sites-available/cc24-hub`:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
server_name ihre-domain.de;
|
||||
|
||||
# Redirect HTTP to HTTPS
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name your-domain.com;
|
||||
server_name ihre-domain.de;
|
||||
|
||||
# SSL Configuration (adjust paths for your certificates)
|
||||
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
|
||||
|
||||
# SSL Security
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
|
||||
ssl_prefer_server_ciphers off;
|
||||
# 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 Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin";
|
||||
|
||||
# Proxy to Node.js application
|
||||
# Static Files
|
||||
location / {
|
||||
proxy_pass http://localhost:3000;
|
||||
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';
|
||||
@ -204,359 +230,246 @@ server {
|
||||
proxy_connect_timeout 75s;
|
||||
}
|
||||
|
||||
# Optional: Serve static assets directly (performance optimization)
|
||||
location /_astro/ {
|
||||
proxy_pass http://localhost:3000;
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
# Upload limit
|
||||
client_max_body_size 50M;
|
||||
}
|
||||
```
|
||||
|
||||
##### 6. Daemon starten und Autostart setzen
|
||||
|
||||
```bash
|
||||
# Enable Nginx site
|
||||
# Site aktivieren
|
||||
sudo ln -s /etc/nginx/sites-available/cc24-hub /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
# Enable and start CC24-Hub service
|
||||
#### 5. Systemd Service einrichten
|
||||
|
||||
Erstelle `/etc/systemd/system/cc24-hub.service`:
|
||||
|
||||
```ini
|
||||
[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
|
||||
```
|
||||
|
||||
```bash
|
||||
# Service aktivieren und starten
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable cc24-hub
|
||||
sudo systemctl start cc24-hub
|
||||
|
||||
# Check status
|
||||
# Status prüfen
|
||||
sudo systemctl status cc24-hub
|
||||
```
|
||||
|
||||
##### 7. Deployment verifizieren
|
||||
## 🔧 Konfiguration
|
||||
|
||||
### Minimalkonfiguration (ohne Auth)
|
||||
|
||||
```bash
|
||||
# Check application logs
|
||||
sudo journalctl -u cc24-hub -f
|
||||
|
||||
# Check if app is responding
|
||||
curl http://localhost:3000
|
||||
|
||||
# Check external access
|
||||
curl https://your-domain.com
|
||||
# Nur für Tests geeignet
|
||||
AUTHENTICATION_NECESSARY=false
|
||||
PUBLIC_BASE_URL=http://localhost:4321
|
||||
```
|
||||
|
||||
#### OIDC Konfigurieren
|
||||
### Tools-Datenbank
|
||||
|
||||
Nextcloud OIDC Einstellungen (sollte auch mit anderen OIDC-Anwendungen klappen):
|
||||
- **Redirect URI**: `https://your-domain.com/auth/callback`
|
||||
- **Logout URI**: `https://your-domain.com`
|
||||
|
||||
## 🔧 Datenformat & Kategorien
|
||||
|
||||
Die CC24-Hub verwaltet drei Kategorien von Einträgen in `src/data/tools.yaml`:
|
||||
|
||||
### 1. Software-Tools
|
||||
Die Tools werden in `src/data/tools.yaml` verwaltet. Vollständiges Beispiel:
|
||||
|
||||
```yaml
|
||||
tools:
|
||||
- name: "Autopsy"
|
||||
icon: "📦"
|
||||
type: "software"
|
||||
description: "Die führende Open-Source-Alternative zu kommerziellen Forensik-Suiten"
|
||||
domains: ["incident-response", "static-investigations"]
|
||||
phases: ["examination", "analysis"]
|
||||
platforms: ["Windows", "Linux"]
|
||||
skillLevel: "intermediate"
|
||||
accessType: "download"
|
||||
url: "https://www.autopsy.com/"
|
||||
projectUrl: "https://autopsy.cc24.dev" # CC24-Server URL (optional)
|
||||
license: "Apache 2.0"
|
||||
knowledgebase: true # Hat erweiterte Dokumentation
|
||||
related_concepts: ["Hash Functions & Digital Signatures", "SQL Query Fundamentals"] # Verknüpfung zu Konzepten
|
||||
tags: ["gui", "filesystem", "timeline-analysis"]
|
||||
statusUrl: "https://status.example.com/badge/1/status" # Status-Badge URL (optional)
|
||||
```
|
||||
- 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
|
||||
|
||||
### 2. Forensische Methoden
|
||||
# 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
|
||||
|
||||
```yaml
|
||||
- name: "Live Memory Acquisition Procedure"
|
||||
icon: "📋"
|
||||
type: "method"
|
||||
description: "Standardisiertes Verfahren zur forensisch korrekten Akquisition des Arbeitsspeichers"
|
||||
domains: ["incident-response", "static-investigations"]
|
||||
phases: ["data-collection"]
|
||||
platforms: [] # Methoden haben keine Plattformen
|
||||
skillLevel: "advanced"
|
||||
accessType: null
|
||||
url: "https://www.nist.gov/publications/guide-integrating-forensic-techniques"
|
||||
projectUrl: null
|
||||
license: null
|
||||
# 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
|
||||
related_concepts: null # Können optional Konzepte verknüpfen
|
||||
tags: ["memory-acquisition", "volatile-evidence", "procedure"]
|
||||
|
||||
# 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
|
||||
```
|
||||
|
||||
### 3. Grundlagenkonzepte (NEU)
|
||||
## 📦 Updates
|
||||
|
||||
```yaml
|
||||
- name: "Regular Expressions (Regex)"
|
||||
icon: "🔤"
|
||||
type: "concept"
|
||||
description: "Pattern matching language for searching, extracting, and manipulating text"
|
||||
domains: ["incident-response", "malware-analysis"]
|
||||
phases: ["examination", "analysis"]
|
||||
platforms: [] # Konzepte haben keine Plattformen
|
||||
skillLevel: "intermediate"
|
||||
accessType: null
|
||||
url: "https://regexr.com/"
|
||||
projectUrl: null
|
||||
license: null
|
||||
knowledgebase: true # Erweiterte Erklärung in Knowledgebase
|
||||
related_concepts: null # Konzepte verweisen nicht auf andere Konzepte
|
||||
tags: ["pattern-matching", "text-processing", "log-analysis"]
|
||||
```
|
||||
|
||||
### Verfügbare Kategorien
|
||||
|
||||
**Domänen:**
|
||||
- `incident-response` - Incident Response & Breach-Untersuchung
|
||||
- `static-investigations` - Datenträgerforensik & Ermittlungen
|
||||
- `malware-analysis` - Malware-Analyse & Reverse Engineering
|
||||
- `fraud-investigation` - Betrugs- & Finanzkriminalität
|
||||
- `network-forensics` - Netzwerk-Forensik & Traffic-Analyse
|
||||
- `mobile-forensics` - Mobile Geräte & App-Forensik
|
||||
- `cloud-forensics` - Cloud & Virtuelle Umgebungen
|
||||
- `ics-forensics` - Industrielle Kontrollsysteme (ICS/SCADA)
|
||||
|
||||
**Phasen (NIST SP 800-86):**
|
||||
- `data-collection` - Datensammlung
|
||||
- `examination` - Auswertung
|
||||
- `analysis` - Analyse
|
||||
- `reporting` - Bericht & Präsentation
|
||||
|
||||
**Domain-agnostic Kategorien:**
|
||||
- `collaboration-general` - Übergreifend & Kollaboration
|
||||
- `specific-os` - Betriebssysteme
|
||||
|
||||
## 📚 Knowledgebase-System
|
||||
|
||||
### Erweiterte Dokumentation erstellen
|
||||
|
||||
Die Knowledgebase bietet detaillierte Artikel für Tools, Methoden und Konzepte. So erstellen Sie neue Einträge:
|
||||
|
||||
#### 1. Knowledgebase-Flag setzen
|
||||
|
||||
Setzen Sie in `src/data/tools.yaml` das Flag:
|
||||
```yaml
|
||||
knowledgebase: true
|
||||
```
|
||||
|
||||
#### 2. Artikel-Datei erstellen
|
||||
|
||||
Erstellen Sie eine Markdown-Datei in `src/content/knowledgebase/`:
|
||||
|
||||
**Dateiname-Schema:** `[tool-name-slug].md`
|
||||
|
||||
**Beispiel:** `src/content/knowledgebase/autopsy.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: "Autopsy - Umfassende Forensik-Suite"
|
||||
tool_name: "Autopsy"
|
||||
description: "Detaillierte Anleitung und Best Practices für Autopsy"
|
||||
last_updated: 2024-01-15
|
||||
author: "CC24-Team"
|
||||
difficulty: "intermediate"
|
||||
categories: ["filesystem-analysis", "timeline-analysis"]
|
||||
tags: ["gui", "windows", "linux", "open-source"]
|
||||
sections:
|
||||
overview: true
|
||||
installation: true
|
||||
configuration: true
|
||||
usage_examples: true
|
||||
best_practices: true
|
||||
troubleshooting: true
|
||||
advanced_topics: false
|
||||
review_status: "published"
|
||||
---
|
||||
|
||||
# Übersicht
|
||||
|
||||
Autopsy ist eine grafische Benutzeroberfläche für The Sleuth Kit (TSK) und bietet...
|
||||
|
||||
## Installation
|
||||
|
||||
### Windows
|
||||
1. Download der neuesten Version von [autopsy.com](https://www.autopsy.com/)
|
||||
2. Ausführung des Installers mit Administratorrechten
|
||||
3. ...
|
||||
|
||||
## Konfiguration
|
||||
|
||||
### Grundeinstellungen
|
||||
- Arbeitsverzeichnis festlegen
|
||||
- Hash-Algorithmen auswählen
|
||||
- ...
|
||||
|
||||
## Verwendungsbeispiele
|
||||
|
||||
### Fall 1: Gelöschte Dateien wiederherstellen
|
||||
1. Neuen Fall erstellen
|
||||
2. Image hinzufügen
|
||||
3. ...
|
||||
|
||||
## Best Practices
|
||||
|
||||
- Immer Hash-Verifikation durchführen
|
||||
- Regelmäßige Backups der Case-Datenbank
|
||||
- ...
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problem: Autopsy startet nicht
|
||||
**Lösung:** Java-Version überprüfen...
|
||||
|
||||
### Problem: Langsame Performance
|
||||
**Lösung:** RAM-Zuteilung erhöhen...
|
||||
|
||||
## Weiterführende Themen
|
||||
|
||||
- Integration mit externen Tools
|
||||
- Custom Modules entwickeln
|
||||
- ...
|
||||
```
|
||||
|
||||
#### 3. Schema-Validierung
|
||||
|
||||
Das System validiert automatisch folgende Felder:
|
||||
|
||||
**Pflichtfelder:**
|
||||
- `title`: Anzeigename des Artikels
|
||||
- `tool_name`: Exakter Name aus tools.yaml
|
||||
- `description`: Kurze Beschreibung
|
||||
- `last_updated`: Datum der letzten Aktualisierung
|
||||
- `difficulty`: `novice|beginner|intermediate|advanced|expert`
|
||||
|
||||
**Optionale Felder:**
|
||||
- `author`: Standard "CC24-Team"
|
||||
- `categories`: Array von Kategorien
|
||||
- `tags`: Array von Tags
|
||||
- `sections`: Welche Abschnitte enthalten sind
|
||||
- `review_status`: `draft|review|published` (Standard: `published`)
|
||||
|
||||
#### 4. Automatische Verlinkung
|
||||
|
||||
- Artikel sind automatisch über `/knowledgebase/[tool-slug]` erreichbar
|
||||
- Links werden automatisch in Tool-Details angezeigt
|
||||
- Suchfunktion indiziert Artikel-Inhalte
|
||||
|
||||
### Konzept-Verlinkung
|
||||
|
||||
Tools können mit Grundlagenkonzepten verknüpft werden:
|
||||
|
||||
```yaml
|
||||
# Tool-Definition
|
||||
- name: "Autopsy"
|
||||
related_concepts: ["Hash Functions & Digital Signatures", "SQL Query Fundamentals"]
|
||||
|
||||
# Konzept-Definition
|
||||
- name: "Hash Functions & Digital Signatures"
|
||||
type: "concept"
|
||||
description: "Cryptographic principles for data integrity verification"
|
||||
```
|
||||
|
||||
Die KI-Empfehlungen nutzen diese Verlinkungen für Hintergrundwissen-Empfehlungen.
|
||||
|
||||
## 🤖 KI-Integration
|
||||
|
||||
### Workflow-Empfehlungen
|
||||
Beschreibung forensischer Szenarien für maßgeschneiderte Workflows mit phasenbasierten Tool-Empfehlungen und Prioritätsbewertung.
|
||||
|
||||
### Tool-spezifische Empfehlungen
|
||||
Konkrete Tool-Vorschläge für spezifische Probleme mit detaillierten Begründungen, Implementierungsansätzen und Vor-/Nachteilen.
|
||||
|
||||
### Konzept-Integration
|
||||
Die KI berücksichtigt automatisch verknüpfte Grundlagenkonzepte und empfiehlt relevantes Hintergrundwissen.
|
||||
|
||||
**API-Endpunkt:** `/api/ai/query`
|
||||
- **Rate Limiting**: 10 Anfragen pro Minute pro Benutzer
|
||||
- **Modi**: `workflow` (Szenario-basiert) oder `tool` (Problem-spezifisch)
|
||||
- **Authentifizierung**: Optional konfigurierbar via `AUTHENTICATION_NECESSARY`
|
||||
|
||||
## 🔐 Authentifizierung
|
||||
|
||||
OIDC-Integration mit JWT-Sessions:
|
||||
- **6 Stunden Gültigkeit**
|
||||
- **HTTP-Only Cookies** mit CSRF-Schutz
|
||||
- **Nextcloud/Keycloak kompatibel**
|
||||
|
||||
**Relevante Dateien:**
|
||||
- `src/utils/auth.ts` - Kern-Authentifizierungslogik
|
||||
- `src/pages/api/auth/` - Auth-API-Endpunkte
|
||||
|
||||
## 📁 Datei-Referenz
|
||||
|
||||
### Wichtige Konfigurationsdateien
|
||||
- `src/data/tools.yaml` - Hauptdatenbank für Tools, Methoden und Konzepte
|
||||
- `src/content/config.ts` - Schema für Knowledgebase-Artikel
|
||||
- `src/utils/dataService.js` - Datenverarbeitungslogik
|
||||
- `src/styles/global.css` - Zentrale Stylesheet-Definitionen
|
||||
|
||||
### Content-Verzeichnisse
|
||||
- `src/content/knowledgebase/` - Knowledgebase-Artikel (Markdown)
|
||||
- `src/components/` - Wiederverwendbare UI-Komponenten
|
||||
- `src/pages/api/` - Backend-API-Endpunkte
|
||||
|
||||
## 🤝 Beitragen
|
||||
|
||||
### Tool/Methode/Konzept hinzufügen
|
||||
|
||||
**Option 1: Direkte YAML-Bearbeitung**
|
||||
1. Fork des Repositories erstellen
|
||||
2. `src/data/tools.yaml` bearbeiten
|
||||
3. Bei Bedarf Knowledgebase-Artikel erstellen
|
||||
4. Pull Request mit Beschreibung erstellen
|
||||
|
||||
**Option 2: Web-Editor verwenden**
|
||||
1. YAML-Editor öffnen (`/dfir_yaml_editor.html`)
|
||||
2. Eintrag hinzufügen (Tool/Methode/Konzept)
|
||||
3. YAML exportieren und in Pull Request einreichen
|
||||
|
||||
### Knowledgebase-Artikel erweitern
|
||||
|
||||
1. Tool in `tools.yaml` identifizieren
|
||||
2. `knowledgebase: true` setzen
|
||||
3. Artikel in `src/content/knowledgebase/[slug].md` erstellen
|
||||
4. Schema-Validierung beachten
|
||||
5. Pull Request einreichen
|
||||
|
||||
### Korrekturen & Verbesserungen
|
||||
|
||||
- Bug Reports und Feature Requests über Issues melden
|
||||
- Code-Beiträge über Pull Requests willkommen
|
||||
- Dokumentation und Übersetzungen erwünscht
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
**KI-Empfehlungen funktionieren nicht:**
|
||||
- `.env` Datei korrekt konfiguriert?
|
||||
- `AUTHENTICATION_NECESSARY=false` für Tests setzen
|
||||
- API-Endpoint erreichbar?
|
||||
|
||||
**Authentifizierung schlägt fehl:**
|
||||
- OIDC-Endpoints korrekt?
|
||||
- Redirect-URIs im OIDC-Provider registriert?
|
||||
- `AUTH_SECRET` mindestens 32 Zeichen?
|
||||
|
||||
**Knowledgebase-Artikel werden nicht angezeigt:**
|
||||
- `knowledgebase: true` in tools.yaml gesetzt?
|
||||
- Markdown-Datei existiert in `src/content/knowledgebase/`?
|
||||
- Schema-Validierung erfolgreich?
|
||||
|
||||
**Logs prüfen:**
|
||||
```bash
|
||||
# Anwendungs-Logs
|
||||
sudo journalctl -u cc24-hub -f
|
||||
# Repository aktualisieren
|
||||
cd /var/www/cc24-hub
|
||||
sudo git pull
|
||||
|
||||
# Development-Modus
|
||||
npm run dev
|
||||
# Dependencies aktualisieren
|
||||
sudo npm install
|
||||
|
||||
# Rebuild
|
||||
sudo npm run build
|
||||
|
||||
# Service neustarten
|
||||
sudo systemctl restart cc24-hub
|
||||
```
|
||||
|
||||
## 💾 Backup
|
||||
|
||||
Wichtige Dateien für Backup:
|
||||
|
||||
```bash
|
||||
/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:
|
||||
|
||||
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.
|
@ -11,7 +11,6 @@ config();
|
||||
// JWT session constants
|
||||
const SECRET_KEY = new TextEncoder().encode(
|
||||
process.env.AUTH_SECRET ||
|
||||
process.env.OIDC_CLIENT_SECRET ||
|
||||
'cc24-hub-default-secret-key-change-in-production'
|
||||
);
|
||||
const SESSION_DURATION = 6 * 60 * 60; // 6 hours in seconds
|
||||
|
Loading…
x
Reference in New Issue
Block a user