Πώς να ασφαλίσετε έναν SSH Server στο Ubuntu 14.04
Το 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