Warum die App eines erstellt
Abschnitt betitelt „Warum die App eines erstellt“Ein Nextcloud-Administrator kann über WebDAV nicht in die eigenen Dateien eines anderen Benutzers schreiben. Wenn daher ein Job mit Destination Type Nextcloud User als Migration oder Testmigration läuft, werden die Dateien als dieser Benutzer geschrieben, mit einem App-Passwort, das die App für den Lauf erstellt.
- Nur für diese Art von Job. Eine Analyse schreibt nichts in die Dateien des Benutzers und erhält keines, ebenso wenig ein Job in einen Teamordner oder eine Dateifreigabe.
- Eines pro Lauf. Jedes Passwort wird für einen Lauf erstellt und trägt den Namen
SMART Migration runsowie die Nummer des Laufs. - Nur für einen Administrator. Das Konto, das den Job übernimmt, muss ein Nextcloud-Administrator sein. Ein Mitglied einer unter Wer die App nutzen kann gewählten Gruppe darf zwar die API der App nutzen, doch eine Übernahme durch ein solches Konto erhält kein Passwort.
- Nur für einen existierenden Benutzer. Ein Job, dessen
Destination Userkein Nextcloud-Benutzer ist, erhält kein Passwort, und sein Lauf kann nicht schreiben.
Der Lebenszyklus eines Passworts
Abschnitt betitelt „Der Lebenszyklus eines Passworts“Das Passwort existiert genau so lange wie der Lauf, für den es erstellt wurde.
Der Server übernimmt den Job
Der SMART-Migration-Server fragt die App nach dem nächsten Job mit Status Bereit und sendet mit der Anfrage seinen öffentlichen RSA-Schlüssel.
Die App erstellt das Passwort
Sobald der Job sicher vergeben ist, erstellt die App ein neues App-Passwort für den Zielbenutzer: 72 zufällige Buchstaben und Ziffern aus dem sicheren Zufallsgenerator von Nextcloud. Die App vermerkt, dass sie für den Lauf eines ausgegeben hat, niemals aber das Passwort selbst.
Es wird verschlüsselt und gesendet
Das Passwort wird mit dem öffentlichen Schlüssel des Servers verschlüsselt und Base64-kodiert in der Antwort auf die Übernahme zurückgegeben. Es wird nie im Klartext gesendet.
Der Server schreibt die Dateien
Der Server entschlüsselt das Passwort mit seinem privaten Schlüssel und meldet sich als Zielbenutzer bei WebDAV an, um die Dateien zu schreiben.
Die App widerruft es
Wenn der Server den Lauf als Abgeschlossen oder Abgebrochen meldet oder der Job abgebrochen wird, widerruft die App das Passwort sofort. Ein gelöschter, per Massenaktion abgebrochener oder von einem angehaltenen Server zurückgelassener Lauf wird von einem Hintergrundjob erfasst, der alle fünf Minuten jedes Passwort widerruft, dessen Lauf beendet ist.
Die Bereinigung benötigt die Hintergrundjobs von Nextcloud
Die fünfminütige Bereinigung läuft als einer der Hintergrundjobs von Nextcloud. Stellen Sie diese unter Verwaltungseinstellungen → Grundeinstellungen auf Cron ein, damit sie unabhängig davon laufen, ob jemand eine Seite geöffnet hat. Ein Lauf, der im Status Läuft verbleibt, behält sein Passwort, bis er endet.
Wie es unterwegs geschützt ist
Abschnitt betitelt „Wie es unterwegs geschützt ist“Das Passwort wird ausschließlich in der Antwort auf die Übernahme übertragen, verschlüsselt mit einem Schlüssel, den nur der SMART-Migration-Server entschlüsseln kann. Wer diese Antwort liest – in einem Log, in einem Proxy, der HTTPS untersucht, oder in einer gespeicherten Kopie der Kommunikation –, sieht nur Chiffretext.
| Bestandteil | Was verwendet wird |
|---|---|
| Der Schlüssel des Servers | Ein RSA-Schlüsselpaar mit mindestens 2048 Bit, erzeugt vom SMART-Migration-Server. Nur der öffentliche Schlüssel wird gesendet, als publicKey: Base64 seiner DER-Form oder PEM. |
| Verschlüsselung | RSA-OAEP mit SHA-1, ausgeführt durch das OpenSSL von PHP auf dem Nextcloud-Server. |
| Bei der Übertragung | Der Chiffretext, Base64-kodiert, als destinationUserAppPassword, innerhalb der HTTPS-Verbindung, die der Server ohnehin nutzt. |
| Entschlüsselung | CrypterObject von PowerBuilder auf dem SMART-Migration-Server, mit dem privaten Schlüssel. |
- Warum Public-Key-Verschlüsselung. Der öffentliche Schlüssel ist kein Geheimnis: Selbst wenn eine Anfrage und ihre Antwort gemeinsam abgefangen werden, geben sie das Passwort nicht preis. Ein gemeinsamer Schlüssel, der mit der Anfrage gesendet würde, wäre neben dem Passwort unterwegs, das er schützen soll.
- Warum SHA-1 in OAEP. OAEP mit SHA-1 ist das, was
CrypterObjectvon PowerBuilder entschlüsselt. Die Sicherheit von OAEP beruht nicht auf der Kollisionsresistenz der Hashfunktion, daher spielen die bekannten Kollisionsschwächen von SHA-1 hier keine Rolle. - Kein Schlüssel, kein Passwort. Eine Übernahme ohne
publicKeyerhält für einen solchen Job kein Passwort, und das Nextcloud-Log nennt den Grund. EinpublicKey, der kein öffentlicher RSA-Schlüssel mit mindestens 2048 Bit ist, wird abgelehnt, bevor ein Job übernommen wird. - Im Fehlerfall wird geschlossen. Kann das Passwort nicht verschlüsselt werden, wird es sofort widerrufen, und die Antwort auf die Übernahme enthält keines.
Auf dem SMART-Migration-Server
Der Server erzeugt sein Schlüsselpaar beim Start eines Workers und hält den privaten Schlüssel ausschließlich im Arbeitsspeicher. Er entschlüsselt das Passwort unmittelbar vor der Anmeldung bei WebDAV und schreibt weder das Passwort noch den privaten Schlüssel jemals in seine Logs.
Was gespeichert wird und wo
Abschnitt betitelt „Was gespeichert wird und wo“Weder die App noch Nextcloud speichert das Passwort selbst.
- Die eigene Liste der App-Passwörter von Nextcloud speichert es wie jedes App-Passwort: als Einweg-Hash, angezeigt in den Einstellungen → Sicherheit → Geräte & Sitzungen des Benutzers, solange der Lauf andauert.
- Die App speichert eine Zeile pro ausgegebenem Passwort, mit dem Lauf, dem Benutzer, dem Erstellungszeitpunkt und dem Konto, das den Job übernommen hat, damit sie weiß, was zu widerrufen ist. Die Zeile wird gelöscht, sobald das Passwort widerrufen ist.
- Das Nextcloud-Log verzeichnet jedes ausgegebene und widerrufene Passwort mit Benutzer und Lauf auf der Stufe Info, und jede Ablehnung als Warnung: kein
publicKey, eine Übernahme durch ein Konto, das kein Administrator ist, ein Benutzer, der nicht existiert.
Worauf es zugreifen kann und worauf nicht
Abschnitt betitelt „Worauf es zugreifen kann und worauf nicht“Ein App-Passwort meldet sich als sein Benutzer an. Solange der Lauf andauert, kann es daher in Nextcloud alles tun, was dieser Benutzer kann. Es ist nicht auf den Zielordner des Jobs beschränkt.
- Es kann nicht zugreifen auf externen Speicher, bei dem sich der Benutzer mit seinen eigenen Anmeldedaten anmeldet, noch auf Dateien, die mit den eigenen Schlüsseln des Benutzers verschlüsselt sind: Es wird ohne das Anmeldepasswort des Benutzers erstellt. Serverseitige Verschlüsselung mit dem Master-Schlüssel ist kein Problem.
- Es ist kurzlebig. Es existiert von der Übernahme bis zum Ende des Laufs, und nur der SMART-Migration-Server kann es lesen.
Wovor es schützt und wovor nicht
Abschnitt betitelt „Wovor es schützt und wovor nicht“Die Verschlüsselung hält das Passwort von allem fern, was zwischen der App und dem Arbeitsspeicher des SMART-Migration-Servers liegt. Sie schützt nicht vor jemandem, der bereits eines der beiden Enden kontrolliert.
| Geschützt | Nicht geschützt |
|---|---|
| Die Antwort auf die Übernahme, die in ein Log, einen Support-Mitschnitt oder eine gespeicherte Datei geschrieben wird | Jemand, der den SMART-Migration-Server kontrolliert, während der Lauf andauert: Er besitzt den privaten Schlüssel und bereits die Microsoft 365-Anmeldedaten |
| Ein Proxy oder Überwachungswerkzeug, das HTTPS-Verkehr untersucht | Ein Nextcloud-Administrator, der mit occ ohnehin für jeden Benutzer App-Passwörter erstellen kann |
| Eine Anfrage und ihre Antwort, die gemeinsam abgefangen werden | Ein Passwort, das von einem Lauf übrig bleibt, der nie endet: Es besteht, bis der Lauf beendet ist |
Ein Passwort manuell widerrufen
Abschnitt betitelt „Ein Passwort manuell widerrufen“Der Benutzer kann das Passwort in seinen eigenen Einstellungen → Sicherheit → Geräte & Sitzungen widerrufen; ein Administrator kann es mit occ user:auth-tokens:list und occ user:auth-tokens:delete auflisten und löschen. Der Lauf kann danach nicht mehr in die Dateien des Benutzers schreiben.
Siehe auch