DecaTec

Home-Server | Linux | Nextcloud | Raspberry Pi | Programmierung | Fotografie

Nextcloud Zwei-Faktor-Authentifizierung mit Nitrokey FIDO2

Nextcloud Nitrokey Logo

Für die eigene Nextcloud spielt das Thema Sicherheit eine große Rolle, da in einer Cloud meistens auch sensible Daten gespeichert sind. Dass man für solche Dienste stets sichere Passwörter nutzen sollte, versteht sich von selbst. Dennoch kann ein Passwort noch so sicher sein, es bleibt der einzige „Faktor“ bei der Authentifizierung. Sollte dieses Passwort abhanden kommen, ist der Zugang zur Cloud nicht mehr als sicher zu betrachten.

Hier kommt das Konzept der Zwei-Faktor-Authentifizierung zum tragen: Neben Benutzername/Passwort wird hier ein zweiter Faktor für die Anmeldung benötigt. Nextcloud unterstützt mittlerweile viele Varianten der Zwei-Faktor-Authentifizierung. Das bekannteste Verfahren ist hier sicherlich TOTP – dabei wird z.B. auf dem Smartphone lediglich eine TOTP-App (beispielsweise andOTP) benötigt. Dies macht die Anmeldung schon einmal sicherer, aber dennoch handelt es sich beim Smartphone um ein Gerät, welches ebenfalls kompromittiert werden kann.

Am sichersten ist hier ein Gerät, welches ausschließlich für die Zwei-Faktor-Authentifizierung genutzt wird. Ich habe mir daher mal die Authentifizierung mittels des Nitrokey FIDO2 näher angeschaut.

Nitrokey FIDO2 – Hardware

Beim Nitrokey FIDO2 handelt es sich um ein USB-Device (USB Typ A), welches für die Zwei-Faktor-Authentifizierung genutzt werden kann. Auch wenn das Aussehen an einen USB-Stick erinnert, können jedoch keine Daten auf dem Nitrokey gespeichert werden.

Nitrokey FIDO2

Nitrokey FIDO2

Nitrokey FIDO2 als zweiten Faktor bei Nextcloud hinzufügen

Für die Nutzung eines Hardware-Devices als zweiten Faktor benötigt man zunächst einmal zwei zusätzliche PHP-Pakete, die auf dem Nextcloud-Server installiert sein sollten. Wenn dies noch nicht geschehen ist, holen wir dies nun nach:

apt update && apt install php-gmp php-bcmath

Als nächstes muss nun in der Nextcloud die App Two-Factor Webauthn aus dem Nextcloud App Store heruntergeladen und aktiviert werden. Hiermit kann als zweiter Faktor WebAuthn genutzt werden.

Die App Two-Factor Webauthn im Nextcloud App Store

Die App Two-Factor Webauthn im Nextcloud App Store

Anschließend gibt es in den persönlichen Einstellungen unter Sicherheit eine weitere Option Webauthn Devices. Hier einfach auf den Button Add Webauthn device klicken, den Nitrokey einstecken und einen Namen für das Gerät vergeben.

Nitrokey als WebAuthn Device hinzufügen

Nitrokey als WebAuthn Device hinzufügen

Zum Test nun einfach einmal von der Cloud ab- und nochmal neu anmelden. Hier sollte dann nach Eingabe von User/Passwort die entsprechende Option für den zweiten Faktor angeboten werden.

Nextcloud: Login mit Nitrokey/WebAuthn

Nextcloud: Login mit Nitrokey/WebAuthn

Hier wieder den Nitrokey einstecken, kurz berühren und der Login sollte damit erfolgreich abgeschlossen sein.

Das ganze funktioniert auch analog mit der App Two-Factor U2F. Damit kann als zweiter Faktor U2F verwendet werden. WebAuthn ist allerdings das modernere Verfahren, daher gebe ich WebAuthn den Vorrang.

Hinweis: Wenn die Zwei-Faktor-Authentifizierung aktiviert wurde, ist es für viele Clients (z.B. Nextcloud Desktop-Client) keine direkte Anmeldung per Benutzername/Passwort möglich. In diesem Fall muss man hier sog. App-Passwörter generieren, die dann bei der Anmeldung der Clients genutzt werden können. Dies erledigt man in den persönlichen Einstellungen unter Sicherheit (Geräte & Sitzungen).

Ab Nextcloud 19: Passwortlose Anmeldung

Nextcloud unterstützt ab Version 19 auch eine rein passwortlose Authentifizierung. Diese wird ebenfalls unter den persönlichen Einstellungen im Bereich Sicherheit aktiviert. Der Ablauf zum Hinzufügen des Nitrokeys ist dabei prinzipiell der gleiche wie bei der Zwei-Faktor-Authentifizierung.

Nitrokey für passwortlose Authentifizierung hinzufügen

Nitrokey für passwortlose Authentifizierung hinzufügen

Nach der Einrichtung kann im Anmeldebildschirm der Cloud neben der klassischen Eingabe von Benutzername und Passwort die Option Mit einem Gerät anmelden gewählt werden.

Nextcloud: Anmeldung mit einem Gerät

Nextcloud: Anmeldung mit einem Gerät

Hier reicht dann die Eingabe des Benutzernamens und das anschließende Bestätigen des Logins mittels des Nitrokeys.

Zusätzlich kann natürlich noch ein beliebiger zweiter Faktor für die Authentifizierung genutzt werden.

Nitrokey FIDO2 unter Linux

Unter Linux kann es passieren, dass der Nitrokey nicht sofort erkannt wird – beim Einstecken passiert hier einfach nichts. In diesem Fall muss nur ein kleiner Schritt durchgeführt werden, damit der Nitrokey auch unter Linux verwendet werden kann:

wget https://www.nitrokey.com/sites/default/files/41-nitrokey.rules
sudo mv 41-nitrokey.rules /etc/udev/rules.d/

Anschließend sollte der Nitrokey einwandfrei funktionieren.

Firmware-Updates

Der Nitrokey FIDO2 unterstützt ebenfalls Firmware-Updates. Dazu muss der Stick lediglich eingesteckt werden und die Firmware-Update-Seite mit einem Browser aufgerufen werden. Nun einfach den Anweisungen folgen, falls ein Firmware-Update verfügbar ist, wird dieses automatisch heruntergeladen und installiert.

Nitrokey FIDO2: Firmware-Update im Browser

Nitrokey FIDO2: Firmware-Update im Browser

Weitere Einsatzgebiete

Neben der Anmeldung an Nextcloud kann der Nitrokey auch für weitere Anmeldungen genutzt werden. Viele Webdienste unterstützen mittlerweile die Anmeldung per WebAuthn. Dazu gehören u.a.:

Auf dongleauth.info gibt es eine gute Zusammenstellung, welche Dienste bereits mit dem Nitrokey verwendet werden können.

Fazit

Der Nitrokey FIDO2 ist in ein paar Minuten in Nextcloud als zweiter Faktor bei der Authentifizierung eingerichtet und kann anschließend auf jedem Gerät genutzt werden – und ja: sogar am Smartphone.

Links

, , , , ,

Kommentare: 8

  • Tom sagt:

    Hallo Jan,

    danke für diesen interessanten Beitrag !
    Es steht auch auf meiner ToDo-Liste mich mit dem Thema zu beschäftigen ;)

    Was mich noch interessieren würde :
    – Was sollte man tun um keine Probleme zu kriegen wenn der Stick verloren oder kaputt geht ? Wie kann ich mich trotzdem z.B. bei GitHub einloggen ?
    Brauche ich einen (registrierten) zweiten Stick ?

    – Zu eigener Nextcloud-Instanz hat man in der Regel einen SSH-Zugang. Wie könnte man den 2. Faktor deaktivieren falls der o.g. Fall eintritt ?

    Gruss

    • Jan sagt:

      Hi Tom,

      in Normalfall erhältst du sog. Backup-Keys, wenn du die Zwei-Faktor-Authentifizierung aktivierst (so auch bei Nextcloud). Diese können dann einfach verwendet werden, sollte der zweite Faktor mal verloren gehen.
      Bei Nextcloud kannst du auch „hinten rum“ mittels OCC Apps deaktivieren und ggf. weiter konfigurieren. Hilfreich ist hier auch die App Two-Factor Admin Support: Hier kann bei Bedarf ein zweiter Faktor durch den Admin mittels OCC bereit gestellt werden.

      Gruß,
      Jan

  • Marcel sagt:

    Hallo Jan,

    wie immer ein super Artikel. Wenn ich fragen darf, warum Nitrokey und nicht SoloKey oder Yubico?

    Ich persönlich benutze ein SoloKey aus dem einfach Grund weil er Open Source ist und ich mir da durch mehr Möglichkeiten und ein längeren Support erhoffe.

    Gruß Marcel

    • Jan sagt:

      Hi Marcel,

      ja, hier ein ähnlicher Grund: Die Nitrokeys bestehen auf offener Hard- Und Software. Hier fällt zumindest mal der Yubikey raus.
      Darüber hinaus wurde ich eigentlich erst auf Nitrokey aufmerksam, weil diese Firma mit Nextcloud zusammen arbeitet (siehe hier). Daher musste ich mir dies einfach mal näher ansehen.

      Gruß,
      Jan

  • Andreas sagt:

    Hallo,
    ersteinmal vielen Dank für die ausführlichen Tutorials. Ich habe bei mir auch Nextcloud 20 am laufen und wollte mir webauthn mit einem Yubikey 5C einrichten.
    Hierbei bin ich leider fast daran gescheitert da er sich bei der Registrierung aufgehangen hat. Dies ist ein bekannter Fehler und tritt in Kombination von Win 10 und Firefox / Edge auf.
    Siehe hierzu auch:
    https://github.com/michib/nextcloud_twofactor_webauthn/issues/37

    Also an alle die einen Yubikey 5C unter Windows 10 einrichten wollen bitte verwendet Chrome. Mit diesem funktioniert es sofort.

  • Chris sagt:

    Hi Jan,

    die TOTP App nervt und wenn ich deinen Artikel richtig verstehe, gehen der FIDO2 und die App parallel. Ich hab den Stick hier liegen und bin deiner Anleitung gefolgt. Ich scheitere aber an dem Download der App „Two-Factor Webauthn“, wie auf deinem ScreenShot ersichtlich. „Could not extract app twofactor_webauthn“. Hm, hab ich ein konfig Problem in meiner Nextcloud 20.0.8 (bin noch auf Ubuntu 18.04, dein Installations Artikel, inplace PHP upgrade mit repository ppa:ondrej/php. NextCloud läuft stabil bis auf den CRON seit letztem Update. Ohne die App zu installieren, bietet mit Nextcloud in den SecurityEinstellungen bereits die Registrierung eines WebAuthn Gerätes an. Der Nitro FIDO2 ist da auch registriert, allerdings bietet mit die Nextcloud beim Login den Stick nciht als 2. Faktor an, sondern nur den OTP Cient. Ich war ja happy auf deinem Screenshot beides untereinander stehen zu sehen.

    a) ich gehe davon aus, ich benötige trotz der WebAuthN option in Security die App
    b) dei App lässt sich nicht runterladen und ist damit die RootCause dass es nicht funktioniert.

    Was meinst du? Weiß hier nicht weiter.

    • Jan sagt:

      Hi Chris,

      eigentlich ist die App ja bereits installiert, wenn er dir das unter den Einstellungen schon anbietet. Schau mal im apps-Verzeichnis deiner Instanz nach, ob da nicht noch irgendwelche Leichen versteckt sind.
      Ansonsten: Wenn sich eine App auf Grund eines Fehlers nicht installieren lässt, dann würde ich erst einmal bei GitHub einen Issue erfassen, da dies ja eher auf einen technischen Fehler der App hinweist.

      Gruß,
      Jan

      • Christian Czaja sagt:

        Hallo Jan,

        die App war wohl kurzfristig nicht verfügbar, danach in einer neuen Version. Murphy, ich hab wohl ausgerechnet in der Zeit reingegriffen. Alles installiert, funktioniert wie von dir beschrieben. Vielen Dank für deine Antworten und deinen Blog.

        Gruß
        Chris

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.