diff --git a/README.md b/README.md index 96978db..28e9fd8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,73 @@ # Tresor -Webbasierte Anwendung zum zeitverzögerten Schlüsselzugriff für Notfälle \ No newline at end of file +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': '/key_storage', + 'allowed_users': 'allowed_users.json', + 'delay_days': 1, + 'expire_days': 3, + 'downloads': 0, + 'max_downloads': 2 +} +``` + +## Einstellungen Caddy Webserver {#Caddy-Config} + +### 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. \ No newline at end of file