Προβλέπουμε μια διαδικασία για πρόσβαση έκτακτης ανάγκης σε κεντρικούς υπολογιστές SSH με κλειδιά υλικού

Προβλέπουμε μια διαδικασία για πρόσβαση έκτακτης ανάγκης σε κεντρικούς υπολογιστές SSH με κλειδιά υλικού

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

Για τι είναι όλο αυτό; Λοιπόν, αυτή είναι η τελευταία επιλογή. Αυτή είναι μια κερκόπορτα που θα σας επιτρέψει να αποκτήσετε πρόσβαση στον διακομιστή σας όταν για κάποιο λόγο δεν λειτουργεί τίποτα άλλο.

Γιατί να χρησιμοποιείτε πιστοποιητικά αντί για δημόσια/ιδιωτικά κλειδιά για πρόσβαση έκτακτης ανάγκης;

  • Σε αντίθεση με τα δημόσια κλειδιά, τα πιστοποιητικά μπορεί να έχουν πολύ μικρή διάρκεια ζωής. Μπορείτε να δημιουργήσετε ένα πιστοποιητικό που να ισχύει για 1 λεπτό ή ακόμα και 5 δευτερόλεπτα. Μετά από αυτό το διάστημα, το πιστοποιητικό θα καταστεί άχρηστο για νέες συνδέσεις. Αυτό είναι ιδανικό για πρόσβαση έκτακτης ανάγκης.
  • Μπορείτε να δημιουργήσετε ένα πιστοποιητικό για οποιονδήποτε λογαριασμό στους οικοδεσπότες σας και, εάν είναι απαραίτητο, να στείλετε τέτοια πιστοποιητικά «εφάπαξ» σε συναδέλφους.

Τι χρειάζεστε

  • Κλειδιά ασφαλείας υλικού που υποστηρίζουν κλειδιά κατοίκου.
    Τα κλειδιά μόνιμης χρήσης είναι κρυπτογραφικά κλειδιά που αποθηκεύονται εξ ολοκλήρου στο κλειδί ασφαλείας. Μερικές φορές προστατεύονται από ένα αλφαριθμητικό PIN. Το δημόσιο τμήμα του μόνιμο κλειδί μπορεί να εξαχθεί από το κλειδί ασφαλείας, προαιρετικά μαζί με τη λαβή του ιδιωτικού κλειδιού. Για παράδειγμα, τα κλειδιά USB της σειράς Yubikey 5 υποστηρίζουν κλειδιά μόνιμης χρήσης. Συνιστάται να προορίζονται μόνο για πρόσβαση έκτακτης ανάγκης στον κεντρικό υπολογιστή. Για αυτήν την ανάρτηση θα χρησιμοποιήσω μόνο ένα κλειδί, αλλά θα πρέπει να έχετε ένα επιπλέον για δημιουργία αντιγράφων ασφαλείας.
  • Ένα ασφαλές μέρος για να αποθηκεύσετε αυτά τα κλειδιά.
  • OpenSSH έκδοση 8.2 ή νεότερη στον τοπικό σας υπολογιστή και στους διακομιστές στους οποίους θέλετε να έχετε πρόσβαση έκτακτης ανάγκης. Το Ubuntu 20.04 κυκλοφορεί με το OpenSSH 8.2.
  • (προαιρετικό, αλλά συνιστάται) Ένα εργαλείο CLI για τον έλεγχο των πιστοποιητικών.

Εκπαίδευση

Αρχικά, πρέπει να δημιουργήσετε μια αρχή πιστοποίησης που θα βρίσκεται στο κλειδί ασφαλείας υλικού. Εισαγάγετε το κλειδί και εκτελέστε:

$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]

Ως σχόλιο (-Γ) υπέδειξα [προστασία μέσω email]ώστε να μην ξεχνάτε σε ποιο κλειδί ασφαλείας ανήκει αυτή η αρχή έκδοσης πιστοποιητικών.

Εκτός από την προσθήκη του κλειδιού στο Yubikey, θα δημιουργηθούν τοπικά δύο αρχεία:

  1. sk-user-ca, μια λαβή κλειδιού που αναφέρεται στο ιδιωτικό κλειδί που είναι αποθηκευμένο στο κλειδί ασφαλείας,
  2. sk-user-ca.pub, το οποίο θα είναι το δημόσιο κλειδί για την αρχή έκδοσης πιστοποιητικών.

Αλλά μην ανησυχείτε, το Yubikey αποθηκεύει ένα άλλο ιδιωτικό κλειδί που δεν μπορεί να ανακτηθεί. Επομένως, όλα είναι αξιόπιστα εδώ.

Στους κεντρικούς υπολογιστές, ως root, προσθέστε (αν δεν το έχετε ήδη κάνει) τα ακόλουθα στη διαμόρφωση SSHD (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Στη συνέχεια, στον κεντρικό υπολογιστή, προσθέστε το δημόσιο κλειδί (sk-user-ca.pub) στο /etc/ssh/ca.pub

Επανεκκινήστε τον δαίμονα:

# /etc/init.d/ssh restart

Τώρα μπορούμε να προσπαθήσουμε να αποκτήσουμε πρόσβαση στον κεντρικό υπολογιστή. Αλλά πρώτα χρειαζόμαστε ένα πιστοποιητικό. Δημιουργήστε ένα ζεύγος κλειδιών που θα συσχετιστεί με το πιστοποιητικό:

$ ssh-keygen -t ecdsa -f emergency

Πιστοποιητικά και ζεύγη SSH
Μερικές φορές είναι δελεαστικό να χρησιμοποιήσετε ένα πιστοποιητικό ως αντικατάσταση ενός ζεύγους δημόσιου/ιδιωτικού κλειδιού. Αλλά ένα πιστοποιητικό από μόνο του δεν αρκεί για τον έλεγχο ταυτότητας ενός χρήστη. Κάθε πιστοποιητικό έχει επίσης ένα ιδιωτικό κλειδί που σχετίζεται με αυτό. Αυτός είναι ο λόγος για τον οποίο πρέπει να δημιουργήσουμε αυτό το ζεύγος κλειδιών "έκτακτης ανάγκης" πριν εκδώσουμε οι ίδιοι ένα πιστοποιητικό. Το σημαντικό είναι ότι δείχνουμε το υπογεγραμμένο πιστοποιητικό στον διακομιστή, υποδεικνύοντας το ζεύγος κλειδιών για το οποίο έχουμε ιδιωτικό κλειδί.

Έτσι, η ανταλλαγή δημόσιου κλειδιού είναι ακόμα ζωντανή και καλά. Αυτό λειτουργεί ακόμα και με πιστοποιητικά. Τα πιστοποιητικά απλώς εξαλείφουν την ανάγκη αποθήκευσης δημόσιων κλειδιών από τον διακομιστή.

Στη συνέχεια, δημιουργήστε το ίδιο το πιστοποιητικό. Χρειάζομαι εξουσιοδότηση χρήστη ubuntu σε διάστημα 10 λεπτών. Μπορείτε να το κάνετε με τον τρόπο σας.

$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency

Θα σας ζητηθεί να υπογράψετε το πιστοποιητικό χρησιμοποιώντας το δακτυλικό σας αποτύπωμα. Μπορείτε να προσθέσετε επιπλέον ονόματα χρήστη διαχωρισμένα με κόμματα, για παράδειγμα -n ubuntu,carl,ec2-user

Αυτό ήταν, τώρα έχεις πιστοποιητικό! Στη συνέχεια, πρέπει να καθορίσετε τα σωστά δικαιώματα:

$ chmod 600 emergency-cert.pub

Μετά από αυτό, μπορείτε να δείτε τα περιεχόμενα του πιστοποιητικού σας:

$ step ssh inspect emergency-cert.pub

Έτσι φαίνεται το δικό μου:

emergency-cert.pub
        Type: [email protected] user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

Εδώ το δημόσιο κλειδί είναι το κλειδί έκτακτης ανάγκης που δημιουργήσαμε και το sk-user-ca σχετίζεται με την αρχή πιστοποίησης.

Τέλος, είμαστε έτοιμοι να εκτελέσουμε την εντολή SSH:


$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$

  1. Τώρα μπορείτε να δημιουργήσετε πιστοποιητικά για οποιονδήποτε χρήστη σε έναν κεντρικό υπολογιστή που εμπιστεύεται την αρχή πιστοποιητικών σας.
  2. Μπορείτε να αφαιρέσετε έκτακτη ανάγκη. Μπορείτε να αποθηκεύσετε το sk-user-ca, αλλά δεν χρειάζεται, καθώς υπάρχει και στο κλειδί ασφαλείας. Μπορεί επίσης να θέλετε να αφαιρέσετε το αρχικό δημόσιο κλειδί PEM από τους κεντρικούς υπολογιστές σας (για παράδειγμα στο ~/.ssh/authorized_keys για τον χρήστη του ubuntu) εάν το χρησιμοποιήσατε για πρόσβαση έκτακτης ανάγκης.

Πρόσβαση έκτακτης ανάγκης: Σχέδιο δράσης

Επικολλήστε το κλειδί ασφαλείας και εκτελέστε την εντολή:

$ ssh-add -K

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

Τώρα εξαγάγετε το δημόσιο κλειδί για να δημιουργήσετε ένα πιστοποιητικό:

$ ssh-add -L | tail -1 > sk-user-ca.pub

Δημιουργήστε ένα πιστοποιητικό με ημερομηνία λήξης, για παράδειγμα, όχι μεγαλύτερη από μία ώρα:

$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub

Και τώρα πάλι SSH:

$ ssh -i emergency username@host

Εάν το αρχείο σας .ssh/config προκαλεί κάποια προβλήματα κατά τη σύνδεση, μπορείτε να εκτελέσετε το ssh με την επιλογή -F none για να το παρακάμψετε. Εάν πρέπει να στείλετε ένα πιστοποιητικό σε έναν συνάδελφο, η πιο εύκολη και ασφαλής επιλογή είναι Μαγική σκουληκότρυπα. Για να το κάνετε αυτό, χρειάζεστε μόνο δύο αρχεία - στην περίπτωσή μας, έκτακτης ανάγκης και έκτακτης ανάγκης-cert.pub.

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

Σχετικά με τα Δικαιώματα Διαφήμισης

Επικοί διακομιστές - Είναι φθηνό VPS με ισχυρούς επεξεργαστές από την AMD, συχνότητα πυρήνα CPU έως 3.4 GHz. Η μέγιστη διαμόρφωση σάς επιτρέπει να λύσετε σχεδόν οποιοδήποτε πρόβλημα - 128 πυρήνες CPU, 512 GB RAM, 4000 GB NVMe. Ελα μαζί μας!

Προβλέπουμε μια διαδικασία για πρόσβαση έκτακτης ανάγκης σε κεντρικούς υπολογιστές SSH με κλειδιά υλικού

Πηγή: www.habr.com

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