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

Η τιμή έρχεται από τον διακομιστή, όχι από τη σήραγγα

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

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

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

Διαβάστε τη διαδρομή του αιτήματος πριν εμπιστευτείτε τον αριθμό

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

Τέσσερις συνηθισμένες διαδρομές παράγουν τέσσερις διαφορετικές παρατηρήσεις.

Path to the listenerWhat can be reported
Client routed straight to the private listener, no translationThe client's tunnel address
Gateway translates the source before forwardingThe gateway's translated address
Reverse proxy terminates the client and opens its own backend connectionThe proxy's backend address
Load balancer in front of two proxiesWhichever hop the server treats as its peer

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

Η αντικατάσταση γίνεται μόνο εκεί όπου είναι ρυθμισμένη

Ένας διακομιστής ή ένα πλαίσιο μπορεί να αντικαταστήσει σκόπιμα τη διεύθυνση του πελάτη. Η μονάδα remote-IP του Apache και η μονάδα real-IP του NGINX το κάνουν και οι δύο, και η τιμή που λαμβάνει η PHP εξαρτάται από αυτή τη ρύθμιση και από τις παραμέτρους που περνούν στον χειριστή σεναρίου.

Άρα το REMOTE_ADDR δεν είναι καθολικά ο άθικτος TCP peer. Είναι ο peer όπως ο διακομιστής επέλεξε να τον αναφέρει αφού εφάρμοσε τη δική του πολιτική. Αυτή η διάκριση αποφασίζει αν η τιμή είναι απόδειξη ή διακόσμηση.

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

Μην διαβάζετε τις κεφαλίδες προώθησης με εμπιστοσύνη

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

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

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

Χρησιμοποιήστε την ταυτότητα της εφαρμογής για αποφάσεις

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

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

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

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