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

Μάθετε τα πεδία πριν τα διαβάσετε

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

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

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

Βήμα πρώτο: διαβάστε την κατάσταση και μετά την πολιτική

Οι εγγραφές κατάστασης κρατούν τα κλειδιά και τους μετρητές, ενώ οι εγγραφές πολιτικής κρατούν τους επιλογείς που αποφασίζουν τι επιτρέπεται να τα χρησιμοποιήσει. Στο Linux και τα δύο είναι ορατά χωρίς σύλληψη πακέτων, και η ανάγνωσή τους με αυτή τη σειρά κρατά τα δύο ερωτήματα χωριστά.

ip xfrm state
ip xfrm policy

Στην έξοδο κατάστασης, ελέγξτε την πηγή και τον προορισμό της συσχέτισης, τη λειτουργία, και αν η ενθυλάκωση δείχνει θύρες UDP. Αυτές οι θύρες σημαίνουν ότι χρησιμοποιείται διέλευση NAT, που αλλάζει τι πρέπει να επιτρέπει ένα ενδιάμεσο τείχος προστασίας, αλλά όχι ποιοι επιλογείς ή κλειδιά ισχύουν στα άκρα.

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

FieldWhere it appearsWhat it decides
Security parameter indexESP header, and the receiving state entryWhich association and keys the receiver applies
Sequence numberESP headerReplay detection for that association
Next headerESP trailerWhat the decapsulated payload contains
Inner IP headerInside tunnel-mode payload onlyThe original source and destination the endpoints act on
Traffic selectorsPolicy, not the packetWhich local traffic is allowed to use the association

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

Βήμα δεύτερο: αποδείξτε ότι μία ροή κινεί τους μετρητές

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

ip -s xfrm state
tcpdump -ni any esp

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

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

Βήμα τρίτο: αλλάξτε ένα πράγμα και κρατήστε μια επαναφορά

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

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

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

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

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