Το port knocking με απλά λόγια
Το port knocking διατηρεί μια υπηρεσία αόρατη έως ότου κάποιος αποδείξει ότι γνωρίζει ένα μυστικό. Αυτός ο οδηγός καλύπτει τον τρόπο λειτουργίας του, τις δύο συνήθεις υλοποιήσεις — knockd και fwknop — και τους λόγους που τα χτυπήματα αποτυγχάνουν στην πράξη.
Πώς λειτουργεί το port knocking
Το τείχος προστασίας απορρίπτει κάθε σύνδεση προς την προστατευμένη θύρα, επομένως ένας σαρωτής δεν βλέπει τίποτα. Ένας μικρός δαίμονας παρακολουθεί την κίνηση που φτάνει στο τείχος προστασίας. Όταν μία διεύθυνση προέλευσης παράγει το αναμενόμενο μοτίβο, ο δαίμονας προσθέτει έναν κανόνα τείχους προστασίας που επιτρέπει αυτήν τη διεύθυνση, συνήθως για σύντομο χρονικό διάστημα.
Το μοτίβο είναι το χτύπημα. Με το knockd είναι μια ακολουθία προσπαθειών σύνδεσης σε συγκεκριμένες θύρες, με συγκεκριμένη σειρά και εντός χρονικού ορίου. Με το fwknop είναι ένα μόνο κρυπτογραφημένο πακέτο.
knockd: ακολουθίες χτυπημάτων
Το knockd ακούει σε μια διεπαφή και αντιστοιχίζει προσπάθειες σύνδεσης με τις ακολουθίες στο /etc/knockd.conf. Μια ακολουθία μπορεί να συνδυάζει θύρες TCP και UDP. Όταν αντιστοιχιστεί, το knockd εκτελεί μια εντολή — συνήθως έναν κανόνα iptables ή nftables για τη διεύθυνση που χτυπά (%IP%).
Αυτό το παράδειγμα ανοίγει το SSH για τη διεύθυνση που χτυπά και το κλείνει ξανά μετά από 10 δευτερόλεπτα. Οι υπάρχουσες συνεδρίες SSH συνεχίζουν να λειτουργούν αν το τείχος προστασίας σας δέχεται εγκατεστημένες συνδέσεις.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Επιλέξτε δικές σας θύρες· μην επαναχρησιμοποιείτε ποτέ θύρες από δημοσιευμένα παραδείγματα. Το tcpflags = syn κάνει το knockd να μετρά μόνο πακέτα με τη σημαία SYN — το πρώτο πακέτο μιας προσπάθειας σύνδεσης.
fwknop: Single Packet Authorization
Το fwknop αντικαθιστά την ακολουθία με ένα πακέτο UDP που είναι κρυπτογραφημένο (AES) και επαληθευμένο (HMAC). Ο διακομιστής, το fwknopd, το καταγράφει παθητικά, το επαληθεύει, ελέγχει ότι δεν είναι επανάληψη και ανοίγει τη ζητούμενη θύρα για τη διεύθυνση που περιέχεται στο πακέτο.
Δημιουργήστε κλειδιά με fwknop --key-gen και τοποθετήστε τα στο access.conf του διακομιστή. Το Secret Knock εισάγει την πλευρά του προγράμματος-πελάτη από το .fwknoprc σας.
SOURCE ANY
OPEN_PORTS tcp/22
KEY_BASE64 <output of fwknop --key-gen>
HMAC_KEY_BASE64 <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT 30 Επειδή η επιτρεπόμενη διεύθυνση μεταφέρεται μέσα στο κρυπτογραφημένο πακέτο, το SPA μπορεί να ανοίξει μια θύρα για διεύθυνση διαφορετική από εκείνη που στέλνει το πακέτο — χρήσιμο όταν χτυπάτε από τηλέφωνο με δεδομένα κινητής για φορητό υπολογιστή που βρίσκεται αλλού.
Γιατί αποτυγχάνουν τα χτυπήματα
- IPv4 ή IPv6: το χτύπημα στάλθηκε μέσω μιας οικογένειας διευθύνσεων και το SSH συνδέεται μέσω της άλλης. Το τείχος προστασίας άνοιξε την πόρτα για διεύθυνση που δεν χρησιμοποιείτε.
- Διαφορετική δημόσια διεύθυνση: σε δεδομένα κινητής, πίσω από NAT παρόχου ή VPN, ο διακομιστής βλέπει άλλη IP από όση περιμένετε. Ελέγξτε τη διεύθυνση από όπου χτυπάτε.
- Επαναμεταδιδόμενα SYN: αν ένα χτύπημα TCP δεν απαντηθεί, το λειτουργικό σύστημα του προγράμματος-πελάτη στέλνει ξανά το ίδιο SYN. Στις δοκιμές μας, το knockd 0.8 επανεκκινούσε την ακολουθία σε τέτοιο επαναλαμβανόμενο SYN, επομένως ο πελάτης πρέπει να στέλνει κάθε χτύπημα μία φορά και να διακόπτει γρήγορα την προσπάθεια.
- Χρονισμός: χτυπήματα που φτάνουν εκτός του seq_timeout ή με λανθασμένη σειρά, ξεκινούν την ακολουθία από την αρχή.
- Ενδιάμεσες συσκευές: ορισμένα δίκτυα αποκλείουν ή τροποποιούν κίνηση προς ασυνήθιστες θύρες, επομένως ένα χτύπημα που λειτουργεί στο σπίτι μπορεί να αποτύχει σε δίκτυο ξενοδοχείου ή γραφείου.
Είναι ασφαλές;
Μια ακολουθία knockd στέλνεται χωρίς κρυπτογράφηση· όποιος μπορεί να παρακολουθεί την κίνησή σας μπορεί να την επαναλάβει. Χρησιμοποιήστε τη για να κρύβετε μια υπηρεσία από σαρωτές, μπροστά από κλειδιά SSH — όχι αντί γι’ αυτά. Το fwknop SPA καλύπτει αυτό το κενό με κρυπτογράφηση, HMAC και προστασία από επανάληψη και είναι η καλύτερη επιλογή όταν η κίνησή σας μπορεί να παρακολουθείται.
Χτυπήματα από iPhone, Mac και Apple Watch
Το Secret Knock στέλνει ακολουθίες knockd και πακέτα fwknop SPA από iPhone, iPad και Mac, ελέγχει ότι η θύρα αποκρίνεται και ανοίγει την εφαρμογή SSH σας. Το Apple Watch χτυπά μέσω του ζευγοποιημένου iPhone, επειδή το watchOS δεν επιτρέπει στις εφαρμογές να στέλνουν ακατέργαστα πακέτα TCP ή UDP· μακριά από το iPhone, μπορεί να στείλει SPA μέσω HTTP σε διακομιστές που το επιτρέπουν.
Οδηγοί για τη διαμόρφωσή σας
- knockd σε iPhone, iPad και Mac →
- fwknop SPA σε iPhone, Mac και Apple Watch →
- Χτύπημα θυρών MikroTik →
- Χτύπημα θυρών DrayTek Vigor →
- Απόκρυψη του SSH πίσω από χτύπημα θυρών →
- Port knocking στο Apple Watch →
- Γιατί ένα χτύπημα θύρας δεν ανοίγει →
- Παραδείγματα knockd.conf →
- ρύθμιση διακομιστή fwknop →
- Port knocking, VPN ή fail2ban; →
Κρατήστε την πόρτα κλειστή. Πάρτε μαζί το χτύπημα.
Το Secret Knock έρχεται σύντομα στο App Store για iPhone, iPad, Mac και Apple Watch.
Secret Knock →