Ο διακόπτης ασφαλείας μπλοκάρει μόνο IPv4: γιατί το IPv6 φεύγει ακόμα
Ένα σύνολο κανόνων τείχους προστασίας για το IPv4 δεν λέει τίποτα για το IPv6. Σε συσκευή διπλής στοίβας η σήραγγα μπορεί να πέσει ενώ μια εφαρμογή κρατά μια λειτουργική διαδρομή γύρω της.
Η σήραγγα πέφτει, ο διακόπτης ασφαλείας αναφέρει ότι ενεργοποιήθηκε και μια λήψη συνεχίζεται. Τίποτα δεν είναι χαλασμένο στους κανόνες του IPv4. Η εφαρμογή απλώς μετακινήθηκε σε μια διαδρομή για την οποία αυτοί οι κανόνες δεν γράφτηκαν ποτέ.
Οι συσκευές διπλής στοίβας έχουν δύο ανεξάρτητες εξόδους. Ο αποκλεισμός της μίας είναι μισός αποκλεισμός.
Δύο σύνολα κανόνων, δύο προεπιλογές
Στο Linux, τα iptables και ip6tables είναι ξεχωριστοί πίνακες με ξεχωριστές πολιτικές. Η ρύθμιση των αλυσίδων INPUT και OUTPUT του πίνακα IPv4 σε DROP δεν αλλάζει τίποτα στον πίνακα IPv6, όπου η προεπιλογή είναι συνήθως ACCEPT. Ο ίδιος διαχωρισμός υπάρχει στο nftables, όπου μπορείτε να εξετάσετε μια οικογένεια και να βρείτε ότι μόνο μία από αυτές φέρει τους κανόνες σας. Αυτή η ασυμμετρία είναι φυσιολογική, και είναι ολόκληρο το πρόβλημα.
Γι’ αυτό ένας διακόπτης ασφαλείας μπορεί να φαίνεται διεξοδικός και να συμπεριφέρεται μερικώς. Το σενάριο που έγραψε τους κανόνες του IPv4 εκτελέστηκε, οι μετρητές αυξάνονται, η γραμμή καταγραφής εμφανίζεται, και ένα πακέτο IPv6 φεύγει από τη φυσική διεπαφή εντελώς ανέγγιχτο.
Διαβάστε τι εγκαθιστά πραγματικά ο πελάτης σας και όχι τι υπόσχεται η σελίδα μάρκετινγκ. Μερικοί πελάτες δρομολογούν το IPv6 στη σήραγγα, μερικοί το μπλοκάρουν σκόπιμα, και μερικοί το αφήνουν ήσυχο ενώ ένα κλείδωμα σε επίπεδο πλατφόρμας επιβάλλει διαφορετικό κανόνα. Η τεκμηρίωση του κατασκευαστή είναι η μόνη πηγή που αξίζει εμπιστοσύνη εδώ.
Τι σας λέει η διαμόρφωση της διεπαφής
Η σελίδα εγχειριδίου του wg-quick περιλαμβάνει κανόνες IPv6 στη διαμόρφωση δείγματος, και ο λόγος είναι ακριβώς αυτό το κενό. Το παράδειγμα δεν είναι διακόσμηση. Υπάρχει επειδή μόνο οι κανόνες του IPv4 θα άφηναν τη δεύτερη οικογένεια ανοιχτή.
Η αντιγραφή μισού παραδείγματος παράγει μισή πολιτική. Αυτή είναι η πιο συνηθισμένη προέλευση αυτής της διαρροής. Μια ανάρτηση σε ιστολόγιο περιέκοψε το παράδειγμα για λόγους έκτασης. Στη συνέχεια η περικομμένη έκδοση έγινε το πρότυπο που όλοι επαναχρησιμοποίησαν.
# what is actually installed, per family?
sudo iptables -S OUTPUT | head -20
sudo ip6tables -S OUTPUT | head -20
# nftables: inspect each family separately
sudo nft list ruleset inet | head -40
# does this host even have a usable IPv6 path?
ip -6 route show default
Αν η δεύτερη εντολή τυπώνει μια επιτρεπτική πολιτική ενώ η πρώτη τυπώνει DROP, βρήκατε την απάντηση χωρίς να αγγίξετε τον πελάτη. Αυτή η ασυμμετρία είναι το σφάλμα.
Γιατί μία αναζήτηση δεν είναι όλη η ιστορία
Ένα όνομα μπορεί να επιστρέψει και εγγραφή A και εγγραφή AAAA, και οι εφαρμογές δεν επιλέγουν όλες με τον ίδιο τρόπο. Ένα πρόγραμμα περιήγησης μπορεί να προτιμήσει το IPv6 όταν το δίκτυο το προσφέρει και να υποχωρήσει σε αποτυχία, ενώ ένας συγχρονισμός υποβάθρου ή ένα πρόγραμμα ενημέρωσης χρησιμοποιεί τον δικό του επιλυτή και τη δική του προτίμηση. Επομένως μια επιτυχημένη δοκιμή πάνω από IPv4 αποδεικνύει μία διαδρομή, όχι την πολιτική.
Οι μεταβάσεις δικτύου αλλάζουν επίσης την απάντηση. Η σύνδεση σε άλλο δίκτυο Wi-Fi, η επαναφορά από αναστολή ή η μετάβαση σε κινητό δίκτυο μπορεί να δώσει στη συσκευή ένα νέο πρόθεμα IPv6, και η πολιτική που φαινόταν επαρκής στο LAN του γραφείου μπορεί να μην το καλύπτει.
Δοκιμάστε την κατάσταση όπου η σήραγγα είναι κάτω
Η δοκιμή ενώ είστε συνδεδεμένοι σας λέει ότι η σήραγγα λειτουργεί. Η ενδιαφέρουσα δοκιμή είναι η κατάσταση μη διαθεσιμότητας, γιατί τότε υποτίθεται ότι κρατά ο διακόπτης ασφαλείας. Σταματήστε τη σήραγγα σκόπιμα και μετά δοκιμάστε τους προορισμούς που έχουν σημασία από την εφαρμογή που προστατεύετε.
# with the tunnel stopped, does anything still leave?
ip -6 route get 2606:4700:4700::1111
curl -6 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv6.example.net/
curl -4 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv4.example.net/
Και οι δύο οικογένειες πρέπει να αποτυγχάνουν κλειστά. Αν το αίτημα IPv4 λήξει και το αίτημα IPv6 επιστρέψει κωδικό κατάστασης, η πολιτική είναι ελλιπής, και καμία ποσότητα επαναδοκιμής της σήραγγας δεν θα το αλλάξει.
Κρατήστε τις τεκμηριωμένες εξαιρέσεις και σε αυτή τη δοκιμή. Η ανακάλυψη τοπικού δικτύου, μια ανανέωση DHCP ή η διαδρομή εκκίνησης προς το τελικό σημείο VPN μπορεί να χρειάζεται να παραμένουν προσβάσιμα, και αυτές οι εξαιρέσεις θα πρέπει να ονομάζονται στην πολιτική αντί να ανακαλύπτονται κατά τη διάρκεια μιας διακοπής. Μια δοκιμή διαρροής που αποτυγχάνει επειδή η σήραγγα δεν μπορεί να επανέλθει δεν είναι εύρημα ασφαλείας, είναι εύρημα συνδεσιμότητας.