Γιατί ένας κανόνας θύρας προέλευσης σπάει μία από τις διαδρομές SSH σας
Ένα ταίριασμα «sport 22» δεν λέει σε ποια είσοδο SSH ανήκει μια απάντηση. Περιορίστε τον κανόνα πολιτικής στη ροή διαχείρισης αντί για έναν πίνακα μόνο για WAN.
Δύο είσοδοι διαχείρισης σε έναν υπολογιστή, μία θύρα υπηρεσίας και ένας κανόνας πολιτικής που προοριζόταν να βοηθήσει και τις δύο. Ο κανόνας ταιριάζει με τη θύρα προέλευσης 22, στέλνει την αναζήτηση σε έναν πίνακα που γνωρίζει μόνο την προεπιλογή WAN, και η είσοδος VPN σταματά να απαντά σε νέες συνδέσεις ενώ η άμεση είσοδος συνεχίζει να λειτουργεί. Τίποτα από αυτά δεν είναι μυστηριώδες μόλις διαβαστεί σωστά ο επιλογέας. Μια θύρα προέλευσης προσδιορίζει μια υπηρεσία, όχι τη διαδρομή από την οποία έφτασε μια σύνδεση.
Δύο είσοδοι, μία θύρα υπηρεσίας
Ο υπολογιστής έχει μια διεύθυνση στην πλευρά του LAN και μια διεύθυνση VPN, και το sshd ακούει και στις δύο. Επομένως μια άμεση συνεδρία και μια συνεδρία σήραγγας μοιράζονται τη θύρα υπηρεσίας και διαφέρουν μόνο ως προς το ποια τοπική διεύθυνση δέχεται τη σύνδεση.
Αυτή η διαφορά αρκεί για να επιλεγεί μια διαδρομή απάντησης, και είναι ακριβώς η διαφορά που απορρίπτει ένας κανόνας βασισμένος στη θύρα. Και οι δύο συνεδρίες παράγουν απαντήσεις των οποίων η θύρα προέλευσης είναι 22, οπότε ένας κανόνας που ταιριάζει με αυτή τη θύρα δεν μπορεί να τις ξεχωρίσει. Στέλνει και τις δύο αναζητήσεις στον ίδιο πίνακα, και η μία από αυτές λαμβάνει απάντηση που δεν ταιριάζει. Η διόρθωση είναι να ταιριάξουμε το χαρακτηριστικό που πραγματικά διαφέρει.
Το να δώσουμε σε κάθε είσοδο τη δική της θύρα θα λειτουργούσε επίσης, και το να το θεωρήσουμε απαίτηση είναι επιλογή σχεδίασης και όχι ιδιότητα του SSH.
Διαβάστε τον κανόνα και μετά τον πίνακα
Ένας κανόνας πολιτικής είναι ένας διατεταγμένος επιλογέας, και ο πρώτος που επιστρέφει μια χρησιμοποιήσιμη απάντηση τερματίζει την αναζήτηση. Διαβάστε τη λίστα με τη σειρά και σημειώστε ποιος κανόνας μπορεί να κερδίσει.
Στη συνέχεια διαβάστε τον πίνακα στον οποίο δείχνει αυτός ο κανόνας, γιατί ένας κανόνας που επιλύεται με επιτυχία δεν είναι κανόνας που επιλύεται χρήσιμα. Ένας πίνακας που περιέχει μόνο μια προεπιλεγμένη διαδρομή στέλνει την απάντηση από το VPN έξω από τη διεπαφή WAN. Μια πιο συγκεκριμένη διαδρομή σε μεταγενέστερο πίνακα δεν εξετάζεται ποτέ, γι' αυτό η προσθήκη δεύτερου πίνακα τόσο συχνά δεν αλλάζει τίποτα. Ο επιλεγμένος πίνακας είναι αυτό που πρέπει να ελεγχθεί.
ip -4 rule show
ip route show table 100
ip route show table main
Αυτές οι δύο έξοδοι μαζί εξηγούν το αποτέλεσμα· καθεμία μόνη της προσκαλεί λάθος συμπέρασμα.
Περιορίστε τον κανόνα στη ροή που εννοείτε
Το χαρακτηριστικό που χωρίζει τις δύο εισόδους είναι η τοπική διεύθυνση προέλευσης. Ένας κανόνας που ταιριάζει με αυτή τη διεύθυνση στέλνει μόνο τις συνεδρίες σήραγγας στον ιδιωτικό πίνακα και αφήνει τις άμεσες συνεδρίες στον κύριο πίνακα.
Αυτός ο κανόνας πρέπει να συνδυαστεί με έναν πίνακα που περιέχει την ιδιωτική διαδρομή και τη διαδρομή επιστροφής για αυτό το υποδίκτυο. Περιορίστε και τα δύο στην κίνηση διαχείρισης αντί για κάθε υπηρεσία στον υπολογιστή. Ένας κανόνας που πιάνει όλη την κίνηση από αυτή τη διεύθυνση θα ανακατευθύνει και οτιδήποτε άλλο στέλνει ο υπολογιστής από εκεί. Το στενό κερδίζει το έξυπνο εδώ, γιατί ο επόμενος άνθρωπος πρέπει να το διαβάσει.
sudo ip rule add from 10.90.0.1 lookup 100 priority 100
sudo ip route add 10.90.0.0/24 dev wg0 table 100
ip route get 10.90.5.20 from 10.90.0.1
Αν και οι δύο είσοδοι μεταφραστούν σε μία τοπική διεύθυνση, αυτή η διάκριση εξαφανίζεται και η σχεδίαση χρειάζεται κατάσταση που γνωρίζει τη σύνδεση αντί γι' αυτό.
Κρατήστε ακροατή, άδεια και επιλογή απάντησης ξεχωριστά
Τρία ξεχωριστά πράγματα πρέπει να ισχύουν πριν λειτουργήσει μια συνεδρία: η διεύθυνση υπάρχει, η υπηρεσία ακούει σε αυτήν και η απάντηση βρίσκει τον δρόμο της επιστροφής. Μια αλλαγή διαδρομής διορθώνει μόνο το τρίτο.
Η διαμόρφωση του ακροατή είναι δικό της αρχείο και δική της επαναφόρτωση, και πολλαπλές διευθύνσεις ακρόασης είναι φυσιολογικές. Η επαλήθευση ταυτότητας είναι και πάλι τρίτη απόφαση, και μια εξαίρεση δρομολόγησης δεν δίνει πρόσβαση σε κανέναν. Κρατήστε την επαλήθευση κλειδιού υπολογιστή, την επαλήθευση λογαριασμού και τους περιορισμούς προέλευσης και στις δύο εισόδους, και αντισταθείτε στην παρόρμηση να αποδυναμώσετε τα άλλα μέτρα ελέγχου της σήραγγας ώστε να λειτουργήσει μία διαδρομή διαχείρισης.
Κρατήστε ένα κανάλι ανάκτησης που δεν εξαρτάται από τη διαδρομή που αλλάζετε, γιατί ένα λάθος εδώ κλειδώνει έξω την ίδια τη διόρθωση.
Αποδείξτε το με μια νέα συνεδρία, όχι με μια παλιά
Ένα εγκατεστημένο τερματικό δεν αποδεικνύει τίποτα, αφού έγινε δεκτό πριν από την αλλαγή. Ανοίξτε μια νέα συνεδρία μέσα από κάθε προβλεπόμενη είσοδο.
ss -ltnp | grep ':22'
sudo sshd -T | grep -i listenaddress
ssh -v [email protected] true
sudo journalctl -u ssh -n 30
Στη συνέχεια επαναλάβετε την επανασύνδεση VPN και δοκιμάστε ξανά, γιατί μια διαδρομή που επιβιώνει από μια επανασύνδεση δεν είναι το ίδιο με μια που προστέθηκε σε πίνακα τον οποίο η επανασύνδεση καθαρίζει. Παρατηρήστε τις απορριφθείσες πηγές ξεχωριστά από τις επιτρεπόμενες, ώστε μια αποκλεισμένη προσπάθεια να μην κρύβεται πίσω από μια συνεδρία που λειτουργεί. Αποθηκεύστε την τοπική διεύθυνση, τον κανόνα και τον πίνακα δίπλα στο αποτέλεσμα. Αν αντ' αυτού χωρίσετε τις θύρες, καταγράψτε το ως επιχειρησιακή απόφαση και όχι ως όριο του SSH.