Γιατί ένας κανόνας αποκλεισμού πελάτη OpenVPN δεν φτάνει ποτέ στο FORWARD
Η κίνηση μεταξύ πελατών μπορεί να μείνει μέσα στη διεργασία OpenVPN και να μην περάσει ποτέ την αλυσίδα FORWARD του κεντρικού υπολογιστή, οπότε ένας μηδενικός μετρητής δεν αποδεικνύει τίποτα.
Δύο πελάτες στον ίδιο διακομιστή OpenVPN μπορούν να φτάσουν ο ένας τον άλλο ακόμη και αφού προσθέσατε κανόνα DROP για τη δεξαμενή διευθύνσεών τους. Ο κανόνας βρίσκεται στην αλυσίδα FORWARD, η κίνηση ρέει εμφανώς, και ο μετρητής αυτού του κανόνα μένει στο μηδέν. Το φυσικό συμπέρασμα είναι ότι το τείχος προστασίας είναι χαλασμένο. Πιο συχνά το πακέτο δεν μπήκε καθόλου στην αλυσίδα.
Υπάρχουν δύο διαδρομές που μπορεί να ακολουθήσει ένα πακέτο ομότιμου μέσα από έναν διακομιστή OpenVPN, και τις καθορίζει η διαμόρφωση, όχι το τείχος προστασίας. Το να ξέρετε ποια διαδρομή χρησιμοποιείται σας λέει αν ένας κανόνας του κεντρικού υπολογιστή βρίσκεται καν στη σωστή θέση.
Δύο διαδρομές που μπορεί να ακολουθήσει ένα πακέτο ομότιμου
Όταν η επιλογή εσωτερικής προώθησης είναι απενεργοποιημένη, ένα πακέτο από τον πελάτη A φτάνει στη διεπαφή σήραγγας με προορισμό μέσα στη δεδομένη διεύθυνση του πελάτη B. Ο πίνακας δρομολόγησης του διακομιστή το στέλνει πίσω από την ίδια διεπαφή σήραγγας, επειδή ο διακομιστής κατέχει τη διαδρομή προς τη διεύθυνση του B. Αυτή είναι μια ροή προς τα μέσα και προς τα έξω μέσα από τον κεντρικό υπολογιστή, και την αξιολογεί η διαδρομή προώθησης IPv4.
Όταν η επιλογή εσωτερικής προώθησης είναι ενεργοποιημένη, η διεργασία του διακομιστή αντιστοιχίζει το πακέτο σε έναν συνδεδεμένο πελάτη και το γράφει πίσω στον ίδιο τον πελάτη. Το πακέτο διεκπεραιώνεται μέσα στον δαίμονα και δεν επανέρχεται ποτέ στη συσκευή σήραγγας, οπότε η διαδρομή προώθησης του κεντρικού υπολογιστή παρακάμπτεται εντελώς. Το εγχειρίδιο του OpenVPN 2.6 περιγράφει αυτή την επιλογή ως εσωτερική προώθηση από πελάτη σε πελάτη, και γι' αυτό ακριβώς ένας κανόνας τείχους προστασίας του κεντρικού υπολογιστή δεν μπορεί να τη δει.
Υπάρχει μια τρίτη παραλλαγή σε εγκαταστάσεις που μεταφέρουν το κανάλι δεδομένων σε άρθρωμα πυρήνα. Η απόφαση προώθησης και η κρυπτογράφηση φεύγουν από τον χώρο χρήστη, και το αν το netfilter βλέπει τη ροή εξαρτάται από το πώς είναι χτισμένη η διαδρομή μεταφοράς. Μην υποθέτετε ποτέ ότι ένα παλιό σύνολο κανόνων συμπεριφέρεται σε διακομιστή με μεταφορά όπως σε έναν στον χώρο χρήστη. Επιβεβαιώστε τη λειτουργία από τη διαμόρφωση που εκτελείται, όχι από την έκδοση του πακέτου.
Όταν ο μετρητής δεν κινείται ποτέ
Ένας μηδενικός μετρητής σημαίνει ότι το πακέτο δεν ταίριαξε με εκείνον τον κανόνα σε εκείνο το σημείο, και οι λόγοι είναι αρκετοί. Ο πρώτος είναι η παράκαμψη παραπάνω: η κίνηση δεν έφτασε ποτέ στην αλυσίδα. Ο δεύτερος είναι αναντιστοιχία στη διεπαφή, την κατεύθυνση, την πηγή ή τον προορισμό, κάτι συνηθισμένο όταν η δεξαμενή επαναριθμήθηκε και ο κανόνας εξακολουθεί να αναφέρει το παλιό πρόθεμα.
Ο τρίτος είναι η θέση. Ένας κανόνας νωρίτερα στην αλυσίδα μπορεί να δεχτεί τη ροή πριν αξιολογηθεί το DROP σας, και ένας κανόνας αργότερα μπορεί να είναι αυτός που αποφασίζει πραγματικά το αποτέλεσμα. Διαβάστε την αλυσίδα με σειρά και με ορατούς μετρητές, και μετά ελέγξτε ποιου κανόνα το πλήθος αυξάνεται όταν επαναλαμβάνετε τη δοκιμή.
Εκτελέστε μία ελεγχόμενη ανταλλαγή ανάμεσα σε δύο πελάτες των οποίων τις πραγματικές διευθύνσεις έχετε επιβεβαιώσει από την κατάσταση του ίδιου του διακομιστή, όχι από μια μίσθωση που θυμάστε. Αν ο σχετικός μετρητής εξακολουθεί να μην κινείται, υποψιαστείτε τη διαδρομή πριν ξαναγράψετε την αντιστοίχιση. Αν κινείται αλλά η σύνδεση εξακολουθεί να πετυχαίνει, η απόρριψη υπερκαλύπτεται αργότερα και το πρόβλημα είναι η σειρά. Αυτή η απάντηση καθορίζει αν η επισκευή είναι αλλαγή κανόνα ή αλλαγή τοπολογίας, οπότε αποκτήστε την πριν επεξεργαστείτε οτιδήποτε.
Επιλογή ορίου που μπορεί να φιλτράρει
Αν η πολιτική πρέπει να ζει στο τείχος προστασίας του κεντρικού υπολογιστή, βάλτε την κίνηση εκεί όπου το τείχος προστασίας μπορεί να τη δει. Η απενεργοποίηση της εσωτερικής προώθησης είναι ο υποστηριζόμενος τρόπος να περάσει η κίνηση των ομότιμων από τη διεπαφή σήραγγας και τη διαδρομή προώθησης, με κόστος να περνά κάθε πακέτο ομότιμου από τη στοίβα του κεντρικού υπολογιστή.
Έπειτα αντιστοιχίστε τη ροή με ακρίβεια. Η κίνηση φτάνει στη διεπαφή σήραγγας και φεύγει από τη διεπαφή σήραγγας, και στις δύο κατευθύνσεις, οπότε κανόνες που εξετάζουν μόνο τη φυσική διεπαφή δεν θα ταιριάξουν. Οι κανόνες με βάση τη διεύθυνση χρειάζονται την τρέχουσα δεξαμενή και πρέπει να λαμβάνουν υπόψη την κατεύθυνση επιστροφής όσο και την εμπρόσθια.
Πολλές εγκαταστάσεις εξυπηρετούνται καλύτερα με φιλτράρισμα σε επίπεδο πελάτη ή ομάδας, όπου η ταυτότητα είναι γνωστή και η πολιτική ακολουθεί τον χρήστη αντί για μια διεύθυνση που αλλάζει στην επανασύνδεση. Αυτός είναι διαφορετικός μηχανισμός από μια αλυσίδα του κεντρικού υπολογιστή, και τα δύο δεν πρέπει να αναμιγνύονται χωρίς σαφή λόγο.
Μη μεταφέρετε αναλλοίωτο το σύνολο κανόνων μιας παλιάς τοπολογίας μέσα από μια μετεγκατάσταση. Οι δεξαμενές διευθύνσεων, τα ονόματα διεπαφών και οι λειτουργίες προώθησης επηρεάζουν όλα το αν ένας κανόνας ταιριάζει, και ένας αντιγραμμένος κανόνας που κάποτε δούλευε είναι το πιο παραπλανητικό είδος απόδειξης. Ξεκινήστε από τη ροή που θέλετε να επιτρέψετε και γράψτε τον κανόνα που της ταιριάζει.
Δοκιμή απομόνωσης αντί για εμπιστοσύνη σε έναν κανόνα
Δοκιμάστε την απαγορευμένη περίπτωση και την επιτρεπόμενη περίπτωση στην ίδια εκτέλεση. Ξεκινήστε μια νέα σύνδεση από τον έναν πελάτη στον άλλο και επιβεβαιώστε ότι αποτυγχάνει, και μετά επιβεβαιώστε ότι μια σύνδεση που θα έπρεπε να επιτρέπεται εξακολουθεί να λειτουργεί. Αν δοκιμάζεται μόνο η πρώτη, ένα τείχος προστασίας που μπλοκάρει τα πάντα μοιάζει με επιτυχία.
Επαναλάβετε μετά από επαναφόρτωση της διαμόρφωσης του διακομιστή και αφού επανασυνδεθεί ένας πελάτης, γιατί η εσωτερική προώθηση και οι εκχωρήσεις δεξαμενών είναι κατάσταση χρόνου εκτέλεσης. Ελέγξτε τους μετρητές και στις δύο κατευθύνσεις, αφού ένας κανόνας που ταιριάζει σε μια κατεύθυνση και όχι στην απάντηση παράγει μερική απομόνωση που είναι δύσκολο να προσέξεις σε μια γρήγορη δοκιμή.
Η απομόνωση είναι το παρατηρούμενο αποτέλεσμα στο όριο που μεταφέρει πραγματικά τη ροή. Ένας κανόνας DROP κάπου στον κεντρικό υπολογιστή δεν είναι απόδειξη· μια αποτυχημένη σύνδεση μαζί με έναν μετρητή που κινήθηκε στον κανόνα που την προκάλεσε είναι.