Η ασφάλεια των συνδέσεων SSH σάς βοηθά να προστατεύσετε το σύστημα και τα δεδομένα σας Linux. Οι διαχειριστές συστήματος και οι οικικοί χρήστες πρέπει επίσης να προστατεύουν τους υπολογιστές που έχουν πρόσβαση στο Διαδίκτυο. Ακολουθούν 10 εύκολοι τρόποι που θα σας βοηθήσουν να προστατεύσετε τον διακομιστή SSH σας .
Μερικά βασικά για την ασφάλεια SSH
Το SSH σημαίνει Secure Shell. Το πρωτόκολλο SSH ή το εργαλείο λογισμικού επιτρέπει στους διαχειριστές συστήματος και στους χρήστες να πραγματοποιούν ασφαλείς συνδέσεις με απομακρυσμένους υπολογιστές χρησιμοποιώντας αυτό το πρωτόκολλο.
Το πρωτόκολλο SSH είναι ένα κρυπτογραφημένο πρωτόκολλο σχεδιασμένο να παρέχει μια ασφαλή σύνδεση μέσω ενός μη ασφαλούς δικτύου όπως το Διαδίκτυο. Το SSH στο Linux είναι χτισμένο στη φορητή έκδοση του έργου OpenSSH. Υλοποιείται σε ένα κλασικό μοντέλο πελάτη-διακομιστή με διακομιστή SSH που δέχεται συνδέσεις από πελάτες SSH. Το πρόγραμμα-πελάτης χρησιμοποιείται για τη σύνδεση με τον διακομιστή και την έκθεση της συνεδρίας σε απομακρυσμένους χρήστες. Ο διακομιστής αποδέχεται τη σύνδεση και ξεκινά τη συνεδρία.
Στην προεπιλεγμένη διαμόρφωσή του, ο διακομιστής SSH θα «ακούει» τις εισερχόμενες συνδέσεις στο Πρωτόκολλο Ελέγχου Μεταφοράς (TCP), θύρα 22. Δεδομένου ότι αυτή είναι μια τυποποιημένη και δημοφιλής θύρα, αποτελεί στόχο για απειλές ηθοποιών και κακόβουλα ρομπότ.
Κακόβουλοι παράγοντες εκκινούν bots που σαρώνουν εύρη διευθύνσεων IP αναζητώντας ανοιχτές θύρες. Στη συνέχεια εξετάζει αυτές τις θύρες για εκμεταλλεύσιμα τρωτά σημεία. Το να σκέφτομαι ότι είμαι ασφαλής, υπάρχουν πολλοί μεγαλύτεροι και καλύτεροι στόχοι από εμένα για τους κακούς είναι εντελώς λάθος. Αυτά τα ρομπότ δεν επιλέγουν τους στόχους τους με βάση κανένα κριτήριο, απλώς ψάχνουν έναν τρόπο να διεισδύσουν στο σύστημα.
Θα είστε θύμα εάν δεν ασφαλίσετε το σύστημά σας.
Τριβή ασφαλείας
Σημείο τριβής ασφαλείας είναι κάθε κατάσταση όπου η κύρια εργασία αποτρέπεται ή καθυστερεί λόγω απαιτήσεων ασφαλείας.
Η τριβή ασφαλείας προκαλεί δυσφορία (σε οποιοδήποτε επίπεδο) στους χρήστες και σε άλλους όταν εφαρμόζετε μέτρα ασφαλείας. Άτομα που είναι καινούργια σε συστήματα υπολογιστών μπορεί να ανησυχούν μήπως θα πρέπει να εισάγουν έναν κωδικό πρόσβασης κάθε φορά που συνδέονται στο κεντρικό υπολογιστή. Για αυτούς, αυτό είναι επίσης μια μορφή τριβής ασφάλειας.
Η εισαγωγή μέτρων ασφαλείας θα περιλαμβάνει συχνά κάποια μορφή τριβής για μερικούς ανθρώπους. Οι ιδιοκτήτες επιχειρήσεων πρέπει να πληρώσουν για αυτά τα μέτρα. Οι χρήστες υπολογιστών μπορεί να χρειαστεί να αλλάξουν συνήθειες ή να θυμηθούν διαφορετικές πληροφορίες ελέγχου ταυτότητας, προσθέτοντας βήματα για να συνδεθούν με επιτυχία. Οι διαχειριστές συστήματος θα πρέπει να κάνουν επιπλέον δουλειά για την εφαρμογή και τη διατήρηση των νέων μέτρων ασφαλείας.
Το σφίξιμο και το κλείδωμα ενός λειτουργικού συστήματος Linux ή τύπου Unix μπορεί να είναι γρήγορο. Τα μέτρα ασφαλείας εδώ είναι ένα σύνολο εύκολων βημάτων που θα βελτιώσουν την ασφάλεια του υπολογιστή χωρίς την ανάγκη εφαρμογών τρίτων και βαθιάς παρέμβασης τείχους προστασίας .
Χρησιμοποιήστε το πρωτόκολλο SSH έκδοση 2
Το 2006, το πρωτόκολλο SSH ενημερώθηκε από την έκδοση 1 στην έκδοση 2. Πρόκειται για μια σημαντική αναβάθμιση. Υπάρχουν πολλές αλλαγές και βελτιώσεις, ειδικά στην κρυπτογράφηση και την ασφάλεια, και η έκδοση 2 δεν είναι συμβατή με την έκδοση 1. Για να αποτρέψετε τις συνδέσεις από πελάτες έκδοσης 1, μπορείτε να καθορίσετε τους υπολογιστές να δέχονται συνδέσεις μόνο από την έκδοση 2.
Για να το κάνετε αυτό, επεξεργαστείτε το αρχείο /etc/ssh/sshd_config χρησιμοποιώντας την ακόλουθη εντολή:
sudo gedit /etc/ssh/sshd_config

Προσθέστε την ακόλουθη γραμμή:
Protocol 2

Και αποθηκεύστε το αρχείο και, στη συνέχεια, επανεκκινήστε τη διαδικασία δαίμονα SSH χρησιμοποιώντας την ακόλουθη εντολή:
sudo systemctl restart sshd

Δοκιμάστε τη νέα ρύθμιση σε δράση μεταβαίνοντας σε άλλο μηχάνημα και προσπαθώντας να κάνετε SSH στη δοκιμαστική μηχανή. Θα χρησιμοποιήσουμε την επιλογή -1 (πρωτόκολλο 1) για να αναγκάσουμε την εντολή ssh να χρησιμοποιήσει την έκδοση πρωτοκόλλου 1.
ssh -1 [email protected]

Το αίτημα σύνδεσης απορρίφθηκε. Βεβαιωθείτε ότι μπορείτε ακόμα να συνδεθείτε στο πρωτόκολλο 2. Θα χρησιμοποιήσουμε -2 (πρωτόκολλο 2) για δοκιμή.
ssh -2 [email protected]

Το γεγονός ότι ο διακομιστής SSH ζητά κωδικό πρόσβασης είναι ένα θετικό σημάδι ότι η σύνδεση έχει γίνει και ότι αλληλεπιδράτε με τον διακομιστή. Οι σύγχρονοι πελάτες SSH θα χρησιμοποιούν από προεπιλογή το πρωτόκολλο 2, δεν χρειάζεται να καθορίσουμε το πρωτόκολλο 2, υπό την προϋπόθεση ότι ο πελάτης είναι ενημερωμένος.
ssh [email protected]

Η σύνδεση έγινε αποδεκτή.
Αποφύγετε τη θύρα 22
Η θύρα 22 είναι η τυπική θύρα για συνδέσεις SSH. Εάν χρησιμοποιείται διαφορετική θύρα, προσθέτει ένα κομμάτι Security Through Obscurity (STO) στο σύστημά σας. Η ασφάλεια μέσω της ασάφειας δεν πρέπει ποτέ να θεωρείται πραγματικό μέτρο ασφαλείας. Στην πραγματικότητα, ορισμένα εξυπνότερα ρομπότ επίθεσης εξετάζουν όλες τις ανοιχτές θύρες και αποφασίζουν ποια υπηρεσία εκτελούν, αντί να βασίζονται σε μια απλή λίστα αναζήτησης θυρών και να υποθέτουν ότι παρέχουν μια υπηρεσία κανονικά. Αλλά η χρήση μιας μη τυπικής θύρας μπορεί να βοηθήσει στη μείωση της κακής κίνησης στη θύρα 22.
Για να διαμορφώσετε μια μη τυπική θύρα, επεξεργαστείτε το αρχείο διαμόρφωσης SSH όπως παραπάνω.

Διαγράψτε το # στην αρχή της γραμμής Port και αντικαταστήστε το 22 με τον αριθμό της επιλογής σας. Αποθηκεύστε το αρχείο διαμόρφωσης και επανεκκινήστε τον δαίμονα SSH.
Σε άλλον υπολογιστή θα χρησιμοποιήσουμε την εντολή ssh για να συνδεθούμε στον διακομιστή. Η προεπιλεγμένη εντολή ssh χρησιμοποιεί τη θύρα 22:
ssh [email protected]

Η σύνδεση απορρίφθηκε. Δοκιμάστε ξανά και καθορίστε τη θύρα 470 χρησιμοποιώντας την επιλογή –p (port):
ssh -p 479 [email protected]

Η σύνδεση επιβεβαιώθηκε.
Συνδέστε το φίλτρο χρησιμοποιώντας TCP Wrappers
Τα TCP Wrappers είναι μια κατανοητή λίστα ελέγχου πρόσβασης. Σας επιτρέπει να αρνηθείτε και να επιτρέψετε συνδέσεις με βάση τα χαρακτηριστικά του αιτήματος σύνδεσης, όπως η διεύθυνση IP ή το όνομα κεντρικού υπολογιστή. Τα TCP Wrappers θα πρέπει να χρησιμοποιούνται με, όχι στη θέση, ενός σωστά διαμορφωμένου τείχους προστασίας.
Το TCP Wrappers είναι προεγκατεστημένο σε μηχανές Ubuntu 18.04 LTS . Πρέπει να εγκατασταθεί σε Manjaro 18.10 και Fedora 30.
Για εγκατάσταση στο Fedora, χρησιμοποιήστε την ακόλουθη εντολή:
sudo yum install tcp_wrappers

Για εγκατάσταση στο Manjaro, χρησιμοποιήστε αυτήν την εντολή:
sudo pacman -Syu tcp-wrappers

Περιλαμβάνονται δύο αρχεία, ένα αρχείο περιέχει τη λίστα επιτρεπόμενων και ένα αρχείο περιέχει τη λίστα άρνησης. Επεξεργαστείτε τη λίστα άρνησης χρησιμοποιώντας την ακόλουθη εντολή:
sudo gedit /etc/hosts.deny

Η παραπάνω εντολή θα ανοίξει το πρόγραμμα επεξεργασίας gedit με το αρχείο να αρνείται να φορτώσει σε αυτό.

Πρέπει να προσθέσετε τη γραμμή:
ALL : ALL
Και αποθηκεύστε το αρχείο. Αυτή η γραμμή θα αποκλείσει κάθε μη εξουσιοδοτημένη πρόσβαση. Τώρα, πρέπει να παραχωρήσουμε δικαιώματα στις συνδέσεις που θέλετε να αποδεχτείτε. Για να το κάνετε αυτό, πρέπει να επεξεργαστείτε το αρχείο δικαιωμάτων:
sudo gedit /etc/hosts.allow

Η παραπάνω εντολή θα ανοίξει το πρόγραμμα επεξεργασίας gedit με το αρχείο με δυνατότητα λήψης σε αυτό.

Προσθέσαμε το όνομα δαίμονα SSH, SSHD και τη διεύθυνση IP του υπολογιστή που επιτρέπει τη σύνδεση. Αποθηκεύστε το αρχείο και δείτε εάν ισχύουν οι περιορισμοί και τα δικαιώματα.
Αρχικά, θα προσπαθήσετε να συνδεθείτε από έναν υπολογιστή που δεν βρίσκεται στο αρχείο hosts.allow:

Η σύνδεση απορρίφθηκε. Θα προσπαθήσουμε να συνδεθούμε από ένα μηχάνημα με διεύθυνση IP 192.168.4.23:

Η σύνδεση έγινε αποδεκτή.
Το παράδειγμα εδώ επιτρέπει τη σύνδεση μόνο σε ένα μηχάνημα. Τα περιτυλίγματα TCP είναι αρκετά ευέλικτα, υποστηρίζουν ονόματα κεντρικών υπολογιστών, χαρακτήρες μπαλαντέρ και μάσκες υποδικτύου για αποδοχή συνδέσεων από το εύρος διευθύνσεων IP.
Απόρριψη αιτημάτων σύνδεσης χωρίς κωδικό πρόσβασης
Αν και δεν είναι καλό, οι διαχειριστές συστήματος Linux μπορούν να δημιουργήσουν λογαριασμούς χρηστών χωρίς κωδικούς πρόσβασης. Αυτό σημαίνει ότι δεν απαιτείται κωδικός πρόσβασης για απομακρυσμένες συνδέσεις από αυτόν τον λογαριασμό. Αυτές οι συνδέσεις θα γίνουν αποδεκτές αλλά δεν θα επικυρωθούν.
Η προεπιλεγμένη ρύθμιση για το SSH δέχεται αιτήματα σύνδεσης χωρίς κωδικό πρόσβασης. Μπορούμε να το αλλάξουμε εύκολα και να βεβαιωθούμε ότι όλες αυτές οι συνδέσεις έχουν επικυρωθεί.
Πρέπει να επεξεργαστείτε το αρχείο διαμόρφωσης SSH.

Κάντε κύλιση προς τα κάτω στο αρχείο μέχρι να δείτε τη γραμμή που λέει #PermitEmptyPasswords όχι . Διαγράψτε το # στην αρχή της γραμμής και αποθηκεύστε το αρχείο. Επανεκκινήστε τον δαίμονα SSH.
Χρησιμοποιήστε κλειδιά SSH αντί για κωδικούς πρόσβασης
Τα κλειδιά SSH παρέχουν έναν ασφαλή τρόπο σύνδεσης σε διακομιστή SSH. Οι κωδικοί πρόσβασης μπορούν να παραβιαστούν, να μαντευτούν ή να εξαναγκαστούν . Τα κλειδιά SSH δεν είναι ευάλωτα σε αυτούς τους τύπους επιθέσεων.
Όταν δημιουργείτε ένα κλειδί SSH, δημιουργείτε ένα ζεύγος κλειδιών. Το ένα είναι το δημόσιο κλειδί και το άλλο είναι το ιδιωτικό κλειδί. Το δημόσιο κλειδί είναι εγκατεστημένο στους διακομιστές στους οποίους θέλετε να συνδεθείτε. Το ιδιωτικό κλειδί διατηρείται με ασφάλεια στον υπολογιστή σας.
Τα κλειδιά SSH επιτρέπουν τη δημιουργία συνδέσεων χωρίς κωδικό πρόσβασης, κάτι που είναι πιο ασφαλές από τις συνδέσεις που χρησιμοποιούν έλεγχο ταυτότητας με κωδικό πρόσβασης.
Όταν κάνετε ένα αίτημα σύνδεσης, ο απομακρυσμένος υπολογιστής χρησιμοποιεί ένα αντίγραφο του δημόσιου κλειδιού για να δημιουργήσει ένα κρυπτογραφημένο μήνυμα που αποστέλλεται πίσω στον υπολογιστή. Εφόσον είναι κρυπτογραφημένο με το δημόσιο κλειδί, ο υπολογιστής μπορεί να το αποκρυπτογραφήσει με το ιδιωτικό κλειδί.
Στη συνέχεια, ο υπολογιστής εξάγει ορισμένες πληροφορίες από το μήνυμα, τις κρυπτογραφεί και τις στέλνει πίσω στο διακομιστή. Εάν ο διακομιστής μπορεί να το αποκρυπτογραφήσει με ένα αντίγραφο του δημόσιου κλειδιού. Εάν οι πληροφορίες στο μήνυμα ταιριάζουν με αυτές που σας έστειλε ο διακομιστής, η σύνδεση θα επιβεβαιωθεί.
Εδώ, η σύνδεση γίνεται στον διακομιστή στο 192.168.4.11 από τον χρήστη με το κλειδί SSH. Σημειώστε ότι δεν τους ζητείται να εισάγουν κωδικό πρόσβασης.
ssh [email protected]

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

Κάντε κύλιση προς τα κάτω στο αρχείο μέχρι να δείτε τη γραμμή που ξεκινά με #PasswordAuthentication ναι . Διαγράψτε το # στην αρχή της γραμμής, αλλάξτε το ναι σε όχι και αποθηκεύστε το αρχείο. Επανεκκινήστε τον δαίμονα SSH.
Απενεργοποιήστε την προώθηση X11
Η προώθηση X11 επιτρέπει στους απομακρυσμένους χρήστες να εκτελούν εφαρμογές γραφικών από τον διακομιστή σας σε μια περίοδο λειτουργίας SSH, αλλά γίνεται εύκολα αντικείμενο εκμετάλλευσης από κακούς παράγοντες. Είναι καλύτερα να το απενεργοποιήσετε επεξεργάζοντας το αρχείο διαμόρφωσης SSH.

Κάντε κύλιση προς τα κάτω στο αρχείο μέχρι να δείτε τη γραμμή #X11Forwarding no , διαγράψτε το # στην αρχή της γραμμής και αποθηκεύστε το αρχείο. Επανεκκινήστε τον δαίμονα SSH.
Ορισμός τιμής χρονικού ορίου αδράνειας
Εάν δημιουργηθεί μια σύνδεση SSH με έναν υπολογιστή και δεν υπάρχει δραστηριότητα σε αυτόν για κάποιο χρονικό διάστημα, αυτό μπορεί να θέσει σε κίνδυνο την ασφάλεια.
Επομένως, θα πρέπει να ορίσετε ένα όριο χρονικού ορίου. Η σύνδεση SSH θα αποσυνδεθεί εάν δεν υπάρξει δραστηριότητα εντός του χρονικού ορίου. Για άλλη μια φορά, πρέπει να επεξεργαστούμε το αρχείο διαμόρφωσης SSH.

Κάντε κύλιση προς τα κάτω στο αρχείο μέχρι να δείτε τη γραμμή που ξεκινά με #ClientAliveInterval 0 . Αφαιρέστε το # στην αρχή της γραμμής, αλλάξτε τον αριθμό 0 στην επιθυμητή τιμή. Συνήθως οι άνθρωποι το ρυθμίζουν στα 300 δευτερόλεπτα, δηλαδή 5 λεπτά. Αποθηκεύστε το αρχείο και επανεκκινήστε τον δαίμονα SSH.
Ορίστε ένα όριο στον αριθμό των καταχωρίσεων κωδικού πρόσβασης
Ο καθορισμός ενός ορίου στον αριθμό των επιβεβαιώσεων μπορεί να βοηθήσει στην αποφυγή εικασίας κωδικού πρόσβασης και επιθέσεων ωμής βίας. Μετά τον καθορισμένο αριθμό αιτημάτων ελέγχου ταυτότητας, ο χρήστης θα αποσυνδεθεί από τον διακομιστή SSH. Από προεπιλογή, δεν υπάρχει όριο στον αριθμό των προσπαθειών κωδικού πρόσβασης, αλλά μπορείτε να τον επεξεργαστείτε στο αρχείο διαμόρφωσης SSH.

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

Σημείωση, ο αριθμός MaxAuthTries είναι μεγαλύτερος από τον αριθμό των προσπαθειών που επιτρέπεται στον χρήστη. Μετά από δύο αποτυχημένες προσπάθειες, αποσυνδέεστε, πράγμα που σημαίνει ότι το MaxAuthTries έχει οριστεί σε 3.
Απενεργοποιήστε τη σύνδεση root
Σας συμβουλεύουμε να μην συνδεθείτε ως root, απλώς χρησιμοποιήστε το ως κανονικός χρήστης στο Linux και χρησιμοποιήστε το sudo για να εκτελέσετε ενέργειες που απαιτούν δικαιώματα root. Επίσης, δεν θα πρέπει να επιτρέψετε στη root να συνδεθεί στον διακομιστή SSH. Μόνο οι κανονικοί χρήστες επιτρέπεται να συνδέονται. Εάν χρειάζεται να εκτελέσουν μια εργασία διαχειριστικού επιπέδου, μπορούν επίσης να χρησιμοποιήσουν το sudo. Εάν πρέπει να επιτρέψετε στον χρήστη root να συνδεθεί, μπορείτε να τον αναγκάσετε να χρησιμοποιήσει ένα κλειδί SSH.
Επεξεργαστείτε το αρχείο διαμόρφωσης για να απενεργοποιήσετε τη σύνδεση root.

Κάντε κύλιση προς τα κάτω στο αρχείο μέχρι να δείτε τη γραμμή που ξεκινά με #PermitRootLogin prohibit-password , διαγράψτε το # στην αρχή της γραμμής.
- Εάν θέλετε να αποτρέψετε τη σύνδεση του root, αντικαταστήστε τον κωδικό απαγόρευσης με τον αριθ.
- Εάν επιτρέψετε στη root να συνδεθεί, αλλά επιβάλετε τη χρήση ενός κλειδιού SSH, αφήστε ανέπαφο τον κωδικό απαγόρευσης.
Αποθηκεύστε τις αλλαγές και επανεκκινήστε τον δαίμονα SSH.
Τελευταίο βήμα
Φυσικά, εάν δεν χρειάζεστε SSH να τρέχει στον υπολογιστή σας, απενεργοποιήστε το με την ακόλουθη εντολή:
sudo systemctl stop sshd
sudo systemctl disable sshd
Σας εύχομαι επιτυχία!