Πώς να ρυθμίσετε τον έλεγχο ταυτότητας δύο παραγόντων για SSH στο Linux


Από προεπιλογή, το SSH χρησιμοποιεί ήδη ασφαλή επικοινωνία δεδομένων μεταξύ απομακρυσμένων μηχανημάτων, αλλά αν θέλετε να προσθέσετε κάποιο επιπλέον επίπεδο ασφαλείας στις συνδέσεις σας SSH, μπορείτε να προσθέσετε έναν Επαληθευτή Google (< Μονάδα ισχυρής>επαλήθευσης ταυτότητας δύο παραγόντων) που σας επιτρέπει να εισαγάγετε έναν τυχαίο κωδικό επαλήθευσης μίας χρήσης (TOTP) κατά τη σύνδεση σε διακομιστές SSH. Θα πρέπει να εισαγάγετε τον κωδικό επαλήθευσης από το smartphone ή τον PC σας όταν συνδέεστε.

Ο Google Authenticator είναι μια λειτουργική μονάδα ανοιχτού κώδικα που περιλαμβάνει υλοποιήσεις διακριτικών επαλήθευσης κωδικών πρόσβασης μίας χρήσης (TOTP) που αναπτύχθηκαν από την Google.

Υποστηρίζει πολλές πλατφόρμες για κινητές συσκευές, καθώς και PAM (Pluggable Authentication Module). Αυτοί οι κωδικοί πρόσβασης μιας χρήσης δημιουργούνται χρησιμοποιώντας ανοιχτά πρότυπα που δημιουργήθηκαν από την OATH Initiative for Open Authentication).

Σε αυτό το άρθρο, θα σας δείξω πώς να ρυθμίσετε και να ρυθμίσετε το SSH για έλεγχο ταυτότητας δύο παραγόντων σε διανομές Linux που βασίζονται στο RedHat και στο Debian, όπως το Fedora, το CentOS Stream, το Rocky Linux και το AlmaLinux, Ubuntu, Debian και Mint.

Εγκατάσταση του Google Authenticator σε Linux

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

Σε συστήματα που βασίζονται σε RedHat εγκαταστήστε το πακέτο ‘pam-devel’ χρησιμοποιώντας την ακόλουθη εντολή yum.

yum install google-authenticator -y

Σε συστήματα που βασίζονται στο Debian εγκαταστήστε το πακέτο ‘libpam0g-dev’ χρησιμοποιώντας την ακόλουθη εντολή apt.

sudo apt install libpam-google-authenticator -y

Δημιουργήστε διακριτικά ελέγχου ταυτότητας Google

Μόλις εκτελέσετε την εντολή «google-authenticator», θα σας ζητήσει μια σειρά ερωτήσεων.

google-authenticator

Απλώς πληκτρολογήστε "y" (ναι) ως απάντηση στις περισσότερες περιπτώσεις. Εάν κάτι πάει στραβά, μπορείτε να πληκτρολογήσετε ξανά την εντολή "google-authenticator" για να επαναφέρετε τις ρυθμίσεις.

  • Θέλετε τα διακριτικά ελέγχου ταυτότητας να βασίζονται στο χρόνο (y/n) y

Μετά από αυτήν την ερώτηση, θα λάβετε το "μυστικό κλειδί" και τους "κωδικούς έκτακτης ανάγκης". Σημειώστε αυτές τις λεπτομέρειες κάπου, θα χρειαστούμε αργότερα το "μυστικό κλειδί" για να ρυθμίσουμε την εφαρμογή Google Authenticator.

google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

Στη συνέχεια, ακολουθήστε τον οδηγό εγκατάστασης και στις περισσότερες περιπτώσεις πληκτρολογήστε την απάντηση ως "y" (ναι) όπως φαίνεται παρακάτω.

Do you want me to update your "/root/.google_authenticator" file (y/n) y Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) y If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y

Διαμόρφωση SSH για χρήση του Google Authenticator στο Linux

Ανοίξτε το αρχείο διαμόρφωσης PAM/etc/pam.d/sshd’ και προσθέστε την ακόλουθη γραμμή στο κάτω μέρος του αρχείου.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Στη συνέχεια, ανοίξτε το αρχείο διαμόρφωσης SSH «/etc/ssh/sshd_config» και κάντε κύλιση προς τα κάτω για να βρείτε τη γραμμή που λέει.

ChallengeResponseAuthentication no

Αλλάξτε το σε "ναι". Έτσι, γίνεται έτσι.

ChallengeResponseAuthentication yes

Τέλος, επανεκκινήστε την υπηρεσία SSH για να πραγματοποιήσετε νέες αλλαγές.

systemctl restart sshd
Or
sudo systemctl restart sshd

Διαμόρφωση εφαρμογής Google Authenticator

Εκκινήστε την εφαρμογή Google Authenticator στο smartphone σας. Πατήστε + και επιλέξτε "Εισαγωγή κλειδιού ρύθμισης". Εάν δεν διαθέτετε αυτήν την εφαρμογή, μπορείτε να κατεβάσετε και να εγκαταστήσετε την εφαρμογή Επαληθευτής Google στις συσκευές σας Android/iPhone/Blackberry.

Προσθέστε το λογαριασμό σας "Όνομα" και εισαγάγετε το "μυστικό κλειδί" που δημιουργήθηκε νωρίτερα.

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

Προσπαθήστε τώρα να συνδεθείτε μέσω SSH, θα σας ζητηθεί ένας Κωδικός Επαληθευτή Google (Κωδικός επαλήθευσης) και Κωδικός πρόσβασης κάθε φορά που επιχειρείτε να συνδεθείτε μέσω SSH. Έχετε μόνο 30 δευτερόλεπτα για να εισαγάγετε αυτόν τον κωδικό επαλήθευσης, εάν χάσετε, θα δημιουργηθεί εκ νέου ένας νέος κωδικός επαλήθευσης.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@tecmint ~]#

Εάν δεν έχετε smartphone, μπορείτε επίσης να χρησιμοποιήσετε ένα πρόσθετο Firefox που ονομάζεται Authenticator για να πραγματοποιήσετε έλεγχο ταυτότητας δύο παραγόντων.

Σημαντικό: Ο έλεγχος ταυτότητας δύο παραγόντων λειτουργεί με σύνδεση SSH που βασίζεται σε κωδικό πρόσβασης. Εάν χρησιμοποιείτε οποιαδήποτε περίοδο λειτουργίας SSH με ιδιωτικό/δημόσιο κλειδί, θα αγνοήσει τον έλεγχο ταυτότητας δύο παραγόντων και θα σας συνδεθεί απευθείας.