Πώς να ασφαλίσετε και να σκληρύνετε τον διακομιστή OpenSSH


Όταν πρόκειται για πρόσβαση σε απομακρυσμένες συσκευές όπως διακομιστές, δρομολογητές και διακόπτες, το πρωτόκολλο SSH συνιστάται ιδιαίτερα, δεδομένης της ικανότητάς του να κρυπτογραφεί την κυκλοφορία και να αποκρούει οποιονδήποτε μπορεί να προσπαθήσει να κρυφακούσει τις συνδέσεις σας.

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

1. Ρύθμιση ελέγχου ταυτότητας χωρίς κωδικό πρόσβασης SSH

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

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

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

Το επόμενο βήμα είναι να απενεργοποιήσετε τον έλεγχο ταυτότητας με κωδικό πρόσβασης. Για να το επιτύχετε αυτό, πρέπει να τροποποιήσετε το αρχείο διαμόρφωσης SSH.

$ sudo vim /etc/ssh/sshd_config

Μέσα στο αρχείο ρυθμίσεων, πραγματοποιήστε κύλιση και εντοπίστε την ακόλουθη οδηγία. Καταργήστε το σχόλιο και αλλάξτε την επιλογή ναι σε όχι

PasswordAuthentication no

Στη συνέχεια, επανεκκινήστε τον δαίμονα SSH.

# sudo systemctl restart sshd

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

2. Απενεργοποιήστε τα αιτήματα σύνδεσης χωρίς κωδικό πρόσβασης χρήστη SSH

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

Για να απορρίψετε αιτήματα από χρήστες χωρίς κωδικό πρόσβασης, μεταβείτε ξανά στο αρχείο διαμόρφωσης στη διεύθυνση /etc/ssh/sshd_config και βεβαιωθείτε ότι έχετε την παρακάτω οδηγία:

PermitEmptyPasswords no

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

$ sudo systemctl restart sshd

3. Απενεργοποιήστε τα SSH Root Logins

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

Για αυτόν τον λόγο, συνιστάται πάντα να απενεργοποιείτε την απομακρυσμένη σύνδεση ρίζας SSH και αντ' αυτού να μένετε σε έναν κανονικό χρήστη που δεν είναι root. Για άλλη μια φορά, μεταβείτε στο αρχείο ρυθμίσεων και τροποποιήστε αυτήν τη γραμμή όπως φαίνεται.

PermitRootLogin no

Μόλις τελειώσετε, επανεκκινήστε την υπηρεσία SSH για να πραγματοποιηθεί η αλλαγή.

$ sudo systemctl restart sshd

Στο εξής, η απομακρυσμένη σύνδεση root θα απενεργοποιηθεί.

4. Χρησιμοποιήστε το Πρωτόκολλο 2 SSH

Το SSH διατίθεται σε δύο εκδόσεις: SSH πρωτόκολλο 1 και πρωτόκολλο 2. Το πρωτόκολλο 2 του SSH εισήχθη το 2006 και είναι πιο ασφαλές από το πρωτόκολλο 1 χάρη στους ισχυρούς κρυπτογραφικούς ελέγχους, τη μαζική κρυπτογράφηση και τους ισχυρούς αλγορίθμους του.

Από προεπιλογή, το SSH χρησιμοποιεί πρωτόκολλο 1. Για να το αλλάξετε στο πιο ασφαλές Πρωτόκολλο 2, προσθέστε την παρακάτω γραμμή στο αρχείο διαμόρφωσης:

Protocol 2

Όπως πάντα, επανεκκινήστε το SSH για να τεθούν σε ισχύ οι αλλαγές.

$ sudo systemctl restart sshd

Στο εξής, το SSH θα χρησιμοποιεί το Πρωτόκολλο 2 από προεπιλογή.

Για να ελέγξετε εάν το πρωτόκολλο 1 SSH υποστηρίζεται πλέον, εκτελέστε την εντολή:

$ ssh -1 

Θα λάβετε ένα σφάλμα που λέει \Το πρωτόκολλο SSH v.1 δεν υποστηρίζεται πλέον.

Σε αυτή την περίπτωση, η εντολή ήταν:

$ ssh -1 

Επιπλέον, μπορείτε απλώς να καθορίσετε την ετικέτα -2 για να βεβαιωθείτε ότι το Πρωτόκολλο 2 είναι το προεπιλεγμένο πρωτόκολλο που χρησιμοποιείται.

$ ssh -2 

5. Ορίστε την τιμή αδράνειας χρονικού ορίου λήξης σύνδεσης SSH

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

Για άλλη μια φορά, ανοίξτε το αρχείο διαμόρφωσης SSH και εντοπίστε την οδηγία “ClientAliveInterval”. Εκχωρήστε μια λογική τιμή, για παράδειγμα, έχω θέσει το όριο σε 180 δευτερόλεπτα.

ClientAliveInterval 180

Αυτό σημαίνει ότι η συνεδρία SSH θα διαγραφεί εάν δεν καταγραφεί καμία δραστηριότητα μετά από 3 λεπτά που ισοδυναμούν με 180 δευτερόλεπτα.

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

$ sudo systemctl restart sshd

6. Περιορίστε την πρόσβαση SSH σε ορισμένους χρήστες

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

Όπως πάντα, ανοίξτε το αρχείο διαμόρφωσης και προσθέστε την οδηγία AllowUsers ακολουθούμενη από τα ονόματα των χρηστών που θέλετε να παραχωρήσετε. Στο παρακάτω παράδειγμα, επέτρεψα στους χρήστες ‘tecmint’ και ‘james’ να έχουν απομακρυσμένη πρόσβαση στο σύστημα μέσω SSH. Κάθε άλλος χρήστης που προσπαθεί να αποκτήσει απομακρυσμένη πρόσβαση θα αποκλειστεί.

AllowUsers tecmint james

Στη συνέχεια, επανεκκινήστε το SSH για να διατηρηθούν οι αλλαγές.

$ sudo systemctl restart sshd

7. Διαμορφώστε ένα όριο για προσπάθειες κωδικού πρόσβασης

Ένας άλλος τρόπος με τον οποίο μπορείτε να προσθέσετε ένα επίπεδο ασφάλειας είναι περιορίζοντας τον αριθμό των προσπαθειών σύνδεσης SSH έτσι ώστε μετά από έναν αριθμό αποτυχημένων προσπαθειών, η σύνδεση να πέφτει. Για άλλη μια φορά, λοιπόν, μεταβείτε στο αρχείο διαμόρφωσης και εντοπίστε την οδηγία \MaxAuthTries” και ορίστε μια τιμή για τον μέγιστο αριθμό προσπαθειών.

Σε αυτό το παράδειγμα, το όριο έχει οριστεί σε 3 προσπάθειες όπως φαίνεται.

MaxAuthTries 3

Και τέλος, επανεκκινήστε την υπηρεσία SSH όπως στα προηγούμενα σενάρια.

Μπορεί επίσης να βρείτε χρήσιμα αυτά τα ακόλουθα άρθρα σχετικά με το SSH:

  • Πώς να εγκαταστήσετε το διακομιστή OpenSSH 8.0 από το Source στο Linux
  • Πώς να εγκαταστήσετε το Fail2Ban για προστασία SSH στο CentOS/RHEL 8
  • Πώς να αλλάξετε τη θύρα SSH στο Linux
  • Πώς να δημιουργήσετε SSH Tunneling ή Port Forwarding στο Linux
  • 4 τρόποι για να επιταχύνετε τις συνδέσεις SSH στο Linux
  • Πώς να βρείτε όλες τις αποτυχημένες προσπάθειες σύνδεσης SSH στο Linux
  • Πώς να αποσυνδέσετε τις ανενεργές ή αδρανή συνδέσεις SSH στο Linux

συμπέρασμα

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