Κυκλοφορία του OpenSSH 8.2 με υποστήριξη για διακριτικά ελέγχου ταυτότητας δύο παραγόντων FIDO/U2F

Μετά από τέσσερις μήνες ανάπτυξης παρουσιάζονται απελευθέρωση OpenSSH 8.2, μια εφαρμογή ανοιχτού πελάτη και διακομιστή για εργασία μέσω των πρωτοκόλλων SSH 2.0 και SFTP.

Μια βασική βελτίωση στην κυκλοφορία του OpenSSH 8.2 ήταν η δυνατότητα χρήσης ελέγχου ταυτότητας δύο παραγόντων χρησιμοποιώντας συσκευές που υποστηρίζουν το πρωτόκολλο U2F, που αναπτύχθηκε από τη συμμαχία FIDO. Το U2F επιτρέπει τη δημιουργία διακριτικών υλικού χαμηλού κόστους για την επαλήθευση της φυσικής παρουσίας του χρήστη, αλληλεπιδρώντας μαζί του μέσω USB, Bluetooth ή NFC. Τέτοιες συσκευές προωθούνται ως μέσο ελέγχου ταυτότητας δύο παραγόντων σε ιστότοπους, υποστηρίζονται ήδη από μεγάλα προγράμματα περιήγησης και παράγονται από διάφορους κατασκευαστές, συμπεριλαμβανομένων των Yubico, Feitian, Thetis και Kensington.

Για την αλληλεπίδραση με συσκευές που επιβεβαιώνουν την παρουσία του χρήστη, νέοι τύποι κλειδιών "ecdsa-sk" και "ed25519-sk" έχουν προστεθεί στο OpenSSH, οι οποίοι χρησιμοποιούν τους αλγόριθμους ψηφιακής υπογραφής ECDSA και Ed25519, σε συνδυασμό με τον κατακερματισμό SHA-256. Οι διαδικασίες για την αλληλεπίδραση με διακριτικά τοποθετούνται σε μια ενδιάμεση βιβλιοθήκη, η οποία φορτώνεται με παρόμοιο τρόπο με τη βιβλιοθήκη για υποστήριξη PKCS#11 και είναι ένα περιτύλιγμα στο επάνω μέρος της βιβλιοθήκης libfido2, το οποίο παρέχει εργαλεία για επικοινωνία με μάρκες μέσω USB (υποστηρίζονται τα πρωτόκολλα FIDO U2F/CTAP 1 και FIDO 2.0/CTAP 2). Ενδιάμεση βιβλιοθήκη libsk-libfido2 που προετοιμάστηκε από προγραμματιστές OpenSSH περιλαμβάνεται στον πυρήνα libfido2, καθώς και HID πρόγραμμα οδήγησης για το OpenBSD.

Για να ελέγξετε την ταυτότητα και να δημιουργήσετε ένα κλειδί, πρέπει να καθορίσετε την παράμετρο "SecurityKeyProvider" στις ρυθμίσεις ή να ορίσετε τη μεταβλητή περιβάλλοντος SSH_SK_PROVIDER, υποδεικνύοντας τη διαδρομή προς την εξωτερική βιβλιοθήκη libsk-libfido2.so (εξαγωγή SSH_SK_PROVIDER=/path/to/libsk-libfido2. Έτσι). Είναι δυνατή η δημιουργία openssh με ενσωματωμένη υποστήριξη για τη βιβλιοθήκη επιπέδων (--with-security-key-builtin), σε αυτήν την περίπτωση πρέπει να ορίσετε την παράμετρο "SecurityKeyProvider=internal".
Στη συνέχεια, πρέπει να εκτελέσετε το "ssh-keygen -t ecdsa-sk" ή, εάν τα κλειδιά έχουν ήδη δημιουργηθεί και ρυθμιστεί, συνδεθείτε στον διακομιστή χρησιμοποιώντας το "ssh". Όταν εκτελείτε το ssh-keygen, το ζεύγος κλειδιών που δημιουργείται θα αποθηκευτεί στο "~/.ssh/id_ecdsa_sk" και μπορεί να χρησιμοποιηθεί παρόμοια με άλλα κλειδιά.

Το δημόσιο κλειδί (id_ecdsa_sk.pub) θα πρέπει να αντιγραφεί στον διακομιστή στο αρχείο authorized_keys. Από την πλευρά του διακομιστή, επαληθεύεται μόνο η ψηφιακή υπογραφή και η αλληλεπίδραση με τα διακριτικά εκτελείται στην πλευρά του πελάτη (δεν χρειάζεται να εγκαταστήσετε το libsk-libfido2 στον διακομιστή, αλλά ο διακομιστής πρέπει να υποστηρίζει τον τύπο κλειδιού "ecdsa-sk") . Το παραγόμενο ιδιωτικό κλειδί (id_ecdsa_sk) είναι ουσιαστικά μια λαβή κλειδιού, που σχηματίζει ένα πραγματικό κλειδί μόνο σε συνδυασμό με τη μυστική ακολουθία που είναι αποθηκευμένη στην πλευρά του διακριτικού U2F. Εάν το κλειδί id_ecdsa_sk πέσει στα χέρια ενός εισβολέα, για να περάσει τον έλεγχο ταυτότητας θα πρέπει επίσης να αποκτήσει πρόσβαση στο διακριτικό υλικού, χωρίς το οποίο το ιδιωτικό κλειδί που είναι αποθηκευμένο στο αρχείο id_ecdsa_sk είναι άχρηστο.

Επιπλέον, από προεπιλογή, κατά την εκτέλεση οποιωνδήποτε λειτουργιών με πλήκτρα (τόσο κατά τη δημιουργία όσο και κατά τον έλεγχο ταυτότητας), απαιτείται τοπική επιβεβαίωση της φυσικής παρουσίας του χρήστη, για παράδειγμα, προτείνεται να αγγίξετε τον αισθητήρα στο διακριτικό, γεγονός που καθιστά δύσκολη την πραγματοποιούν απομακρυσμένες επιθέσεις σε συστήματα με συνδεδεμένο διακριτικό. Ως άλλη γραμμή άμυνας, ένας κωδικός πρόσβασης μπορεί επίσης να καθοριστεί κατά τη φάση εκκίνησης του ssh-keygen για πρόσβαση στο αρχείο κλειδιού.

Η νέα έκδοση του OpenSSH ανακοίνωσε επίσης την επερχόμενη κατάργηση αλγορίθμων που χρησιμοποιούν κατακερματισμούς SHA-1 λόγω προβολή την αποτελεσματικότητα των επιθέσεων σύγκρουσης με ένα δεδομένο πρόθεμα (το κόστος επιλογής μιας σύγκρουσης εκτιμάται σε περίπου 45 χιλιάδες δολάρια). Σε μία από τις επερχόμενες εκδόσεις, σχεδιάζουν να απενεργοποιήσουν από προεπιλογή τη δυνατότητα χρήσης του αλγόριθμου ψηφιακής υπογραφής δημόσιου κλειδιού "ssh-rsa", ο οποίος αναφέρεται στο αρχικό RFC για το πρωτόκολλο SSH και παραμένει ευρέως διαδεδομένο στην πράξη (για δοκιμή της χρήσης του ssh-rsa στα συστήματά σας, μπορείτε να δοκιμάσετε να συνδεθείτε μέσω ssh με την επιλογή “-oHostKeyAlgorithms=-ssh-rsa”).

Για την ομαλή μετάβαση σε νέους αλγόριθμους στο OpenSSH, σε μελλοντική έκδοση θα ενεργοποιηθεί από προεπιλογή η ρύθμιση UpdateHostKeys, η οποία θα μεταφέρει αυτόματα τους πελάτες σε πιο αξιόπιστους αλγόριθμους. Οι προτεινόμενοι αλγόριθμοι για μετεγκατάσταση περιλαμβάνουν τους rsa-sha2-256/512 που βασίζονται στο RFC8332 RSA SHA-2 (υποστηρίζεται από το OpenSSH 7.2 και χρησιμοποιείται από προεπιλογή), τον ssh-ed25519 (υποστηρίζεται από το OpenSSH 6.5) και το ecdsa-sha2-nistp256/384 σε RFC521 ECDSA (υποστηρίζεται από το OpenSSH 5656).

Στο OpenSSH 8.2, η δυνατότητα σύνδεσης με χρήση "ssh-rsa" εξακολουθεί να είναι διαθέσιμη, αλλά αυτός ο αλγόριθμος έχει αφαιρεθεί από τη λίστα CASignatureAlgorithms, η οποία καθορίζει τους αλγόριθμους που επιτρέπονται για την ψηφιακή υπογραφή νέων πιστοποιητικών. Ομοίως, ο αλγόριθμος diffie-hellman-group14-sha1 έχει αφαιρεθεί από τους προεπιλεγμένους αλγόριθμους ανταλλαγής κλειδιών που υποστηρίζονται. Σημειώνεται ότι η χρήση του SHA-1 σε πιστοποιητικά συνδέεται με πρόσθετο κίνδυνο, καθώς ο εισβολέας έχει απεριόριστο χρόνο αναζήτησης σύγκρουσης για ένα υπάρχον πιστοποιητικό, ενώ ο χρόνος επίθεσης στα κλειδιά κεντρικού υπολογιστή περιορίζεται από το χρονικό όριο σύνδεσης (LoginGraceTime ).

Η εκτέλεση του ssh-keygen είναι πλέον προεπιλεγμένη στον αλγόριθμο rsa-sha2-512, ο οποίος υποστηρίζεται από το OpenSSH 7.2, ο οποίος μπορεί να δημιουργήσει προβλήματα συμβατότητας κατά την προσπάθεια επεξεργασίας πιστοποιητικών που είναι υπογεγραμμένα στο OpenSSH 8.2 σε συστήματα που εκτελούν παλαιότερες εκδόσεις OpenSSH (για αντιμετώπιση του ζητήματος όταν δημιουργώντας μια υπογραφή, μπορείτε να καθορίσετε ρητά "ssh-keygen -t ssh-rsa" ή να χρησιμοποιήσετε τους αλγόριθμους ecdsa-sha2-nistp256/384/521, που υποστηρίζονται από το OpenSSH 5.7).

Άλλες αλλαγές:

  • Στο sshd_config έχει προστεθεί μια οδηγία Include, η οποία σας επιτρέπει να συμπεριλάβετε τα περιεχόμενα άλλων αρχείων στην τρέχουσα θέση του αρχείου διαμόρφωσης (μπορούν να χρησιμοποιηθούν μάσκες glob κατά τον καθορισμό του ονόματος αρχείου).
  • Η επιλογή «δεν απαιτείται επαφή» έχει προστεθεί στο ssh-keygen, η οποία απενεργοποιεί την ανάγκη φυσικής επιβεβαίωσης της πρόσβασης στο διακριτικό κατά τη δημιουργία του κλειδιού.
  • Μια οδηγία PubkeyAuthOptions έχει προστεθεί στο sshd_config, η οποία συνδυάζει διάφορες επιλογές που σχετίζονται με τον έλεγχο ταυτότητας δημόσιου κλειδιού. Προς το παρόν, υποστηρίζεται μόνο η σημαία "δεν απαιτείται άγγιγμα" για παράβλεψη ελέγχων φυσικής παρουσίας για έλεγχο ταυτότητας διακριτικού. Κατ' αναλογία, η επιλογή "no-touch-required" έχει προστεθεί στο αρχείο authorized_keys.
  • Προστέθηκε η επιλογή "-O write-attestation=/path" στο ssh-keygen για να επιτρέπεται η εγγραφή πρόσθετων πιστοποιητικών πιστοποίησης FIDO κατά τη δημιουργία κλειδιών. Το OpenSSH δεν χρησιμοποιεί ακόμη αυτά τα πιστοποιητικά, αλλά μπορούν αργότερα να χρησιμοποιηθούν για να επαληθευτεί ότι το κλειδί έχει τοποθετηθεί σε ένα αξιόπιστο κατάστημα υλικού.
  • Στις ρυθμίσεις ssh και sshd, είναι πλέον δυνατό να ορίσετε τη λειτουργία ιεράρχησης κυκλοφορίας μέσω της οδηγίας IPQoS LE DSCP (Συμπεριφορά χαμηλότερης προσπάθειας ανά λυκίσκο).
  • Στο ssh, όταν ορίζετε την τιμή "AddKeysToAgent=yes", εάν το κλειδί δεν περιέχει πεδίο σχολίου, θα προστεθεί στο ssh-agent υποδεικνύοντας τη διαδρομή προς το κλειδί ως σχόλιο. ΣΕ
    Το ssh-keygen και το ssh-agent χρησιμοποιούν επίσης πλέον ετικέτες PKCS#11 και το όνομα θέματος X.509 αντί για τη διαδρομή της βιβλιοθήκης ως σχόλια στο κλειδί.

  • Προστέθηκε η δυνατότητα εξαγωγής PEM για κλειδιά DSA και ECDSA στο ssh-keygen.
  • Προστέθηκε ένα νέο εκτελέσιμο, ssh-sk-helper, που χρησιμοποιείται για την απομόνωση της βιβλιοθήκης πρόσβασης διακριτικών FIDO/U2F.
  • Προστέθηκε η επιλογή δημιουργίας «--with-zlib» σε ssh και sshd για μεταγλώττιση με υποστήριξη βιβλιοθήκης zlib.
  • Σύμφωνα με την απαίτηση του RFC4253, παρέχεται μια προειδοποίηση σχετικά με τον αποκλεισμό πρόσβασης λόγω υπέρβασης των ορίων MaxStartups στο banner που εμφανίζεται κατά τη σύνδεση. Για να απλοποιηθούν τα διαγνωστικά, η κεφαλίδα διεργασίας sshd, που είναι ορατή όταν χρησιμοποιείται το βοηθητικό πρόγραμμα ps, εμφανίζει τώρα τον αριθμό των επί του παρόντος επαληθευμένων συνδέσεων και την κατάσταση του ορίου MaxStartups.
  • Στο ssh και στο ssh-agent, όταν καλείτε ένα πρόγραμμα για να εμφανίσει μια πρόσκληση στην οθόνη, που καθορίζεται μέσω $SSH_ASKPASS, μια σημαία με τον τύπο της πρόσκλησης μεταδίδεται τώρα επιπλέον: "επιβεβαίωση" - διάλογος επιβεβαίωσης (ναι/όχι), "κανένα " - ενημερωτικό μήνυμα, "κενό" — αίτημα κωδικού πρόσβασης.
  • Προστέθηκε μια νέα λειτουργία ψηφιακών υπογραφών "find-principals" στο ssh-keygen για αναζήτηση στο αρχείο επιτρεπόμενων υπογραφών για τον χρήστη που σχετίζεται με μια καθορισμένη ψηφιακή υπογραφή.
  • Βελτιωμένη υποστήριξη για την απομόνωση διεργασιών sshd στο Linux χρησιμοποιώντας τον μηχανισμό seccomp: απενεργοποίηση κλήσεων συστήματος IPC, επιτρέποντας τα clock_gettime64(), clock_nanosleep_time64 και clock_nanosleep().

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο