Δεδομένου ότι η πρόσβαση SSH είναι το πιο σημαντικό σημείο εισόδου για τη διαχείριση του διακομιστή σας, έχει γίνει ένας ευρέως χρησιμοποιούμενος φορέας επίθεσης.
Τα βασικά βήματα για την ασφάλεια του SSH περιλαμβάνουν: απενεργοποίηση της πρόσβασης root, απενεργοποίηση του ελέγχου ταυτότητας με κωδικό πρόσβασης (και χρήση κλειδιών αντ' αυτού) και αλλαγή θυρών (λίγη σχέση με την ασφάλεια εκτός από την ελαχιστοποίηση των κοινών σαρωτών θυρών και των ανεπιθύμητων αρχείων καταγραφής).
Το επόμενο βήμα θα ήταν μια λύση τείχους προστασίας PF με παρακολούθηση σύνδεσης. Αυτή η λύση θα διαχειριζόταν τις καταστάσεις σύνδεσης και θα αποκλείει κάθε IP που έχει πάρα πολλές συνδέσεις. Αυτό λειτουργεί εξαιρετικά και είναι πολύ εύκολο να γίνει με το PF, αλλά ο δαίμονας SSH εξακολουθεί να είναι εκτεθειμένος στο Διαδίκτυο.
Τι θα λέγατε να κάνετε το SSH εντελώς απρόσιτο από το εξωτερικό; Εδώ μπαίνει το spiped . Από την αρχική σελίδα:
Spiped (pronounced "ess-pipe-dee") is a utility for creating symmetrically encrypted and authenticated pipes between socket addresses, so that one may connect to one address (e.g., a UNIX socket on localhost) and transparently have a connection established to another address (e.g., a UNIX socket on a different system). This is similar to 'ssh -L' functionality, but does not use SSH and requires a pre-shared symmetric key.
Εξαιρετική! Ευτυχώς για εμάς, έχει ένα υψηλής ποιότητας πακέτο OpenBSD που κάνει όλη την προετοιμασία για εμάς, οπότε μπορούμε να ξεκινήσουμε εγκαθιστώντας το:
sudo pkg_add spiped
Αυτό εγκαθιστά επίσης ένα ωραίο σενάριο έναρξης για εμάς, ώστε να μπορούμε να το ενεργοποιήσουμε:
sudo rcctl enable spiped
Και τέλος ξεκινήστε το:
sudo rcctl start spiped
Το σενάριο init διασφαλίζει ότι το κλειδί έχει δημιουργηθεί για εμάς (το οποίο θα χρειαστούμε σε ένα τοπικό μηχάνημα σε λίγο).
Αυτό που πρέπει να κάνουμε τώρα, είναι να απενεργοποιήσουμε την sshd
ακρόαση σε δημόσια διεύθυνση, να αποκλείσουμε τη θύρα 22 και να επιτρέψουμε τη θύρα 8022 (η οποία χρησιμοποιείται από προεπιλογή στο σενάριο spipped init).
Ανοίξτε το /etc/ssh/sshd_config
αρχείο και αλλάξτε (και αποσχολιάστε) τη ListenAddress
γραμμή για ανάγνωση 127.0.0.1
:
ListenAddress 127.0.0.1
Εάν χρησιμοποιείτε κανόνες PF για αποκλεισμό θυρών, φροντίστε να περάσετε τη θύρα 8022 (και μπορείτε να αφήσετε αποκλεισμένη τη θύρα 22), π.χ.
pass in on egress proto tcp from any to any port 8022
Φροντίστε να φορτώσετε ξανά τους κανόνες για να το κάνετε ενεργό:
sudo pfctl -f /etc/pf.conf
Τώρα το μόνο που χρειαζόμαστε είναι να αντιγράψουμε το δημιουργημένο spiped key ( /etc/spiped/spiped.key
) από τον διακομιστή σε ένα τοπικό μηχάνημα και να προσαρμόσουμε τη διαμόρφωση του SSH μας, κάτι σύμφωνα με τις ακόλουθες γραμμές:
Host HOSTNAME
ProxyCommand spipe -t %h:8022 -k ~/.ssh/spiped.key
Πρέπει να έχετε spipe/spiped
εγκαταστήσει και σε τοπικό μηχάνημα, προφανώς. Εάν έχετε αντιγράψει το κλειδί και έχετε προσαρμόσει τα ονόματα/διαδρομές, τότε θα πρέπει να μπορείτε να συνδεθείτε με αυτήν τη ProxyCommand
γραμμή στο ~/.ssh/config
αρχείο σας .
Αφού επιβεβαιώσετε ότι λειτουργεί, μπορούμε να κάνουμε επανεκκίνηση sshd
σε έναν διακομιστή:
sudo rcctl restart sshd
Και τέλος! Τώρα έχετε εξαλείψει εντελώς ένα μεγάλο διάνυσμα επίθεσης και έχετε μια λιγότερη υπηρεσία ακρόασης σε μια δημόσια διεπαφή. Οι συνδέσεις σας SSH θα πρέπει τώρα να φαίνεται ότι προέρχονται από τον localhost, για παράδειγμα:
username ttyp0 localhost Thu Nov 06 07:58 still logged in
Ένα πλεονέκτημα της χρήσης του Vultr είναι ότι κάθε Vultr VPS προσφέρει έναν ωραίο διαδικτυακό πελάτη τύπου VNC διαθέσιμο, τον οποίο μπορούμε να χρησιμοποιήσουμε σε περίπτωση που κλειδωθούμε κατά λάθος. Πειραματιστείτε μακριά!