Ένας κόμβος που εκτελεί WireGuard μπορεί να κρατήσει τις ομάδες ομοτίμων χωριστά χωρίς ξεχωριστή διεπαφή ή πίνακα δρομολόγησης για κάθε ομάδα. Δύο μηχανισμοί κάνουν τη δουλειά, και η σύγχυσή τους είναι ο συνήθης λόγος που μια πολιτική φαίνεται σωστή και δεν κάνει τίποτα. Ένα επίπεδο αποφασίζει ποιος μπορεί να διεκδικήσει μια διεύθυνση πηγής. Το άλλο αποφασίζει πού επιτρέπεται να πάει αυτό το πακέτο.

Δύο έργα, κρατημένα χωριστά

Το επίπεδο σήραγγας απαντά σε ένα στενό ερώτημα: εξουσιοδότησε το κλειδί αυτού του ομοτίμου αυτή την εσωτερική διεύθυνση πηγής. Το επίπεδο προώθησης απαντά σε ένα ευρύτερο: επιτρέπεται αυτό το πακέτο να βγει προς εκείνον τον προορισμό. Κανένα δεν απαντά στο ερώτημα του άλλου, και κανένα από μόνο του δεν είναι πλήρης πολιτική πρόσβασης.

Αυτός ο διαχωρισμός είναι ο λόγος που ένας ομότιμος μπορεί να είναι πιστοποιημένος, σωστά διευθυνσιοδοτημένος και παρ' όλα αυτά να μην μπορεί να φτάσει έναν κεντρικό υπολογιστή που δεν θα έπρεπε να φτάνει. Εξηγεί και το αντίστροφο: ένας κανόνας τείχους προστασίας που επιτρέπει τα πάντα δεν αποδεικνύει τίποτα για το ποιος δικαιούται να διεκδικήσει ποια διεύθυνση.

Σχεδιάστε τα δύο επίπεδα μαζί και μετά δοκιμάστε και τα δύο. Μια διαμόρφωση σωστή στο ένα επίπεδο και αδοκίμαστη στο άλλο αποτυγχάνει ανοιχτά ή κλειστά ανάλογα με την προεπιλογή.

Δώστε σε κάθε ομότιμο μόνο τη δική του διεύθυνση

Οι ομότιμοι με πολλούς κεντρικούς υπολογιστές σάς δελεάζουν να παραχωρήσετε ολόκληρο το εύρος της ομάδας στην πλευρά του διακομιστή. Αυτή η άδεια είναι διεκδίκηση διεύθυνσης πηγής, οπότε ένας παραβιασμένος ή λανθασμένα ρυθμισμένος πελάτης μπορεί να παρουσιάσει οποιαδήποτε διεύθυνση στο εύρος και η σήραγγα θα την δεχτεί. Εκχωρήστε /32 ανά ομότιμο για τη δική του εσωτερική διεύθυνση. Ορίστε εύρη ομάδων μόνο στους πελάτες, όπου περιγράφουν ποιους προορισμούς επιτρέπεται να φτάνει αυτός ο πελάτης και όχι ποιες πηγές επιτρέπεται να χρησιμοποιεί.

Το τείχος προστασίας αντιστοιχίζει τότε μια πηγή που μπορεί να εμπιστευτεί. Ένας κανόνας γραμμένος για το εύρος της ομάδας παραμένει χρήσιμη ομαδοποίηση, και αποκτά νόημα μόνο όταν κανένας μεμονωμένος ομότιμος δεν μπορεί να διεκδικήσει διεύθυνση που ανήκει σε άλλο μέλος.

Γράψτε την πολιτική προώθησης που χωρίζει τις ομάδες

Η ενδιαφέρουσα κίνηση εδώ μπαίνει και βγαίνει από την ίδια διεπαφή σήραγγας, άρα διασχίζει τη διαδρομή προώθησης και όχι τη διαδρομή εισόδου του κεντρικού υπολογιστή. Οι κανόνες ανήκουν στην υπάρχουσα αλυσίδα προώθησης όποιου διαχειριστή τείχους προστασίας κατέχει τον κεντρικό υπολογιστή, και είναι θραύσματα και όχι πλήρες σύνολο κανόνων.

iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept
iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept
iifname "wg0" oifname "wg0" drop

Οι δύο πρώτοι κανόνες επιτρέπουν κίνηση εντός κάθε ομάδας. Ο τελευταίος αποκλείει όλα τα άλλα που διασχίζουν αυτή τη διεπαφή, και αυτό παράγει την απομόνωση μεταξύ των ομάδων. Προσθέστε ρητούς κανόνες για την άλλη οικογένεια διευθύνσεων αν τους χρειάζεστε, γιατί ένα drop γραμμένο για IPv4 δεν εξουσιοδοτεί ούτε περιγράφει τη συμπεριφορά του IPv6.

Η σειρά αποφασίζει αν εφαρμόζεται η πολιτική

Η σειρά κανόνων μετράει περισσότερο από το ίδιο το θραύσμα. Ένας γενικός κανόνας που δέχεται εγκατεστημένες συνδέσεις, τοποθετημένος πριν από αυτές τις καταχωρίσεις, αφήνει μια παλιά ροή μεταξύ ομάδων να συνεχιστεί, οπότε η απομόνωση ισχύει μόνο για νέες συνδέσεις. Αποφασίστε ποιο από τα δύο αποτελέσματα θέλετε πριν κάνετε επαναφόρτωση.

Μια απόφαση αποδοχής επίσης δεν είναι πάντα τελική μεταξύ αλυσίδων στο ίδιο hook. Αν μια άλλη βασική αλυσίδα εκτελεστεί αργότερα, η ενεργή πολιτική είναι ο συνδυασμός, οπότε επιθεωρήστε τους μετρητές και όχι το αρχείο που επεξεργαστήκατε. Οι μετρητές είναι η φθηνότερη διαθέσιμη απόδειξη. Ένας κανόνας χωρίς μέτρηση πακέτων δεν ταιριάζει, και ένας κανόνας που ταιριάζει ενώ μια μεταγενέστερη αλυσίδα δέχεται σάς λέει ότι το drop είναι σε λάθος θέση.

Δοκιμάστε τον πίνακα, όχι το πλήθος αρχείων

Χτίστε έναν μικρό πίνακα αναμενόμενων αποτελεσμάτων και ελέγξτε κάθε κελί. Η ομάδα A προς την ομάδα A πρέπει να δουλεύει, η ομάδα B προς την ομάδα B πρέπει να δουλεύει, και η A προς B δεν πρέπει, και προς τις δύο κατευθύνσεις και για τις δύο οικογένειες διευθύνσεων αν τις υποστηρίζετε.

nft list ruleset
wg show wg0 allowed-ips
ping -c 2 10.66.10.5
conntrack -L -s 10.66.20.7 2>/dev/null | head

Τα δύο πρώτα δείχνουν τι έχει ρυθμιστεί. Το ping από μέλος λάθος ομάδας δείχνει τι συμβαίνει στην πραγματικότητα. Η λίστα conntrack δείχνει αν μια παλαιότερη ροή γίνεται ακόμα δεκτή, και έτσι μια αλλαγή απομόνωσης αποτυγχάνει ήσυχα να τεθεί σε ισχύ.

Οι υπηρεσίες κεντρικού υπολογιστή στον κόμβο και η πρόσβαση σε ένα LAN πίσω από αυτόν είναι ξεχωριστές διαδρομές με ξεχωριστή πολιτική. Καταγράψτε ποιες από αυτές καλύπτει ο πίνακας, γιατί ένα τεστ που ελέγχει μόνο κίνηση μεταξύ ομοτίμων δεν λέει τίποτα για καμία από τις δύο.

Σχετικά άρθρα