Files
Tresor/README.md
T
2026-04-04 15:05:44 +00:00

110 lines
4.0 KiB
Markdown

# 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
- Git-Repository klonen oder herunterladen.
- [Tresor-Einstellungen](#Einstellungen) in tresor.json anpassen
- [Cron-Job](#Cron) für Hintergrunddienst anlegen
- [Caddy-Konfigurationsdatei](#Caddy-Config) anpassen
- [User für basic_auth](#addUser) in Caddy-Konfigurationsdatei einfügen
- Caddy-Konfigurationsdatei an den Ort kopieren, von dem Caddy seine Konfiguration einliest
- Caddy-Konfiguration [neu einlesen](#Caddy-Reload)
## Einstellungen Tresor {#Einstellungen}
### 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
```javascript
{
'key_storage': '/keys',
'allowed_users': 'allowed_users.json',
'delay_days': 1,
'expire_days': 3,
'downloads': 0,
'max_downloads': 2
}
```
## Einstellungen Caddy Webserver {#Caddy-Config}
```
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 {#addUser}
### Konfiguration neu einlesen {#Caddy-Reload}
## 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.