DigiErbe Tresor

Webbasierte Anwendung zum zeitverzögerten Schlüsselzugriff im lokalen Netzwerk oder über VPN für Notfälle. Die Anwendung ist dafür entwickelt auf einem Raspberry PI im lokalen Netzwerk zu laufen. Als Webserver setzen wir auf Caddy. Es wird bewusst auf eine minimalistische Architektur und Benutzerberfläche gesetzt. Es wird keine Datenbank verwendet. Wir raten ausdrücklich davon ab, die Anwendung öffentlich im Internet zugänglich zu machen!

Konzept

  • Der Tresor besteht aus 2 Teilen:
    • Die Weboberfläche zur Benutzerinteraktion
    • Ein Hintergrunddienst zur Verwaltung der Zugrifflinks
  • Im Tresor werden ausschließlich die Schlüsseldateien für VeraCrypt abgelegt
  • Fragt ein Benutzer einen Schlüssel an, wird dessen Eigentümer über die Anfrage benachrichtigt
  • Der Eigentümer kann den Zugriff auf einen Schlüssel innerhalb der gesetzten Frist untersagen
  • Erfolgt kein Widerspruch des Eigentümers wird nach Ablauf der Frist ein Download-Link generiert. Dieser wird an den anfragenden Nuter geschickt. Dieser Link ist nur für eine begrenzte Zeit gültig und wird danach automatisch gelöscht.

Installation

Einstellungen Tresor

allowed_users

Dateiname zum Index der erlaubten Nuter je Schlüssel.
Die Datei wird im selben key_storage Verzeichnis abgelegt wie die Schlüsseldateien selbst. Es handelt sich um eine JSON-Datei.

delay_days

Wartezeit bis zur Erstellung des Downloadlinks in vollen Tagen.
Wird der Zugriff durch den/die Schlüsseleigentümer:in abgelehnt, wird die Anfrage gelöscht. Eine Benachrichtigung an den anfragenden Nutzer erfolg nicht.

downloads

Downloadzähler
Wird bei jedem Download des Schlüssels um 1 erhöht.

expire_days

Gültigkeit des Downloadlinks in vollen Tagen.
Nach Ablauf der Frist wird der Link ungültig und der Token gelöscht.

key_storage

Speicherpfad zu den Schlüsseldateien.
Unter diesem Dateipfad werden von den Eigentümern die Schlüsseldateien abgelegt.

max_downloads

Maximale Anzahl an Downloadversuchen pro Link.
Bei jedem Downloadversuch wird der Downloadzähler downloads um 1 erhöht. Wird die maximale Downloadzahl erreicht so wird der Link ungültig und der Token gelöscht.

Beispiel einer tresor_settings.json

{
    'key_storage': '/keys',
    'allowed_users': 'allowed_users.json',
    'delay_days': 1,
    'expire_days': 3,
    'downloads': 0,
    'max_downloads': 2
}

Einstellungen Caddy Webserver

tresor.example.com {
  #PHP
  php_fastcgi unix//run/php/php-fpm.sock

  # Root directory
  root * /Pfad/Zu/DigiErbe/Tresor/public

  # Authentication
  basic_auth {
    username $2a$14$SetHashedPasswordHere
  }

  # Activate file server in Caddy
  file_server

  # Redirect all requests to index.php
  try_files {path} /index.php

  # Security headers
  header {
    -Server
    X-Content-Type-Options "nosniff"
    X-Frame-Options "DENY"
    X-XSS-Protection "1; mode=block"
  }

  # Add authenticated username as HTTP Header to the request
  header_down +X-WEBAUTH-USER {http.auth.user.id}

  # Protokoll
  log {
    output file /var/log/caddy/DigiErbe/tresor.log
  }
}

Benutzer anlegen

Konfiguration neu einlesen

Hinweise

  • Die verwendete Authentifizierungsmethode ist nicht sicher über HTTP! Daher raten wir dringend davon ab diese Anwendung öffentlich zugänglich zu machen!
  • das von Caddy verwendete Zertifikat führt in den meisten Browsern zu einer Sicherheitswarnung. Es handelt sich um ein von Caddy lokal selbstsigniertes Zertifikat. Im lokalen Netzwerk ist es unbedenklich zu verwenden.
S
Description
Webbasierte Anwendung zum zeitverzögerten Schlüsselzugriff im lokalen Netzwerk für Notfälle
Readme GPL-3.0 76 KiB
Languages
PHP 100%