Εισαγωγή
Προαπαιτούμενα
Βήμα 1: Εγκατάσταση Knockd
Βήμα 2: κανόνες iptables
Βήμα 3: Διαμόρφωση Knockd
Βήμα 4: Δοκιμή
συμπέρασμα
Εισαγωγή
Εκτός από την αλλαγή της προεπιλεγμένης θύρας για SSH και τη χρήση ενός ζεύγους κλειδιών για έλεγχο ταυτότητας, το port knocking μπορεί να χρησιμοποιηθεί για την περαιτέρω ασφάλεια (ή ακριβέστερα, την απόκρυψη) του διακομιστή SSH σας. Λειτουργεί με την άρνηση των συνδέσεων στη θύρα δικτύου SSH. Αυτό ουσιαστικά αποκρύπτει το γεγονός ότι εκτελείτε έναν διακομιστή SSH έως ότου γίνει μια σειρά από προσπάθειες σύνδεσης σε προκαθορισμένες θύρες. Πολύ ασφαλές και απλό στην εφαρμογή, το port knocking είναι ένας από τους καλύτερους τρόπους προστασίας του διακομιστή σας από κακόβουλες προσπάθειες σύνδεσης SSH.
Προαπαιτούμενα
- Ένας διακομιστής Vultr που εκτελεί το Ubuntu 18.04.
- Πρόσβαση Sudo.
Προτού ακολουθήσετε τα παρακάτω βήματα, εάν δεν έχετε συνδεθεί ως χρήστης root, αποκτήστε ένα προσωρινό κέλυφος root εκτελώντας sudo -iκαι εισάγοντας τον κωδικό πρόσβασής σας. Εναλλακτικά, μπορείτε να ακολουθήσετε sudoτις εντολές που εμφανίζονται σε αυτό το άρθρο.
Βήμα 1: Εγκατάσταση Knockd
Το Knockd είναι το πακέτο που χρησιμοποιείται σε συνδυασμό με το iptables για την υλοποίηση του port knocking στον διακομιστή σας. iptables-persistentΑπαιτείται επίσης το πακέτο ' '.
apt update
apt install -y knockd iptables-persistent
Βήμα 2: κανόνες iptables
Εκτελέστε τις παρακάτω εντολές με τη σειρά:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables-save > /etc/iptables/rules.v4
Αυτές οι εντολές θα κάνουν τα εξής, αντίστοιχα:
- Δώστε εντολή στους iptables να διατηρήσουν ζωντανές τις υπάρχουσες συνδέσεις.
- Δώστε εντολή στους iptables να απορρίψουν οποιαδήποτε σύνδεση στη θύρα tcp/22 (εάν ο δαίμονας SSH σας ακούει σε μια θύρα διαφορετική από 22, θα πρέπει να τροποποιήσετε την παραπάνω εντολή ανάλογα.)
- Αποθηκεύστε αυτούς τους δύο κανόνες ώστε να διατηρηθούν μετά από μια επανεκκίνηση.
Βήμα 3: Διαμόρφωση Knockd
Χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου της επιλογής σας, ανοίξτε το αρχείο /etc/knockd.conf.
Θα δείτε τα εξής:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Θα πρέπει να αλλάξετε τη σειρά των θυρών (επιλέξτε τους αριθμούς θυρών παραπάνω 1024και που δεν χρησιμοποιούνται από άλλες υπηρεσίες) και να τις αποθηκεύσετε με ασφάλεια. Αυτός ο συνδυασμός πρέπει να αντιμετωπίζεται σαν κωδικός πρόσβασης. Εάν το ξεχάσετε, θα χάσετε την πρόσβαση στο SSH. Θα αναφερόμαστε σε αυτή τη νέα ακολουθία ως x,y,z.
η seq-timeoutγραμμή είναι ο αριθμός των δευτερολέπτων που θα περιμένει το Knockd μέχρι ο πελάτης να ολοκληρώσει την ακολουθία του port-knocking. Θα ήταν καλή ιδέα να το αλλάξετε σε κάτι μεγαλύτερο, ειδικά αν το port-knocking θα γίνει χειροκίνητα. Ωστόσο, μια μικρότερη τιμή χρονικού ορίου είναι ασφαλέστερη. 15Συνιστάται να το αλλάξετε σε , καθώς θα χτυπήσουμε χειροκίνητα σε αυτό το σεμινάριο.
Αλλάξτε τη σειρά ανοίγματος στις θύρες που έχετε επιλέξει:
[openSSH]
sequence = x,y,z
Αλλάξτε την τιμή της εντολής ως εξής:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Τώρα αλλάξτε τη σειρά κλεισίματος ανάλογα:
[closeSSH]
sequence = z,y,x
Αποθηκεύστε τις αλλαγές σας και βγείτε και ανοίξτε το αρχείο /etc/default/knockd:
- Αντικαταστήστε
START_KNOCKD=0με START_KNOCKD=1.
- Προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου:
KNOCKD_OPTS="-i ens3"(αντικαταστήστε ens3με το όνομα της διεπαφής του δημόσιου δικτύου σας, εάν διαφέρει.)
- Αποθήκευση και έξοδος.
Τώρα ξεκινήστε το Knockd:
systemctl start knockd
Αν τώρα αποσυνδεθείτε από το διακομιστή σας, θα πρέπει να χτυπήσει στις θύρες x, yκαι zνα συνδεθείτε ξανά.
Βήμα 4: Δοκιμή
Τώρα δεν θα μπορείτε να συνδεθείτε στον διακομιστή SSH σας.
Μπορείτε να δοκιμάσετε το knocking της θύρας με έναν πελάτη telnet.
Οι χρήστες των Windows μπορούν να ξεκινήσουν το telnet από τη γραμμή εντολών. Εάν το telnet δεν είναι εγκατεστημένο, μεταβείτε στην ενότητα "Προγράμματα" του Πίνακα Ελέγχου και, στη συνέχεια, εντοπίστε το "Ενεργοποίηση ή απενεργοποίηση των δυνατοτήτων των Windows". Στον πίνακα δυνατοτήτων, εντοπίστε το "Telnet Client" και ενεργοποιήστε το.
Στο τερματικό/γραμμή εντολών πληκτρολογήστε τα εξής:
telnet youripaddress x
telnet youripaddress y
telnet youripaddress z
Κάντε όλα αυτά σε δεκαπέντε δευτερόλεπτα, καθώς αυτό είναι το όριο που επιβάλλεται στη διαμόρφωση. Τώρα, προσπαθήστε να συνδεθείτε στον διακομιστή σας μέσω SSH. Θα είναι προσβάσιμο.
Για να κλείσετε την πρόσβαση στον διακομιστή SSH, εκτελέστε τις εντολές με αντίστροφη σειρά.
telnet youripaddress z
telnet youripaddress y
telnet youripaddress z
συμπέρασμα
Το καλύτερο μέρος της χρήσης του port knocking είναι ότι εάν έχει ρυθμιστεί παράλληλα με τον έλεγχο ταυτότητας ιδιωτικού κλειδιού, δεν υπάρχει ουσιαστικά καμία πιθανότητα να μπει κάποιος άλλος, εκτός εάν κάποιος γνώριζε τη σειρά χτυπήματος της θύρας και είχε το ιδιωτικό σας κλειδί.