Γιατί μια φορτωμένη σήραγγα IPsec αλλάζει κλειδιά νωρίς: όρια χρόνου και όγκου
Ένα όριο byte μπορεί να ενεργοποιηθεί πολύ πριν τελειώσει η ώρα. Συγκρίνετε μαλακές και σκληρές διάρκειες ζωής, τον μετρητή που χρησιμοποιεί η συσχέτιση και την ανταλλαγή αντικατάστασης.
Περίπου κάθε πενήντα λεπτά, μια σήραγγα σε έναν φορτωμένο σύνδεσμο πέφτει για λίγα δευτερόλεπτα, και ο πρώτος ύποπτος είναι το ρολόι. Οι συσχετίσεις μπορούν να λήξουν με χρονικό όριο ή με αριθμό byte, και όποιο όριο φτάσει πρώτο είναι αυτό που τις αποσύρει. Σε έναν σύνδεσμο που μεταφέρει πραγματική κίνηση, ένα όριο όγκου μπορεί να ενεργοποιηθεί πολύ πριν τελειώσει η ρυθμισμένη ώρα. Άρα το «πολύ νωρίς» είναι δήλωση για το ρολόι, όχι για τη συσχέτιση.
Μετρήστε ό,τι μετρά η συσχέτιση, όχι η διεπαφή
Το σύνολο byte μιας διεπαφής, η συνδυασμένη διαμεταγωγή ενός πίνακα και ο δικός της μετρητής της συσχέτισης είναι τρεις ξεχωριστοί αριθμοί, και μόνο ένας από αυτούς συγκρίνεται με το όριο. Καταγράψτε τη συσχέτιση εισόδου και εξόδου χωριστά με τα αναγνωριστικά τους, ώστε μια αλλαγή κλειδιών που αγγίζει μία κατεύθυνση να εμφανίζεται ως κατευθυντικό γεγονός αντί για μυστήριο. Ο μετρητής της συσχέτισης ξεκινά επίσης από την αρχή στην αλλαγή κλειδιών, γι’ αυτό ένα σύνολο που λαμβάνεται από τη διεπαφή αυξάνεται ενώ η τιμή που μετράει μηδενίζεται.
Αξίζει να κάνετε την αριθμητική μία φορά, ώστε η τάξη μεγέθους να πάψει να φαίνεται αυθαίρετη. Ένας μετρημένος προϋπολογισμός ενός gibibyte που καταναλώνεται με σταθερά 128 mebibyte το λεπτό εξαντλείται σε οκτώ λεπτά, και αυτό είναι μετατροπή μονάδων, όχι μέτρηση της σήραγγάς σας. Αν το προκύπτον νούμερο βρίσκεται πολύ κάτω από το χρονικό όριο, ο όγκος είναι ο μηχανισμός και καμία παρακολούθηση του ρολογιού δεν θα εξηγήσει το διάστημα. Αν βρίσκεται πολύ πάνω από αυτό, το όριο byte δεν είναι η αφορμή σας και η αναζήτηση ανήκει αλλού.
Το μαλακό και το σκληρό όριο είναι δύο διαφορετικά γεγονότα
Ένα μαλακό όριο ζητά αντικατάσταση πολύ πριν το σκληρό όριο τερματίσει τη συσχέτιση, και οι υλοποιήσεις προσθέτουν δικά τους περιθώρια και τυχαιοποίηση πάνω σε ό,τι ρυθμίσατε. Γι’ αυτό το παρατηρούμενο διάστημα σχεδόν ποτέ δεν είναι στρογγυλός αριθμός. Η αρχιτεκτονική IPsec περιγράφει διάρκειες ζωής εκφρασμένες σε χρόνο και αριθμό byte με τους δύο τύπους ορίου, και ισχύει η νωρίτερη λήξη. Αν αντιμετωπίσετε μία εκτυπωμένη διάρκεια ζωής ως χρονοδιάγραμμα, θα κάνετε λάθος κατά το περιθώριο.
Διαβάστε την πραγματική πολιτική από την κατάσταση λειτουργίας αντί να τη συμπεράνετε από έναν αριθμό σε ένα αρχείο, γιατί το περιθώριο ανήκει στην υλοποίηση, όχι στην πρόθεσή σας. Αντισταθείτε στον πειρασμό να τεντώσετε τα όρια προς το μέγιστο για να καλμάρετε το σύμπτωμα: μια σήραγγα που αλλάζει κλειδιά βάσει χρονοδιαγράμματος συμπεριφέρεται όπως σχεδιάστηκε, και μια μεγαλύτερη διάρκεια ζωής απλώς αναβάλλει το γεγονός κρατώντας ένα εκτεθειμένο κλειδί χρησιμοποιήσιμο περισσότερο. Όταν η ίδια η αντικατάσταση αποτυγχάνει, το όριο είναι ο αγγελιοφόρος και όχι το σφάλμα.
Διαβάστε την πραγματική διάρκεια ζωής από την κατάσταση λειτουργίας
Στο strongSwan, το swanctl --list-sas τυπώνει τη σύνοψη της συσχέτισης με τους χρόνους αλλαγής κλειδιών και ζωής, ώστε η τιμή που σκοπεύει να επιβάλει ο δαίμονας να είναι ορατή χωρίς μαντεψιές. Σε κεντρικό υπολογιστή Linux χωρίς προβολή δαίμονα, το ip xfrm state αναφέρει τα ρυθμισμένα μαλακά και σκληρά όρια byte και πακέτων δίπλα στους τρέχοντες μετρητές. Οι δύο αναγνώσεις απαντούν σε διαφορετικά ερωτήματα και αξίζει να μείνουν και οι δύο στο δελτίο.
swanctl --list-sas
ip -s xfrm state
Συγκρίνετε το εκτυπωμένο μαλακό όριο με το διάστημα που μετρήσατε, γιατί μια αντικατάσταση που ξεκινά με περιθώριο κάτω από το σκληρό όριο είναι φυσιολογική και μία που δεν ξεκινά ποτέ δεν είναι. Αν ο δαίμονας δείχνει μία διάρκεια ζωής και η κατάσταση του πυρήνα άλλη, κοιτάτε δύο επίπεδα που διαφωνούν, και αυτό είναι από μόνο του το εύρημα.
Παρατηρήστε την ανταλλαγή που αντικαθιστά το SA
Κρατήστε τις τρεις ανανεώσεις ξεχωριστές, γιατί αποτυγχάνουν με διαφορετικούς τρόπους: μια αλλαγή κλειδιών IKE SA χτίζει νέα συσχέτιση ελέγχου, μια αλλαγή κλειδιών CHILD SA αντικαθιστά τη συσχέτιση δεδομένων, και η επαναπιστοποίηση επαναλαμβάνει την ανταλλαγή ταυτότητας. Στο IKEv2 κάθε ομότιμος αποφασίζει τις δικές του διάρκειες ζωής αντί να διαπραγματεύεται μία κοινή τιμή, οπότε μια ανταλλαγή που δεν ξεκινήσατε είναι συνηθισμένη. Μια ασυμφωνία perfect forward secrecy είναι συχνή αιτία να πεθάνει ένα νέο child SA ακριβώς στο διάστημα αλλαγής κλειδιών, και εμφανίζεται ακριβώς σαν βλάβη χρονομέτρου μέχρι κάποιος να διαβάσει την πρόταση.
Συγκρίνετε την παλιά συσχέτιση με τη διάδοχό της και με την ανταλλαγή που την παρήγαγε. Ένα αναγνωριστικό που εξαφανίζεται είναι συνήθης αντικατάσταση· μια απορριφθείσα πρόταση, μια απούσα απάντηση ή η απουσία χρησιμοποιήσιμης κατάστασης διαδόχου είναι διαφορετικό γεγονός με διαφορετικό ιδιοκτήτη. Διαφυλάξτε αυτά τα στοιχεία πριν αλλάξετε οτιδήποτε, γιατί οι σημειώσεις για τη συγκεκριμένη έκδοση, η πρόταση του ομοτίμου και οι διαπραγματευμένες διάρκειες ζωής είναι αυτά που κάνουν την υπόθεση αναγνώσιμη μια εβδομάδα αργότερα, αφού περιστραφούν τα αρχεία καταγραφής.
Αποδείξτε την ανανέωση αντί να την κρύψετε
Αποδεχτείτε την ανάπτυξη περνώντας από μια ανανέωση που σχεδιάσατε και όχι από μία που σας συμβαίνει. Επιβάλετε μία μόνο αλλαγή κλειδιών μέσα σε παράθυρο συντήρησης, και μετά επιβεβαιώστε ότι και οι δύο κατευθύνσεις μεταφέρουν δεδομένα έπειτα και ότι το αποτέλεσμα της εφαρμογής είναι αμετάβλητο, όχι απλώς ότι η ένδειξη της σήραγγας είναι πράσινη. Καταγράψτε ποιο όριο ενεργοποιήθηκε και ποια ανταλλαγή ενεπλάκη.
Ένα συμπέρασμα αυτής της μορφής αντέχει σε έλεγχο, ενώ μια αλλαγμένη τιμή χρονομέτρου που έκανε τη σύνδεση να φαίνεται ήσυχη ένα απόγευμα δεν αντέχει. Αν μετακινήθηκε μόνο το χρονόμετρο, τα στοιχεία μετακινήθηκαν μαζί του.