Σύνδεση σε επιφάνεια εργασίας και πιστοποίηση χρηστών Linux

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

active

Εισαγωγή

This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and compatible Nitrokeys. You will set up your Nitrokey as a second factor for authentication. This means you will need your usual login method (likely your password) and your Nitrokey to login.

Αν θέλετε να χρησιμοποιήσετε το Nitrokey σας ως εναλλακτική μέθοδο σύνδεσης (κωδικός πρόσβασης Ή Nitrokey), ανατρέξτε στην ενότητα Εναλλακτική μέθοδος ελέγχου ταυτότητας μετά την ολοκλήρωση του κύριου οδηγού.

If you want to login to you computer using Nitrokey Pro 2, Nitrokey Storage 2 and Nitrokey Start you can visit the instructions available here.

Προειδοποίηση

Ο παρακάτω οδηγός μπορεί ενδεχομένως να σας αποκλείσει από τον υπολογιστή σας. Θα πρέπει να γνωρίζετε αυτούς τους κινδύνους, καθώς συνιστάται να χρησιμοποιήσετε τις παρακάτω οδηγίες πρώτα σε έναν δευτερεύοντα υπολογιστή ή μετά από ένα πλήρες αντίγραφο ασφαλείας.

Ενδέχεται να χάσετε την πρόσβαση στα δεδομένα σας μετά τη διαμόρφωση των μονάδων PAM.

Απαιτήσεις

  • Ubuntu 24.04 with Gnome Display Manager (GDM).

Οδηγίες

  1. Δημιουργήστε έναν εφεδρικό χρήστη και δώστε του δικαιώματα root

    $ sudo adduser <backup_user>
    $ sudo usermod -aG sudo <backup_user>
    

    Σε περίπτωση που προτιμάτε να ρυθμίσετε το U2F για έναν μεμονωμένο χρήστη και έχετε κλειδωθεί από τη σύνοδο χρήστη, θα μπορείτε να συνδεθείτε με το <backup_user> και να προχωρήσετε με τη συντήρηση.

  2. Εγκατάσταση libpam-u2f

    On Ubuntu 24.04 it is possible to download directly libpam-u2f from the official repos

    $ sudo apt install libpam-u2f
    

    Σημείωση

    • Εναλλακτικά, μπορείτε να δημιουργήσετε το libpam-u2f από το Git.

    • Για να επαληθεύσετε ότι η βιβλιοθήκη έχει εγκατασταθεί σωστά, εισαγάγετε την ακόλουθη εντολή:

    $ file /lib/x86_64-linux-gnu/security/pam_u2f.so
    

    Η έξοδος θα πρέπει να είναι κάτι σαν το ακόλουθο:

    /lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
    
  3. Δημιουργία του αρχείου ρυθμίσεων U2F

    To generate the configuration file we will use the pamu2fcfg utility. First plug your Nitrokey (if you did not already), and enter the following command:

    $ pamu2fcfg > ~/u2f_keys
    

    Once you run the command above, you will need to touch the device while it flashes. Once done, pamu2fcfg will append its output the u2f_keys file in the format:

    <username>:KeyHandle,PublicKey,flags
    

    This will look something like the following:

    nitrouser:fS6vQ9uWa0VizcczyZ/bvk5kcQJkIJOC/21/e7dXFe/fnONSL705EkeiUpZpL/3seAWL/qW4/mqb0/WtiZoP/NOLTRM4EEAg1ANLsfYgSzRd/AjsW3z8kJwgckbvwDUyB90ByR09XtBhuE41vMsEk6J+9CS0+ZuPSB0KXRG7z2yZpQLldjE/ijsdIdd8Ct2oXSiZ/zTb/t5kRafNJVkp=,Oo4U9XvIhI9r0WNnvoMwG5/pbgwYd4GMCYEinhWcsI2hKUebYj92JOxDsSa3zd2A9OB0ofXgB16FD2naev3YmLch==,es256,+presence
    

    Σημειώστε, αυτή η έξοδος δεν δημιουργήθηκε απευθείας από το pamu2fcfg και δεν περιέχει ευαίσθητες πληροφορίες. Αποσκοπεί απλώς στο να δείξει την αναμενόμενη μορφή και το μήκος της εξόδου.

    Πρακτική συμβουλή

    • The file must be named u2f_keys

    • Συνιστάται να δοκιμάσετε πρώτα τις οδηγίες με έναν μόνο χρήστη. Η διαμόρφωση άλλων χρηστών θα προστεθεί στην ενότητα 7.

  4. Setting up a backup Nitrokey

    This step is optional, however it is advised to have a second Nitrokey as backup in the case of loss, theft or destruction of your primary Nitrokey.

    To set up a backup key, repeat the procedure above, and use pamu2fcfg -n like this:

    $ pamu2fcfg -n >> ~/u2f_keys
    

    This will omit the <username> field, and the output is appended to the line with your <username>, this will look something like this:

    <username>:Zx...mw,04...0a:xB...fw,es256,+presence:04...3f,es256,+presence
    
  5. Securing the config file

    Για μεγαλύτερη ασφάλεια, αφού δημιουργηθεί το αρχείο ρυθμίσεων, θα μετακινήσουμε το παραγόμενο αρχείο ~/u2f_keys στο /etc/Nitrokey/ και θα αλλάξουμε τα δικαιώματα πρόσβασης χρησιμοποιώντας αυτές τις εντολές:

    $ sudo mkdir /etc/Nitrokey
    $ sudo mv ~/u2f_keys /etc/Nitrokey/
    $ sudo chmod 644 /etc/Nitrokey/u2f_keys
    
  6. Τροποποίηση της Pluggable Authentication Module PAM

    Ρυθμίστε τα αρχεία της ενότητας PAM στη διεύθυνση /etc/pam.d/. Αυτή είναι μια δοκιμαστική φάση - το βήμα 8 θα επιβάλει τη διαμόρφωση μόλις επιβεβαιώσετε ότι λειτουργεί.

    In this guide we will modify the common-auth file as it handles the authentication settings which are common to all services, other options are described in PAM Modules. You can modify the file with the following command:

    $ sudo editor /etc/pam.d/common-auth
    

    Add the following line at the bottom of the file:

    #Nitrokey config
    auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
    

    Πρακτική συμβουλή

    • Χρησιμοποιούμε το sufficient για δοκιμές και θα το αλλάξουμε σε required στο βήμα 8.

    • Εφόσον χρησιμοποιούμε την Κεντρική αντιστοίχιση ελέγχου ταυτότητας, πρέπει να δηλώσουμε στο pam_u2f τη θέση του αρχείου που θα χρησιμοποιηθεί με την επιλογή authfile.

    • If you often forget to insert the key, prompt option makes pam_u2f print Insert your U2F device, then press ENTER. and give you a chance to insert the Nitrokey.

    • If you would like to be prompted to touch the Nitrokey, cue option will make pam_u2f print Please touch the device. message. You can change the message in [cue_prompt=Please touch the device.].

    Σημείωση

    Γιατί τοποθέτηση από κάτω; Το PAM επεξεργάζεται τις ενότητες από πάνω προς τα κάτω. Η τοποθέτηση της διαμόρφωσης U2F στο κάτω μέρος εξασφαλίζει ότι ο έλεγχος ταυτότητας κωδικού πρόσβασης ελέγχεται πρώτα, δημιουργώντας μια ροή εργασίας δεύτερου παράγοντα (κωδικός πρόσβασης + U2F).

    Για εναλλακτικές επιλογές ελέγχου ταυτότητας (κωδικός πρόσβασης Ή Nitrokey) και λεπτομερείς εξηγήσεις σχετικά με τον τρόπο με τον οποίο η θέση γραμμής και οι σημαίες ελέγχου επηρεάζουν τον έλεγχο ταυτότητας, ανατρέξτε στην ενότητα Εναλλακτική μέθοδος ελέγχου ταυτότητας.

    Μόλις τροποποιήσουμε το common-auth, μπορούμε να αποθηκεύσουμε και να βγούμε από το αρχείο.

    You can test the configuration by typing sudo ls in the terminal. After typing in your password you should be prompted with the message Please touch the device. and have a similar output on the terminal:

    nitrouser@nitrouser:~$ sudo ls
    [sudo] password for nitrouser:  Please touch the device.
    

    You can also test your configuration by logging out of the user session and logging back. A similar screen should be displayed once you you unplug/replug yout Nitrokey and type your password:

    img6
  7. Setting up multiple users

    Αφού επιβεβαιώσετε ότι ο έλεγχος ταυτότητας με το Nitrokey σας λειτούργησε, μπορείτε να ρυθμίσετε το αρχείο ρυθμίσεων U2F για τους άλλους χρήστες στο σύστημά σας.

    Προειδοποίηση

    Εάν δεν ρυθμίσετε όλους τους χρήστες στο αρχείο ρυθμίσεων U2F και συνεχίσετε με την επιβολή του ελέγχου ταυτότητας Nitrokey στο βήμα 8, δεν θα μπορείτε να συνδεθείτε με κανέναν μη ρυθμισμένο χρήστη!

    To configure u2f for multiple users, pamu2fcfg takes the -u <username> option, the output can be appended to the u2f_keys file like this:

    $ sudo pamu2fcfg -u <username> >> /etc/Nitrokey/u2f_keys
    

    Για να προσθέσετε ένα εφεδρικό κλειδί Nitrokey σε αυτόν τον χρήστη, συνδέστε το εφεδρικό κλειδί Nitrokey και κάντε ό,τι κάνατε και για τον κύριο χρήστη:

    $ sudo pamu2fcfg -n >> /etc/Nitrokey/u2f_keys
    

    Στη συνέχεια επαναλάβετε αυτή τη διαδικασία για όλους τους χρήστες στο σύστημά σας.

  8. Enforcing Nitrokey second factor authentication

    Ίσως έχετε παρατηρήσει ότι η πιστοποίηση με το Nitrokey δεν είχε ακόμη επιβληθεί. Αφού επιβεβαιώσουμε ότι ο έλεγχος ταυτότητας με τη χρήση του Nitrokey λειτουργεί, μπορούμε να τον επιβάλουμε αλλάζοντας τη σημαία sufficient σε required.

    Προειδοποίηση

    Πριν συνεχίσετε με αυτό το βήμα, βεβαιωθείτε ότι έχετε:

    • Ελέγξατε ότι ο έλεγχος ταυτότητας με το Nitrokey όντως λειτουργεί, διαφορετικά μπορεί να χάσετε την πρόσβαση στον υπολογιστή σας.

    • Ρυθμίστε ένα εφεδρικό Nitrokey. Διαφορετικά, αν χάσετε ή σπάσετε το Nitrokey σας, θα χάσετε την πρόσβαση στον υπολογιστή σας!

    Προχωρήστε με προσοχή!

    Για να το κάνετε αυτό, πρέπει να επεξεργαστείτε το αρχείο ρυθμίσεων PAM:

    $ sudo editor /etc/pam.d/common-auth
    

    Στη γραμμή που προσθέσατε νωρίτερα στο κάτω μέρος του αρχείου αλλάξτε τη λέξη sufficient σε required. Θα πρέπει να φαίνεται ως εξής:

    #Nitrokey config
    auth    required pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
    

After completing the setup, it is recommended to reboot your computer and unplug/replug the Nitrokey.

Alternative Authentication Method

Αν προτιμάτε να χρησιμοποιείτε το Nitrokey σας ως εναλλακτική λύση για τον κωδικό πρόσβασής σας (password OR Nitrokey), μπορείτε να ρυθμίσετε αυτό:

Configuration Steps:

  1. Μετακινήστε τη γραμμή διαμόρφωσης PAM στην κορυφή **** του /etc/pam.d/common-auth (πριν από άλλες ενότητες auth)

  2. Διατηρήστε τη σημαία ελέγχου sufficient.

Αυτό επιτρέπει τον έλεγχο ταυτότητας μόνο με οποιονδήποτε παράγοντα. Σημειώστε ότι αυτό παρέχει λιγότερη ασφάλεια από τον έλεγχο ταυτότητας δεύτερου παράγοντα.

Κατανόηση των τρόπων ελέγχου ταυτότητας

Ο συνδυασμός της θέσης γραμμής και της σημαίας ελέγχου καθορίζει τον τρόπο ελέγχου ταυτότητας:

Authentication Modes

Position

Control Flag

Authentication Mode

Use Case

Κάτω μέρος (μετά το pam_unix)

sufficient

Second factor (testing)

Φάση ασφαλούς δοκιμής

Κάτω μέρος (μετά το pam_unix)

required

Δεύτερος παράγοντας (επιβαλλόμενος)

Production security (main guide)

Top (πριν το pam_unix)

sufficient

Alternative factor

Convenience (password OR key)

Πώς λειτουργεί το PAM:

Το PAM επεξεργάζεται τις ενότητες διαδοχικά από πάνω προς τα κάτω. Η σημαία ελέγχου καθορίζει τον τρόπο με τον οποίο η επιτυχία ή η αποτυχία επηρεάζει τον συνολικό έλεγχο ταυτότητας:

  • sufficient: Η αποτυχία αγνοείται εάν άλλες ενότητες πετύχουν.

  • required: Η επιτυχία είναι υποχρεωτική, η αποτυχία προκαλεί συνολική αποτυχία ελέγχου ταυτότητας

Τι σημαίνει αυτό για εσάς:

Εναλλακτική αυθεντικοποίηση (πάνω + επαρκής):

  • Μπορείτε να συνδεθείτε με τον κωδικό πρόσβασής σας Ή μόνο με το Nitrokey σας.

  • If authentication with the Nitrokey succeeds, no password is required

  • Εάν ο έλεγχος ταυτότητας Nitrokey αποτύχει ή παραλειφθεί, ο κωδικός πρόσβασης θα εξακολουθεί να λειτουργεί.

  • Αυτό είναι πιο βολικό αλλά λιγότερο ασφαλές από τον έλεγχο ταυτότητας δεύτερου παράγοντα.

Security implications:

  • Ένας εισβολέας με τον κωδικό πρόσβασής σας μπορεί να συνδεθεί χωρίς το Nitrokey σας

  • Ένας εισβολέας με φυσική πρόσβαση στο Nitrokey σας μπορεί να συνδεθεί χωρίς τον κωδικό πρόσβασής σας.

  • Χρησιμοποιήστε το μόνο αν η ευκολία είναι πιο σημαντική από τη μέγιστη ασφάλεια.

Για λεπτομερείς επεξηγήσεις των σημαιών ελέγχου και των επιπτώσεών τους, ανατρέξτε στην ενότητα Σημαίες ελέγχου.

Ενότητες PAM

Υπάρχουν διάφορα αρχεία ενοτήτων PAM που μπορούν να τροποποιηθούν ανάλογα με τις ανάγκες σας:

  • By modifying /etc/pam.d/common-auth file, you will be able to use you Nitrokey for 2nd factor authentication for graphic login and sudo.

  • If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the /etc/pam.d/gdm-password

  • Εναλλακτικά, μπορείτε απλώς να τροποποιήσετε το αρχείο /etc/pam.d/sudo εάν επιθυμείτε να χρησιμοποιήσετε το FIDO U2F όταν χρησιμοποιείτε την εντολή sudo.

Σημαίες ελέγχου

Η σημαία ελέγχου καθορίζει τον τρόπο με τον οποίο η ενότητα PAM συμπεριφέρεται όταν ο έλεγχος ταυτότητας είναι επιτυχής ή αποτυχημένος. Στο βήμα 6 χρησιμοποιήσαμε τη σημαία sufficient για δοκιμή, και στη συνέχεια αλλάξαμε σε required για επιβολή.

Οι διαθέσιμες σημαίες ελέγχου είναι:

  • required: The module result must be successful for authentication to continue. This is the most critical flag and can lock you out of your computer if you do not have access to the Nitrokey.

  • requisite: Παρόμοια με το required, ωστόσο, στην περίπτωση που μια συγκεκριμένη ενότητα επιστρέφει αποτυχία, ο έλεγχος επιστρέφεται απευθείας στην εφαρμογή ή στην ανώτερη στοίβα PAM. Αυτή η σημαία μπορεί επίσης να σας αποκλείσει από τον υπολογιστή σας, εάν δεν έχετε πρόσβαση στο κλειδί Nitrokey.

  • sufficient: The module result is ignored if it fails. In case of success, control is directly returned to the application, or to the superior PAM stack. This means no other PAM modules will be executed. The sufficient flag is considered safe for testing purposes.

  • optional: The success or failure of this module is only important if it is the only module in the stack associated with this service+type. The optional flag is considered safe to use for testing purposes.

Προειδοποίηση

  • If required or requisite is set, the failure of U2F authentication will cause a failure of the overall authentication. Failure will occur when the configured Nitrokey is not plugged, lost or destroyed.

  • Θα χάσετε την πρόσβαση στον υπολογιστή σας εάν έχετε ρυθμίσει λάθος τη μονάδα PAM και έχετε χρησιμοποιήσει τις σημαίες required ή requisite.

  • Θα χάσετε επίσης τη δυνατότητα χρήσης του sudo εάν ρυθμίσετε την αντιστοίχιση κεντρικού ελέγχου ταυτότητας. και χρησιμοποιήσατε τις σημαίες required ή requisite.

  • Μπορεί επίσης να χάσετε τη δυνατότητα να συνδεθείτε χρησιμοποιώντας το Gnome Display manager, αν η είσοδος με έξυπνη κάρτα είναι επιβεβλημένη και χρησιμοποιήσατε τις σημαίες required ή requisite. Ανατρέξτε στην ενότητα Αντιμετώπιση προβλημάτων για περισσότερες πληροφορίες.

Αντιμετώπιση προβλημάτων

Προβλήματα σύνδεσης σε λογαριασμό χρήστη χρησιμοποιώντας το GDM

Σε ορισμένες περιπτώσεις, για παράδειγμα αν έχετε εγκαταστήσει το opencs-pkcs11, ο Gnome Display Manager (GDM) μπορεί να επιβάλει εξ ορισμού την είσοδο με έξυπνη κάρτα μόλις συνδεθεί οποιαδήποτε έξυπνη κάρτα (όπως το Nitrokey σας), ακόμα και αν δεν έχει ρυθμιστεί ποτέ καμία έξυπνη κάρτα. Αυτό μπορεί να σας αποτρέψει από το να συνδεθείτε στο λογαριασμό χρήστη σας χρησιμοποιώντας το u2f. Αν έχετε θέσει τη σημαία ελέγχου sufficient, αποσυνδέστε όλες τις έξυπνες κάρτες και συνδεθείτε χρησιμοποιώντας τον κωδικό πρόσβασής σας. Για να απενεργοποιήσετε την επιβολή έξυπνων καρτών εκτελέστε την ακόλουθη εντολή:

$ sudo -u gdm env -u XDG_RUNTIME_DIR -u DISPLAY DCONF_PROFILE=gdm dbus-run-session gsettings set org.gnome.login-screen enable-smartcard-authentication false