Αυτό το σεμινάριο περιγράφει πώς να επιτύχετε έλεγχο ταυτότητας βασισμένο σε κλειδί SSH με χρήση του PuTTY. Αναλυτικά, περιγράφει πώς να δημιουργήσετε και να χρησιμοποιήσετε ένα ζεύγος δημόσιου/ιδιωτικού κλειδιού για να επιτύχετε μια σύνδεση SSH, από Windows 10 Desktop σε έναν απομακρυσμένο διακομιστή Linux (Dedian 11) χρησιμοποιώντας το PuTTY. Οι SSH συνδέσεις που βασίζονται σε RSA κλειδιά πλεονεκτούν έναντι των απλών SSH συνδέσεων καθώς μας επιτρέπουν πρόσβαση στο απομακρυσμένο σύστημα χωρίς τη χρήση στοιχείων σύνδεσης ενώ συχρόνως αποτρέπουν κάθε ενδεχόμενο επιτυχίας brute-force επιθέσεων.
Πίνακας περιεχομένων
- 1. Απαραίτητο Λογισμικό
- 2. Δημιουργία προφίλ ρυθμίσεων στο PuTTY
- 3. SSH σύνδεση με το διακομιστή
- 4. Δημιουργία ενός ζεύγους δημόσιου/ιδιωτικού κλειδιού (Public/Private key)
- 5. Αποθήκευση του κλειδιού στο διακομιστή
- 6. Προσάρτηση του ιδιωτικού κλειδιού στο PuTTY προφίλ
- 7. Key-based SSH Σύνδεση
- 8. Απενεργοποίηση δυνατότητας SSH σύνδεσης με όνομα χρήστη/συνθηματικό
1. Απαραίτητο Λογισμικό
Για την ολοκλήρωση της key-based SSH σύνδεσης είναι αναγκαίο να εγκατασταθούν στο Windows σύστημα τα PuTTY και PuTTYgen.
Κατεβάστε από τη σελίδα με τα downloads του PuTTY, το MSI installer (στην περίπτωσή μας είναι το 64-bit x86: putty-64bit-0.80-installer.msi).
Μόλις το κατεβάσετε, το εγκαταστήστε το στον υπολογιστή σας. Όταν μετά από μερικά λεπτά ολοκληρωθεί ή εγκατάσταση στο συστημά σας θα βρίσκονται όλα τα απαραίτητα προγράμματα. Ανοίγοντας τον φάκελο εγκατάστασης C:\Program Files\PuTTY έχουμε πρόσβαση σε όλα τα προγράμματα.
Δημιουργούμε συντόμευση επιφάνειας εργασίας για το PuTTY, την οποία θα χρειαστεί να χρησιμοποιούμε συχνά.
2. Δημιουργία προφίλ ρυθμίσεων στο PuTTY
Στο PuTTY μπορούμε να δημιουργήσουμε προφίλ ρυθμίσεων για κάθε απομακρισμένο μας διακομιστή. Τα προφίλ μας εξυπηρετούν καθώς αποθηκεύουν όλες τις ρυθμίσεις σύνδεσης στο διακομιστή, χωρίς να χρειάζεται η επανεισαγωγή τους κάθε φορά που θέλουμε να συνδεθούμε. Για να ξεκινήσετε, ανοίξτε το PuTTY κάνοντας διπλό κλικ στο αρχείο putty.exe.
- Επιλέξτε την κατηγορία Session στην αριστερή στήλη (εικόνα 1, 1).
- IΣτο πεδίο Host Name (or IP address) (εικόνα 1, 2) συμπληρώνουμε τα στοιχεία του απομακρυσμένου διακομιστή (ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ είναι η IP που εμφανίζεται στις εικόνες του σεμιναρίου και θα την αντικαταστήσετε με την δική σας)
- Στο πεδίο Port (εικόνα 1, 3) είναι η προκαθορισμένη τιμή για SSH συνδέσεις και είναι το 22 και
- Connection type επιλέξτε SSH (εικόνα 2, 4).
- Στη συνέχεια, μεταβαίνουμε στην κατηγορία Connection > Data (εικόνα 2, 5 ) όπου
- Συμπληρώνουμε στο Login details το πεδίο Auto-login username (εικόνα 2, 6) με το επιθυμητό username της σύνδεσης. Στο σεμινάριο χρησιμοποιώ το root.
- Κατόπιν επιστρέφουμε στην κατηγορία Session (εικόνα 3, 7) όπου
- συμπληρώνουμε ένα φιλικό όνομα για τη σύνδεση στο πεδίο Saved Sessions (εικόνα 3, 8) και
- ιέζουμε το κουμπί Save (εικόνα 3, 9) για να αποθηκεύσουμε τη σύνδεσή μας.
- Την επόμενη φορά που θελουμε να χρησιμοποιήσουμε αυτή τη σύνδεση, απλά την επιλέγουμε κλικάροντας την στη λίστα με τις Saved Sessions (εικόνα 3, 10),
- τη φορτώνουμε πιέζοντας το κουμπί Load (εικόνα 3, 11) και
- την ανοίγουμε πιέζοντας το κουμπί Open (εικόνα 3, 12).
3. SSH σύνδεση με το διακομιστή
Τώρα είμαστε έτοιμοι να ανοίξουμε μια SSH σύνδεση με τον διακομιστή. Κατά την πρώτη SSH σύνδεση μας θα εμφανιστεί ένα warning μήνυμα.
Αυτο συμβαίνει γιατί το PuTTY δε γνωρίζει ακόμα το host key του διακομιστή. Είναι απολύτως ασφαλές να επιλέξουμε Accept (εικόνα 4). Θυμηθείτε όμως πως θα λάβετε το ίδιο μήνυμα σε περίπτωση που αλλάξει το host key του διακομιστή.
Η SSH σύνδεση θα ανοίξει και αφού νωρίτερα κατά τη ρύθμιση του PuTTY ορίσαμε username, τώρα θα χρειαστεί να συμπληρώσουμε τον κωδικό εισόδου. Αν ο κωδικός είναι σωστός έχουμε συνδεθεί στο διακομιστή μας. Η σύνδεσή μας όμως είναι με τη χρήση username & password και όχι key-based. Οποισδήποτε γνωρίζει αυτά τα στοιχεία μπορεί να συνδεθεί στο διακομιστή.
4. Δημιουργία ενός ζεύγους δημόσιου/ιδιωτικού κλειδιού (Public/Private key)
Για τη δημιουργία του δημόσιου/ιδιωτικού RSA κλειδιού θα χρησιμοποιήσουμε το PuTTYgen. Ξεκινάμε το πρόγραμμα με διπλό κλίκ στο puttygen.exe που βρίσκεται στο φάκελο εγκατάστασης του PuTTY, στην περίπτωσή μας τον C:\Program Files\PuTTY.
Βεβαιωθείτε ότι το Type of key to generate έχει οριστεί σε RSA (Εικόνα 5, 1) και το Number of bits in a generated key είναι 2048 (Εικόνα 5, 2). Στη συνέχεια, πατήστε το κουμπί Generate (Εικόνα 5, 3).
Κατά τη δημιουργία του κλειδιού (εικόνα 6), το προγραμμα μας παροτρύνει να μετακινήσουμε το δείκτη του ποντικιού πάνω από την κενή περιοχή για να δημιουργηθεί κάποια τυχαιότητα:
Η διαδικασία θα ολοκληρωθεί σύντομα και στη συνέχεια πρέπει να:
- Συμπληρώστε το πεδίο Key comment field (Εικόνα 7, 1). Η τιμή που θα δώσετε μπορεί να είναι οποιαδήποτε, πχ. το email σας ή κάποια άλλη τιμή.
- Συμπληρώστε έναν κωδικό στο πεδίο Key passphrase. (Εικόνα 7, 2). Χρειαζόμαστε τη Key passphrase για να συνδεθούμε στο SSH με το νέο μας κλειδί.
- Επιβεβαιώστε τον κωδικο στο πεδίο Confirm passphrase (Εικόνα 7, 3).
- Αποθηκεύστε το δημόσιο κλειδί πιέζοντας στο κουμπί Save public key (Εικόνα 7, 4). Δεν έχει σημασία το όνομα ή σε ποιό φάκελο του υπολογιστή θα επιλέξετε να αποθηκεύσετε το κλειδί.
- Αποθηκεύστε το ιδιωτικό κλειδί πιέζοντας στο κουμπί Save private key (Εικόνα 7, 5). Επιλέξτε το όνομα του αρχείου και αποθηκεύστε. Δεν έχει σημασία το όνομα ή σε ποιό φάκελο του υπολογιστή θα επιλέξετε να αποθηκεύσετε το κλειδί.
Φροντίστε τα κλειδιά να έχουν όνοματα που θα σας βοηθούν να καταλάβετε σε ποιό σύστημα ανοίκουν, αλλά και να αποθηκευθούν σε κάποιο φάκελο που θα τον βρίσκετε εύκολα.
Προσοχή, στην περίπτωση που χάσετε τα κλειδιά σας και έχετε ολοκληρώσει αυτό το σεμινάριο, δε θα μπορείτε πλέον να εισέλθετε στον απομακρυσμένο διακομιστή.
Στη συνέχεια, αντιγράψτε το κλειδί από το παράθυρο του PuTTYgen (Εικόνα 8).
5. Αποθήκευση του κλειδιού στο διακομιστή
Νωρίτερα είχαμε συνδεθεί στο διακομιστή αλλά εάν η σύνδεσή σας έκλεισε για κάποιο λόγο ξανασυνδεθείτε. Μπορείτε ακόμα να χρησιμοποιήσετε τα username & password.
Επικολήστε το RSA κλειδί στο αρχείο ~/.ssh/authorized_keys2. Ακολουθήστε τα παρακάτω βήματα:
mkdir ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys2
και επικολλήστε το προηγουμένως αντιγραμμένο κλειδί. Για παράδειγμα:
ssh-rsa AAAAB3NzaC1[…]HIrJojEhV5B/ rsa-key-20240316-XXX.XXX.XXX.XXX
Αυτό το αρχείο πρέπει να είναι εγγράψιμο/αναγνώσιμο μόνο από αυτόν τον χρήστη, οπότε εκτελούμε την εντολή:
chmod 600 ~/.ssh/authorized_keys2
6. Προσάρτηση του ιδιωτικού κλειδιού στο PuTTY προφίλ
Ανοίξτε ξανά το PuTTY και φορτώστε το προφίλ που αποθηκεύσατε νωρίτερα. (Εικόνα 9, 1-2)
Μεταβείτε στην κατηγορία: Connection > SSH > Auth > Credentials (Εικόνα 10, 1) και πιέστε στο κουμπί Browse (Εικόνα 10, 2).
Περιηγηθείτε στο σύστημα αρχείων σας και επιλέξτε το ιδιωτικό κλειδί που δημιουργήσατε προηγουμένως (Εικόνα 11):
Επιλέξτε πάλι την κατηγορία Session (Εικόνα 12, 1) και πιεστε στο κουμπί Save (Εικόνα 12, 2) για να αποθηκεύσετε τις αλλαγές στο προφίλ.
7. Key-based SSH Σύνδεση
Όλα είναι έτοιμα για την πρώτη key-based SSH σύνδεση στο διακομιστή. Με το PuTTY έτοιμο πιέζουμε στο κουμπί Open (Εικόνα 13, 3).
Όπως μπορείτε να δείτε (Εικόνα 14), το δημόσιο κλειδί χρησιμοποιείται τώρα για τον έλεγχο ταυτότητας και σας ζητείται η φράση πρόσβασης (ο κωδικός που καθορίσατε στο κεφάλαιο 4):
Το PuTTY, διαθέτει το πρόγραμμα pageant που κάνει τη χρήση του πολύ ευκολότερη. Για παράδειγμα μπορείτε να χρησιμοποιήστε το Pageant για να αποθηκεύσετε τη passphrase των κλειδιών.
8. Απενεργοποίηση δυνατότητας SSH σύνδεσης με όνομα χρήστη/συνθηματικό
Σε αυτό το σημείο μπορούμε να συνδεθούμε στο διακομιστή με το ζεύγος δημόσιου/ιδιωτικού κλειδιού αλλά και με τη χρήση username & password. Αν δεν συνδέονται άλλοι στο server και θέλουμε μεγαλύτερη ασφάλεια, πρέπει να απενεργοποιήσουμε τη δυνατότητα εισόδου με χρήση ονόματος χρήστη / κωδικού.
Για να απενεργοποιήσουμε αυτή τη δυνατότητα, πρέπει να τροποποιήσουμε το αρχείο ρυθμίσεων του ssh server. Στο σύστημά μας (Debian 11) αλλά και στα Ubundu συστήματα αυτό μπορεί να γίνει μέσω του αρχείου /etc/ssh/sshd_config.
nano /etc/ssh/sshd_config
Και ρυθμίστε τις παρακάτω εγγραφές σε no:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Στη συνέχεια επανεκινήστε τον OpenSSH server:
systemctl restart sshd
Πλέον δε μπορείτε να συνδεθείτε με χρήση username/password και μπορείτε να το διαπιστώσετε αν προσπαθήσετε να ανοίξετε μια νέα SSH σύνδεση, χωρίς ρυθμίσμενο το ιδιωτικό κλειδί.
Αυτό είναι όλο, ο έλεγχος ταυτότητας με βάση το κλειδί SSH χρησιμοποιώντας για τη σύνδεση το PuTTY είναι έτοιμος.