Γιατί ένα χτύπημα θύρας δεν ανοίγει την πόρτα
Ένα χτύπημα είτε δεν φτάνει ποτέ στον διακομιστή, είτε φτάνει με μορφή που ο δαίμονας δεν αποδέχεται, είτε ανοίγει την πόρτα για μια διεύθυνση που δεν χρησιμοποιείτε. Εξετάστε τη λίστα από την αρχή — είναι ταξινομημένη με βάση τη συχνότητα εμφάνισης κάθε αιτίας.
1. Η πόρτα άνοιξε για άλλη διεύθυνση
Το τείχος προστασίας ανοίγει τη θύρα για τη διεύθυνση προέλευσης που είδε ο διακομιστής. Αν χτυπήσατε μέσω IPv6 και κατόπιν το SSH συνδέεται μέσω IPv4 — ή το αντίστροφο — η πόρτα είναι ανοιχτή για μια διεύθυνση που δεν χρησιμοποιείτε. Τα δεδομένα κινητού, το NAT του παρόχου και τα VPN αλλάζουν επίσης τη διεύθυνση.
Συγκρίνετε τη διεύθυνση που εμφανίζει το Secret Knock στην αρχική οθόνη ("Χτυπάτε από …") με τη διεύθυνση στο αρχείο καταγραφής του διακομιστή και επιλέξτε IPv4 ή IPv6 για την πόρτα, αν διαφέρουν.
2. Τα πακέτα δεν φτάνουν στον διακομιστή
Τα δίκτυα ξενοδοχείων, γραφείων και κινητής τηλεφωνίας μερικές φορές αποκλείουν ασυνήθιστες θύρες, ενώ ένα τείχος προστασίας cloud μπροστά από τον διακομιστή απορρίπτει πακέτα πριν τα δει το knockd ή το fwknopd. Παρακολουθήστε την κίνηση στον διακομιστή ενώ χτυπάτε:
# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f
# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'
# fwknopd in the foreground with verbose output
sudo fwknopd -f -v 3. Η ακολουθία φτάνει με λάθος μορφή
- 1Επαναμεταδιδόμενα SYN: όταν ένα χτύπημα TCP δεν λαμβάνει καμία απάντηση, το λειτουργικό σύστημα του πελάτη στέλνει ξανά το ίδιο SYN. Το knockd 0.8 επαναφέρει την ακολουθία σε μια τέτοια επανάληψη. Το Secret Knock στέλνει κάθε χτύπημα TCP ως ένα μόνο SYN και διακόπτει αμέσως την προσπάθεια· άλλοι πελάτες μπορεί να μην το κάνουν.
- 2Χρονισμός: όλα τα βήματα πρέπει να φτάσουν εντός του seq_timeout, με τη σωστή σειρά. Προσθέστε μια σύντομη καθυστέρηση πριν από ένα βήμα, αν ένας ενδιάμεσος δρομολογητής αναδιατάσσει πακέτα.
- 3Πρωτόκολλο: ένα βήμα UDP πρέπει να σταλεί ως UDP και ένα βήμα TCP ως TCP — ελέγξτε κάθε βήμα σε σχέση με το knockd.conf.
- 4Το tcpflags = syn κάνει το knockd να αγνοεί πακέτα TCP χωρίς τη σημαία SYN. Χωρίς αυτό, και τα άλλα πακέτα μιας σύνδεσης στην ίδια θύρα υπολογίζονται ως επιτυχίες και μπορούν να διακόψουν την ακολουθία.
4. fwknop: κλειδιά, ρολόγια και επαναλήψεις
- 1Και τα δύο κλειδιά πρέπει να ταιριάζουν με το access.conf: το κλειδί Rijndael και το κλειδί HMAC, με την ίδια σύνοψη (SHA-256 από προεπιλογή).
- 2Το fwknopd απορρίπτει πακέτα παλαιότερα από το MAX_SPA_PACKET_AGE (120 δευτερόλεπτα από προεπιλογή), επομένως ένα ρολόι συσκευής που αποκλίνει πολύ κάνει κάθε πακέτο να φαίνεται παλιό.
- 3Κάθε πακέτο SPA μπορεί να χρησιμοποιηθεί μία φορά· το fwknopd απορρίπτει σκόπιμα ένα πακέτο που επαναλαμβάνεται.
- 4Αν χτυπάτε μέσω HTTP, κάτι πρέπει να δέχεται συνδέσεις TCP σε αυτήν τη θύρα, διαφορετικά το αίτημα δεν στέλνεται ποτέ.
5. Η πόρτα ανοίγει, αλλά το SSH εξακολουθεί να αποτυγχάνει
- 1Σειρά κανόνων: ο κανόνας που προσθέτει ο δαίμονας πρέπει να προηγείται του κανόνα που απορρίπτει τη θύρα — ένα iptables -A προσθέτει τον κανόνα μετά από ένα υπάρχον DROP και δεν αντιστοιχίζεται ποτέ.
- 2Το χρονικό παράθυρο: το cmd_timeout ή το FW_ACCESS_TIMEOUT έκλεισε την πόρτα πριν συνδεθεί το SSH. Συνδεθείτε εντός του χρονικού παραθύρου· οι ήδη εδραιωμένες συνεδρίες συνεχίζουν να λειτουργούν, αν το τείχος προστασίας σας δέχεται εδραιωμένες συνδέσεις.
- 3Ο έλεγχος θύρας του Secret Knock μετά το χτύπημα σάς ενημερώνει αν η θύρα απάντησε καθόλου, ανεξάρτητα από τον έλεγχο ταυτότητας SSH.
Όλα τα παραδείγματα στο GitHub → Κάθε διαμόρφωση αυτής της σελίδας, έτοιμη για αντιγραφή: github.com/mobilcomm/secretknock-examples (κοινό κτήμα).
Ερωτήσεις
Πώς βλέπω τι έστειλε πραγματικά η εφαρμογή;
Το ιστορικό της πόρτας εμφανίζει κάθε χτύπημα με την ώρα, το αποτέλεσμα και την οικογένεια διευθύνσεων, ενώ ο επεξεργαστής εμφανίζει το ίδιο χτύπημα ως εντολή τερματικού που μπορείτε να εκτελέσετε από έναν υπολογιστή για σύγκριση.
Οδηγοί για τη διαμόρφωσή σας
- Το port knocking με απλά λόγια →
- 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; →