VPN μέσω UDP σιωπά στη σάρωση θύρας; Γιατί συμβαίνει αυτό
Το WireGuard και το σκληρυμένο OpenVPN απορρίπτουν datagram που αποτυγχάνουν στην πιστοποίηση χωρίς απάντηση. Η σιωπή από έναν σαρωτή είναι αναμενόμενη συμπεριφορά, όχι κλειστή θύρα.
Σαρώνετε τη θύρα του VPN, δεν λαμβάνετε απάντηση και συμπεραίνετε ότι η υπηρεσία είναι κάτω ή ότι το τείχος προστασίας είναι κλειστό. Με το WireGuard και με τα κανάλια ελέγχου του OpenVPN που φέρουν τη δική τους πιστοποίηση, αυτό το συμπέρασμα δεν έπεται. Ένα datagram χωρίς έγκυρο υλικό πιστοποίησης απορρίπτεται χωρίς απάντηση, άρα η σιωπή είναι το πώς φαίνεται από έξω μια υγιής υπηρεσία. Ο έλεγχος είναι λάθος πριν είναι η σήραγγα.
Η σιωπή είναι το πρωτόκολλο, όχι βλάβη
Το UDP δεν έχει εγκατάσταση σύνδεσης, άρα δεν υπάρχει SYN ούτε επιβεβαίωση που θα επέτρεπε σε έναν σαρωτή να ξεχωρίσει μια ανοιχτή θύρα από μια φιλτραρισμένη. Ο έλεγχος φτάνει ως μεμονωμένο datagram και η υπηρεσία εξετάζει αν ταιριάζει με το πρωτόκολλο που περιμένει. Όταν δεν ταιριάζει, το πακέτο απορρίπτεται, και η απόρριψη είναι η τεκμηριωμένη συμπεριφορά και όχι δυσλειτουργία.
Το WireGuard επικυρώνει κρυπτογραφικά τα μηνύματα χειραψίας του και αγνοεί ό,τι αποτυγχάνει. OpenVPN με tls-auth ή tls-crypt κάνει το ίδιο για το κανάλι ελέγχου του. Και στις δύο περιπτώσεις ένα αυθαίρετο ωφέλιμο φορτίο δεν φτάνει ποτέ σε στάδιο προς τον χρήστη, άρα δεν υπάρχει τίποτα για να απαντήσει κανείς και κανένα σφάλμα για επιστροφή.
Το TCP θα σας έδινε ένα reset από κλειστή θύρα. Το UDP σας αφήνει σε ασάφεια, την οποία οι σαρωτές λύνουν εκτυπώνοντας ανοιχτή ή φιλτραρισμένη αντί να μαντεύουν.
Τι μπορεί και τι δεν μπορεί να συμπεράνει ένας σαρωτής
Το αποτέλεσμα μιας σάρωσης είναι τόσο κατατοπιστικό όσο το ωφέλιμο φορτίο που έστειλε. Ταξινομήστε τις πιθανές παρατηρήσεις με βάση το τι υποστηρίζει πραγματικά καθεμία:
| Probe | Observed result | What it supports |
|---|---|---|
| Empty datagram | No reply | Nothing beyond the fact that UDP was used |
| Random payload | No reply | Consistent with an authenticated service |
| Valid handshake from a real client | A protocol reply | The service is alive and reachable |
| ICMP port unreachable | Unreachable message | The host answered, usually because nothing listens |
Διαβάστε την τρίτη γραμμή ως τη μόνη θετική δοκιμή στη λίστα. Απαιτεί το πραγματικό προφίλ, το πραγματικό κλειδί και το σωστό endpoint, που είναι ακριβώς αυτό που δεν έχει ένας γενικός σαρωτής.
Κοιτάξτε και τα δύο άκρα της διαδρομής
Για έναν διακομιστή που διαχειρίζεστε, καταγράψτε στη διεπαφή πριν βγάλετε οποιοδήποτε συμπέρασμα και μετά ρωτήστε την υπηρεσία τι είδε. Και οι δύο εντολές απαιτούν root στην πύλη:
tcpdump -ni any udp port 51820
tcpdump -ni any udp port 1194
wg show
Αν δεν εμφανιστεί κανένα πακέτο στη διεπαφή, η διαδρομή το απέριψε πριν δει τίποτα η υπηρεσία, και η επόμενη στάση είναι η δρομολόγηση και το φιλτράρισμα. Αν τα πακέτα φτάνουν αλλά καμία χειραψία δεν ολοκληρώνεται, η υπηρεσία είναι προσβάσιμη και η αναντιστοιχία βρίσκεται στα κλειδιά, στη διαμόρφωση του endpoint ή στην έκδοση του πρωτοκόλλου. Αυτή η σύγκριση απαντά στο ερώτημα που ο σαρωτής δεν μπορούσε. Εκτελέστε την όσο ένας πραγματικός πελάτης προσπαθεί να συνδεθεί, όχι όσο ο σαρωτής επαναλαμβάνεται.
Αλλάξτε τη δοκιμή, όχι την προστασία
Η δελεαστική συντόμευση είναι να απενεργοποιήσετε την προστασία του καναλιού ελέγχου ώστε μια διαγνωστική να λάβει απάντηση. Αυτό ανταλλάσσει μια πραγματική ιδιότητα ασφαλείας με ένα ομορφότερο αποτέλεσμα σάρωσης, και είναι η λάθος κατεύθυνση. Χρησιμοποιήστε αντ’ αυτού ένα έγκυρο προφίλ από εγκεκριμένο δίκτυο και σημειώστε το endpoint και την ώρα ώστε η σύγκριση να είναι επαναλήψιμη.
Η πιο χρήσιμη δοκιμή είναι διαφορική: το ίδιο προφίλ σε μια διαδρομή που λειτουργεί και στη διαδρομή που δεν λειτουργεί. Αν η λειτουργική διαδρομή παράγει χειραψία και η αποτυγχάνουσα διαδρομή δεν παράγει τίποτα στη διεπαφή, εντοπίσατε το σημείο ρήξης χωρίς να αποδυναμώσετε τίποτα.
Ένα αναπάντητο πακέτο UDP επομένως δεν αποδεικνύει ούτε ότι ο διακομιστής είναι εκτός σύνδεσης ούτε ότι είναι ασφαλής. Αποδεικνύει ότι αυτός ο έλεγχος, σε αυτή τη διαδρομή, αυτή τη στιγμή, δεν έγινε δεκτός.