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

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

Ο μύθος: η σύνδεση δεν είναι δρομολόγηση

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

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

Τρεις καταστάσεις αιτήματος, δύο εγκεκριμένες έξοδοι

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

Request pathSource the site seesIntended decision
Office, no tunnelOffice public exitAdmit to the application login
Remote, approved full tunnelApproved VPN egressAdmit to the same login
Remote, ordinary connectionNeither approved addressDeny at the network boundary

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

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

Διαβάστε την πηγή εκεί όπου λαμβάνεται η απόφαση

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

server {
    listen 443 ssl;
    server_name intranet.example.com;

    set_real_ip_from 10.20.0.10;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    location /app/ {
        allow 203.0.113.24;    # office public exit
        allow 198.51.100.77;   # approved VPN egress
        deny  all;
        proxy_pass http://app_backend;
    }
}

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

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

Διαχωρισμένη σήραγγα: το αίτημα που δεν μπαίνει ποτέ

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

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

Αποδείξτε την άρνηση, έπειτα την ανάκτηση

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

curl -sS -o /dev/null -w 'status=%{http_code}
' https://intranet.example.com/app/login
# repeat with the tunnel up, then with it down
tail -f /var/log/nginx/access.log | grep ' /app/'

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

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

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