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

Διορθώστε τον ανιχνευτή πριν συγκρίνετε δύο εκτελέσεις

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

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

curl -s https://ifconfig.me
ip route get 203.0.113.20

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

nmap -sT -p 443,8443 --reason 203.0.113.20

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

Βρείτε ποιος κεντρικός υπολογιστής ολοκλήρωσε τη χειραψία

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

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

Απαντήστε στο δεύτερο ερώτημα στο backend και όχι απέξω. Ένα frontend που δέχεται συνδέσεις και μετά δεν φτάνει στο upstream του παράγει ακριβώς την εξωτερική εικόνα μιας υγιούς υπηρεσίας με αργή εφαρμογή. Μόνο η δική του εγγραφή του upstream χωρίζει τις δύο περιπτώσεις:

tail -n 5 /var/log/nginx/access.log
ss -ltnp 'sport = :443'

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

Ελέγξτε τους δικούς σας κανόνες πριν κατηγορήσετε τη σήραγγα

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

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

nft list ruleset | grep -n -e 203.0.113 -e 198.51.100
journalctl -u sshd -n 50 | grep 203.0.113

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

Διαβάστε μεταφορά, πιστοποιητικό και απόκριση χωριστά

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

ObservationWhat it settlesWhat it leaves open
Connection completedA host on the path accepted the handshakeWhich host, and whether its upstream is reachable
Certificate valid for the nameThe endpoint holds a credential for that nameWhether the process behind it is the one you meant
Expected response bodyThe application handled the requestAnything about other ports or other paths
Connection refusedA host replied and nothing was listeningWhether a filter sits ahead of the refused port
TimeoutNo reply arrived before the deadlineDrop, blackhole route or an overloaded host

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

curl -v --resolve office.example:443:203.0.113.20 https://office.example/

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

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

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