Το SSH (Secure Socket Shell) είναι μια διασύνδεση γραμμής εντολών και πρωτόκολλο για ασφαλή πρόσβαση σε έναν απομακρυσμένο διακομιστή Linux. Παρέχει μια ασφαλή και κρυπτογραφημένη επικοινωνία μέσω ενός δικτύου και επιτρέπει την ανταλλαγή δεδομένων μέσω ενός ασφαλούς καναλιού μεταξύ δύο διακομιστών. Χρησιμοποιείται ευρέως από τους διαχειριστές συστημάτων για τον έλεγχο του Διαδικτύου και άλλων τύπων διακομιστών εξ αποστάσεως. Σε αυτό το άρθρο θα σας δείξουμε πώς μπορείτε να ασφαλίσετε τον SSH server σας.

Σημείωση : αυτό το σεμινάριο προϋποθέτει ότι ο διακομιστής SSH εκτελεί το Ubuntu 14.04 και το μηχάνημα-πελάτης είναι ένα Linux.

Ξεκινώντας - εγκαταστήστε SSH

Πρώτον, πρέπει να ενημερώσετε το σύστημά σας και να εγκαταστήσετε τα απαραίτητα πακέτα στο σύστημά σας.

Για να ενημερώσετε το σύστημα και να εγκαταστήσετε το διακομιστή SSH στη μηχανή διακομιστή, εκτελέστε την ακόλουθη εντολή:

 sudo apt-get ενημέρωση sudo apt-get εγκαταστήσετε openssh-server 

Για να εγκαταστήσετε το πρόγραμμα-πελάτη SSH στη μηχανή-πελάτη, εκτελέστε την ακόλουθη εντολή:

 sudo apt-get εγκαταστήσετε το openssh-client 

Ρύθμιση SSH για σύνδεση χωρίς κωδικό πρόσβασης

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

Στο μηχάνημα-πελάτη σας, δημιουργήστε κλειδιά SSH με την ακόλουθη εντολή:

 cd ~ / .ssh ssh-keygen -t rsa 

Απλά πατήστε το πλήκτρο Enter σε κάθε ερώτηση. Αυτό παράγει δύο αρχεία: id_rsa.pub (δημόσιο κλειδί) και id_rsa (ιδιωτικό κλειδί).

Αυτό θα εξάγει κάτι που μοιάζει με το εξής:

Στο διακομιστή σας, δημιουργήστε τον ακόλουθο φάκελο (αν δεν υπάρχει):

 mkdir -p ~ / .ssh / 

Επιστροφή στο μηχάνημα-πελάτη σας, αντιγράψτε το αρχείο "id_rsa.pub" στο διακομιστή σας χρησιμοποιώντας την ακόλουθη εντολή:

 scp -P "yourport" ~ / .ssh / id_rsa.pub όνομα χρήστη @ serverip: ~ / .ssh 

Αλλάξτε το "yourport" στον αριθμό θύρας που χρησιμοποιεί ο SSH server σας (η προεπιλογή είναι 22) και το "serverip" στη διεύθυνση IP του διακομιστή.

Στο διακομιστή μηχανών σας, αλλάξτε το όνομα αρχείου και τα δικαιώματα ρύθμισης.

 cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys chmod 700 .ssh chmod 600.ssh / authorized_keys rm .ssh / id_rsa.pub 

Για να ελέγξετε εάν λειτουργεί η μέθοδος ελέγχου ταυτότητας βασισμένη σε κλειδιά, δοκιμάστε να συνδεθείτε με το διακομιστή SSH από το μηχάνημα-πελάτη:

 ssh -P "yourport" username @ serverip 

Αν είστε σε θέση να συνδεθείτε χωρίς να εισάγετε έναν κωδικό πρόσβασης, τότε λειτουργεί η μέθοδος ελέγχου ταυτότητας βασισμένη σε κλειδιά.

Ασφαλές αρχείο ρυθμίσεων SSH

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

Για να επεξεργαστείτε το αρχείο "/ etc / ssh / sshd_config", εκτελέστε

 sudo nano / etc / ssh / sshd_config 

Αλλαγή θύρας ακρόασης SSH

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

Για να αλλάξετε την προεπιλεγμένη θύρα στο 2200, αλλάξτε:

 Λιμάνι 22 

προς την

 Λιμάνι 2200 

Χρησιμοποιείτε μόνο το πρωτόκολλο 2

Η έκδοση 1 του πρωτοκόλλου περιέχει ευπάθειες ασφαλείας. Το πρωτόκολλο 2 είναι η προεπιλεγμένη καταχώρηση στο Ubuntu.

Αλλάξτε τη γραμμή που φαίνεται παρακάτω:

 Πρωτόκολλο 2 

Περιορίστε την πρόσβαση των χρηστών

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

Για να επιτραπεί στους χρήστες "user1" και "user2", προσθέστε την ακόλουθη γραμμή:

 AllowUsers user1 user2 

Για να αρνηθείτε "baduser1" και "baduser2", προσθέστε την ακόλουθη γραμμή:

 DenyUsers baduser1 baduser2 

Απενεργοποίηση σύνδεσης ρίζας

Δεν είναι απαραίτητο να συνδεθείτε ως root μέσω ssh μέσω δικτύου. Οι κανονικοί χρήστες μπορούν επίσης να χρησιμοποιήσουν su ή sudo για να αποκτήσουν πρόσβαση στο επίπεδο ρίζας. Οι περισσότεροι επιτιθέμενοι θα προσπαθήσουν να χρησιμοποιήσουν τον χρήστη root για να συνδεθούν. Αυτός είναι ένας μεγάλος κίνδυνος για την ασφάλεια, επομένως συνιστάται να αρνείστε τη σύνδεση root.

Για να απενεργοποιήσετε τη σύνδεση ρίζας, αλλάξτε τη γραμμή

 PermitRootLogin χωρίς κωδικό πρόσβασης 

προς την

 PermitRootLogin όχι 

Απόκρυψη τελευταίας σύνδεσης

Μπορείτε να αποκρύψετε όσους συνδεθήκατε τελευταία όταν ένας χρήστης συνδεθεί.

Για αυτό, αλλάξτε τη γραμμή

 PrintLastLog Ναι 

προς την

 PrintLastLog όχι 

Περιορίστε τη διεπαφή για να συνδεθείτε

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

 #ListenAddress :: 

προς την

 ListenAddress 192.168.1.20 

Απενεργοποιήστε τον έλεγχο ταυτότητας με κωδικό πρόσβασης

Η χρήση του ελέγχου ταυτότητας με κωδικό πρόσβασης είναι ένας μεγάλος κίνδυνος για την ασφάλεια, εάν ο χρήστης χρησιμοποιεί έναν αδύναμο κωδικό πρόσβασης. Συνιστάται να χρησιμοποιείτε "κλειδιά ssh". Ένα "κλειδί ssh" μπορεί να περιέχει πάνω από 600 τυχαίους χαρακτήρες και είναι δύσκολο να σπάσει.

Για αυτό, αλλάξτε τη γραμμή

 # PasswordAuthentication ναι 

προς την

 Κωδικός πρόσβασης κωδικού πρόσβασης 

Απενεργοποίηση αρχείων .rhosts

Τα αρχεία .rhosts καθορίζουν ποιοι χρήστες μπορούν να έχουν πρόσβαση στις εντολές r (rsh, rcp, rlogin κ.λπ.) στο τοπικό μηχάνημα χωρίς κωδικό πρόσβασης. Από προεπιλογή, ένα αρχείο .rhosts είναι απενεργοποιημένο. Εάν όχι, αλλάξτε τις γραμμές όπως φαίνεται παρακάτω.

 IgnoreRhosts ναι RhostsAuthentication όχι RSAAuthentication ναι 

Απενεργοποιήστε τον έλεγχο ταυτότητας βάσει κεντρικού υπολογιστή

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

Αν όχι, αλλάξτε τη γραμμή που φαίνεται παρακάτω.

 HostbasedAuthentication no 

Ορίστε ένα χρονοδιάγραμμα χάριτος σύνδεσης σύνδεσης

Το "LoginGraceTime" καθορίζει πόσο χρόνο μετά την αίτηση σύνδεσης ο διακομιστής θα περιμένει πριν από την αποσύνδεση. Συνιστάται να μειωθεί σε 60 δευτερόλεπτα.

Για αυτό, αλλάξτε τη γραμμή

 LoginGraceTime 120 

προς την

 LoginGraceTime 60 

Ορίστε τις μέγιστες συνδέσεις εκκίνησης

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

Για αυτό, αλλάξτε τη γραμμή

 #MaxStartups 10:30:60 

προς την

 MaxStartups 2 

Απενεργοποίηση προώθησης

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

Για αυτό, αλλάξτε τη γραμμή

 X11Αποστολή ναι 

προς την

 X11Αποστολή αριθ 

Καταγράψτε περισσότερες πληροφορίες

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

Για αυτό, αλλάξτε τη γραμμή

 LogLevel INFO 

προς την

 LogLevel VERBOSE 

Απενεργοποίηση κενών κωδικών πρόσβασης

Είναι απαραίτητο να απορρίψετε τους χρήστες με κενούς κωδικούς πρόσβασης στον διακομιστή σας. Από προεπιλογή, το PermitEmptyPasswords είναι απενεργοποιημένο στο Ubuntu.

Αν όχι, αλλάξτε τη γραμμή που φαίνεται παρακάτω.

 PermitEmptyPasswords όχι 

Ορίστε το χρονικό διάστημα αδράνειας

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

Για αυτό, προσθέστε τις ακόλουθες γραμμές.

 ClientAliveInterval 300 ClientAliveCountMax 0 

Αυστηρή λειτουργία

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

Εάν όχι, αλλάξτε την παρακάτω γραμμή.

 StrictModes ναι 

Τώρα αποθηκεύστε και κλείστε το αρχείο / etc / ssh / sshd_config και επανεκκινήστε το διακομιστή SSH.

 sudo υπηρεσία ssh επανεκκίνηση 

Ασφαλίστε SSH χρησιμοποιώντας περιτυλίγματα TCP

Ένα περιτύλιγμα TCP παρέχει έλεγχο πρόσβασης βασισμένο στον κεντρικό υπολογιστή στις υπηρεσίες δικτύου που χρησιμοποιούνται για να φιλτράρουν την πρόσβαση στο δίκτυο στο Internet. Επεξεργαστείτε το αρχείο "/etc/hosts.allow" για να επιτρέψετε μόνο SSH από 192.168.1.2 και 172.16.23.12.

 sudo nano /etc/hosts.allow 

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

 sshd: 192.168.1.2 172.16.23.12 

Ασφαλίστε SSH χρησιμοποιώντας το iptables

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

Για να επιτρέψετε συνδέσεις SSH μόνο από το 192.168.1.2 εκτελέστε την ακόλουθη εντολή:

 sudo iptables -A INPUT -p tcp -m κατάσταση - κατάσταση ΝΕΟ --ς πόρος 192.168.1.2 --dport 2200 -j ACCEPT 

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

 sudo iptables -A INPUT -p tcp - μεταφορά 2200 -j DROP 

Τώρα αποθηκεύστε τους νέους κανόνες χρησιμοποιώντας την ακόλουθη εντολή:

 sudo iptables-save> /etc/iptables/rules.v4 

συμπέρασμα

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

Αναφορά: SSH ubuntu