Nitrokey FIDO U2F in der Praxis unter CentOS 7.x

Bild: Nitrokey FIDO U2F USB-Stick
In diesem Kapitel befassen wir uns mit der zusätzlichen Absicherung beim Login z.B. bei unserer Nextcloud-Installation mit Hilfe eines Sicherheitstoken im Speziellen mit U2F1). Hierzu verwenden wir den Nitrokey FIDO U2F (Daten-/Infoblatt) welcher hier für einen überschaubaren Betrag von etwas mehr als 20€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Besonderheiten bei der Verwendung unter CentOS 7.x ein.

Der Nitrokey FIDO U2F Cryptostick vereint in einem kleinen Plastikgehäuse ein vollständig FIDO Universal 2nd Factor (U2F) kompatibles zu 100% Open Source und Open Hardware Device mit einer Sensortaste/Knopf welches zum zusätzlichen Absichern einer unbegrenzte Anzahl von Benutzerkonten verwendet werden kann. Weitere Informationen zum Nitrokey-Stick findet findet man auch hier bzw. im Support Forum.

Informationen über den Stick können wir mit Hilfe des Befehls usb-devices aus dem RPM-Paket usbutils dem System abverlangen.

 # usb-devices
T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#= 20 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=20a0 ProdID=4287 Rev=01.00
S:  Manufacturer=Nitrokey
S:  Product=Nitrokey FIDO U2F
S:  SerialNumber=0000000000000000
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

Mit Hilfe des Befehls lsusb aus dem RPM-Paket usbutils können wir auch die Produkt- und Hersteller-Identifikationsnummer des Nitrokey-Sticks ermitteln.

 # lsusb
Bus 002 Device 020: ID 20a0:4287 Clay Logic 

Im Syslog wird uns beim Anstecken des Sticks dies entsprechend protokolliert:

Nov 16 15:39:55 T410 kernel: usb 2-1.2: new full-speed USB device number 21 using ehci-pci
Nov 16 15:39:55 T410 kernel: usb 2-1.2: New USB device found, idVendor=20a0, idProduct=4287
Nov 16 15:39:55 T410 kernel: usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nov 16 15:39:55 T410 kernel: usb 2-1.2: Product: Nitrokey FIDO U2F
Nov 16 15:39:55 T410 kernel: usb 2-1.2: Manufacturer: Nitrokey
Nov 16 15:39:55 T410 kernel: usb 2-1.2: SerialNumber: 0000000000000000
Nov 16 15:39:55 T410 kernel: hid-generic 0003:20A0:4287.0019: hiddev0,hidraw2: USB HID v1.11 Device [Nitrokey Nitrokey FIDO U2F] on usb-0000:00:1d.0-1.2/input0
Nov 16 15:39:55 T410 mtp-probe: checking bus 2, device 21: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2"
Nov 16 15:39:55 T410 mtp-probe: bus: 2, device: 21 was not an MTP device

Für den Betrieb unter CentOS 7 müssen wir uns noch passende udev-Definitionen hier besorgen und unserer Umgebung anpassen. Dies ist notwendig, da sonst die Gerätedatei nicht mit den entsprechenden Benutzer-Rechten angelegt wird! Wir wechseln also erst einmal in das entsprechende Konfigurationsverzeichnis /etc/udev/rules.d/.

 # cd /etc/udev/rules.d/

Dann holen wir uns die entsprechende Musterdatei auf unseren Rechner.

 # wget https://www.nitrokey.com/sites/default/files/41-nitrokey.rules

Wie schon erwähnt ist es unter CentOS 7 notwendig für unseren Benutzer eine Änderung an der Berechtigung der Gerätedatei vorzunehmen. Grundsätzlich gibt es hierzu zwei Varianten:

  1. Dateirechte : Wir sorgen dafür dass auf die Gerätedatei /dev/hidraw0 jeder lesend und schreibend zugreifen kann, in dem wir die Dateirechte auf 666 setzen, oder
  2. Nutzerrechte : wir sorgen dafür dass die Gerätedatei /dev/hidraw0 direkt unserem Benutzer, mit dem wir uns an unserem Rechner anmelden, gehört.

Wir entscheiden uns hier für die Option 2., wir sorgen also dafür dass die Gerätedatei unserem Nutzer - in diesem Konfigurationsbeispiel dem Benutzer django gehört, sobald dieser den Kryptostick in einen USB-Port steckt.

Zunächst legen wir als erstes mal die Gruppe plugdev an.

 # groupadd plugdev

Dann setzen wir unseren Benutzer django in diese Gruppe plugdev.

 # usermod -aG plugdev django

Nun passen wir noch die eingangs heruntergeladene udev-Regeldatei /etc/udev/rules.d/41-nitrokey.rules an. Der entscheidende Zusatz ist nun hier die Option OWNER=„django“.

 # vim /etc/udev/rules.d/41-nitrokey.rules
/etc/udev/rules.d/41-nitrokey.rules
# Nitrokey U2F
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", OWNER="django", GROUP="plugdev", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0"
# Nitrokey FIDO U2F
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", OWNER="django", GROUP="plugdev", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="4287"
 
SUBSYSTEM!="usb", GOTO="gnupg_rules_end"
ACTION!="add", GOTO="gnupg_rules_end"
 
# USB SmartCard Readers
## Crypto Stick 1.2
ATTR{idVendor}=="20a0", ATTR{idProduct}=="4107", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess"
## Nitrokey Pro
ATTR{idVendor}=="20a0", ATTR{idProduct}=="4108", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess"
## Nitrokey Storage
ATTR{idVendor}=="20a0", ATTR{idProduct}=="4109", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess"
## Nitrokey Start
ATTR{idVendor}=="20a0", ATTR{idProduct}=="4211", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess"
## Nitrokey HSM
ATTR{idVendor}=="20a0", ATTR{idProduct}=="4230", ENV{ID_SMARTCARD_READER}="1", ENV{ID_SMARTCARD_READER_DRIVER}="gnupg", GROUP+="plugdev", TAG+="uaccess"
 
LABEL="gnupg_rules_end"

Zum Aktivieren unserer geänderten udev-Regeldatei lassen wir diese nun erneut einlesen; hierzu verwenden wir folgenden Befehl:

 # udevadm control --reload-rules

Sobald wir nun unseren Nitrokey FIDO U2F-Stick in einen USB-Port stecken wird die zugehörige Gerätedate mit den richtigen Berechtigungen angelegt.

 # ll /dev/hidraw0
crw-rw-r--. 1 django plugdev 246, 2 16. Nov 15:39 /dev/hidraw0

Verwenden wir den Browser Google Chrome bzw. Chromium müssen wir nichts besonderes unternehmen, da diese bereits bestens vorbereitet sind.

Nutzen wir den Browser Firefox müssen wir die Option

Hierzu geben wir in der Adresszeile about:config ein und suchen dann nach der Option u2f.

Bild: Bildschirmhardcopy Firefox "about:config"

Mit einem Doppelklick aktivieren wir nun diese Option und setzen diese auf true.

Melden wir uns nun an einer Webseite an, werden wir wie gewohnt aufgefordert uns mit unserem Benutzer und dem zugehörigen Passwort anzumelden.

Bild: Bildschirmhardcopy -  Anmelden an unserer Cloud

Nach dem Bestätigen der Daten werden wir nun gebeten unseren Nitrokey FIDO U2F-Stick anzustecken bzw. die Touch-Taste darauf zu drücken bzw. genauer gesagt zu berühren.

Bild: Bildschirmhardcopy -  Anmelden an unserer Cloud

Nach einer Sekunde werden wir automatisch angemeldet und wir können den Stick wieder vom USB-Port abziehen.


1)
Universal Second Factor
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/nitrokey/fidou2f.txt
  • Zuletzt geändert: 22.07.2019 14:53.
  • von 127.0.0.1