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

Τρεις ευθύνες, ένα σύνολο κανόνων

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

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

Κρατήστε τις σε ξεχωριστές αλυσίδες ή τουλάχιστον σε ξεχωριστά σχόλια, ώστε ο επόμενος να βλέπει ποια γραμμή υπάρχει για ποιο λόγο.

Τι κάνει το ICMPv6 για τον host

Το IPv6 βασίζεται στο ICMPv6 για πολύ περισσότερα από το echo. Η αίτηση και η αναγγελία γείτονα αντικαθιστούν το ARP και απαιτούνται για τοπική παράδοση. Το Packet Too Big μεταφέρει πληροφορία MTU της διαδρομής και η αγνόησή του δίνει μεταφορές που κολλάνε σε μεγάλα πακέτα. Οι αναγγελίες δρομολογητή μεταφέρουν την προεπιλεγμένη διαδρομή και πληροφορία προθέματος όταν η ζεύξη χρησιμοποιεί αυτόματη διαμόρφωση.

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

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

Η αντικατάσταση όλων αυτών με καθολική άδεια ICMPv6 λύνει το πρόβλημα διαθεσιμότητας και εγκαταλείπει το φιλτράρισμα. Η αντικατάστασή τους με καθολική απόρριψη λύνει το πρόβλημα φιλτραρίσματος και εγκαταλείπει τον host.

Δεχτείτε τη σήραγγα, μετά την υπηρεσία

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

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

Διαβάστε το σύνολο κανόνων όπως είναι, όχι όπως το περιγράφει το αρχείο:

sudo nft list ruleset
ip -6 addr show
ip -6 route show default

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

Δοκιμάστε τη ζεύξη, όχι μόνο τη σήραγγα

Μια σήραγγα που δουλεύει μετά την αλλαγή αποδεικνύει λιγότερα απ’ ό,τι φαίνεται, γιατί μια υπάρχουσα εγγραφή γείτονα και μια εγκατεστημένη σύνδεση μπορούν να κρύψουν ένα μήνυμα ελέγχου που η πολιτική τώρα απορρίπτει.

Ελέγξτε τη σύνδεση άμεσα και μετά ελέγξτε ότι η εξαιρούμενη διαδρομή εξακολουθεί να αποτυγχάνει:

ip -6 neigh show
ping -6 -c 3 2001:db8:1::1
sudo nft -c -f /etc/nftables.conf

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

Ανακτήστε έναν host από τον οποίο κλειδωθήκατε έξω

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

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

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

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