Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:nitrokey:fidou2f [16.11.2018 14:08. ] – angelegt djangocentos:nitrokey:fidou2f [22.07.2019 14:53. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Nitrokey FIDO U2F in der Praxis unter CentOS 7 ======+====== Nitrokey FIDO U2F in der Praxis unter CentOS 7.x ====== 
 +{{:centos:nitrokey:nitrokey_fido_u2f_2.jpg?nolink&150 |Bild: Nitrokey FIDO U2F USB-Stick}} 
 +\\ In diesem Kapitel befassen wir uns mit der zusätzlichen Absicherung beim Login z.B. bei unserer [[centos:web_c7:nextcloud|Nextcloud-Installation]] mit Hilfe eines [[https://de.wikipedia.org/wiki/Security-Token|Sicherheitstoken]] im Speziellen mit **[[https://de.wikipedia.org/wiki/U2F|U2F]]**((**U**niversal **S**econd **F**actor)). Hierzu verwenden wir den **Nitrokey FIDO U2F** ([[https://www.nitrokey.com/files/doc/Nitrokey_FIDO_U2F_Infoblatt.pdf|Daten-/Infoblatt]]) welcher [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-fido-u2f-20|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 [[https://www.nitrokey.com/de/news/2018/neu-nitrokey-fido-u2f|Nitrokey-Stick]] findet findet man auch [[https://www.nitrokey.com/de/documentation/installation|hier]] bzw. im [[https://support.nitrokey.com/c/nitrokey-support|Support Forum]]. 
 + 
 +===== Hardwareinformationen ===== 
 +Informationen über den Stick können wir mit Hilfe des Befehls ''usb-devices'' aus dem RPM-Paket **usbutils** dem System abverlangen. 
 + 
 +   # usb-devices 
 +<code>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= 
 +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</code> 
 + 
 +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: 
 +<code>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</code> 
 + 
 +===== udev-Regeln ===== 
 +Für den Betrieb unter [[https://www.centos.org/|CentOS 7]] müssen wir uns noch passende udev-Definitionen **[[https://www.nitrokey.com/sites/default/files/41-nitrokey.rules|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: 
 +  - **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 
 +  - **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 
 +<file bash /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"</file> 
 + 
 +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 
 + 
 +===== Browser ===== 
 +Verwenden wir den Browser **[[https://www.google.com/chrome/|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**. 
 + 
 +{{ :centos:nitrokey:firefox_u2f.png?nolink&600 |Bild: Bildschirmhardcopy Firefox "about:config"}} 
 + 
 +Mit einem Doppelklick aktivieren wir nun diese Option und setzen diese auf **//true//**. 
 + 
 +===== Webserver/Anwendung ===== 
 +Melden wir uns nun an einer Webseite an, werden wir wie gewohnt aufgefordert uns mit unserem Benutzer und dem zugehörigen Passwort anzumelden. 
 + 
 +{{ :centos:nitrokey:nextcloud_u2f_1.png?nolink&800 |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. 
 + 
 +{{ :centos:nitrokey:nextcloud_u2f_2.png?nolink&800 |Bild: Bildschirmhardcopy -  Anmelden an unserer Cloud}} 
 + 
 +Nach einer Sekunde werden wir automatisch angemeldet und wir können den Stick wieder vom USB-Port abziehen. 
  
  • centos/nitrokey/fidou2f.1542377308.txt.gz
  • Zuletzt geändert: 16.11.2018 14:08.
  • von django