Ένας παλιός peer επιβάλλει TLS 1.0: περιορίστε την εξαίρεση, όχι τον host
Μία συσκευή κολλημένη σε TLS 1.0, ή ένα παλιό πιστοποιητικό παρόχου, μπορεί να επιβάλει χαμηλότερο κατώτατο όριο. Περιορίστε την εξαίρεση και μετά μετρήστε τι διαπραγματεύτηκε πραγματικά.
Μια παλιά συσκευή εμφανίζεται, αποτυγχάνει να συνδεθεί, και η πιο γρήγορη φαινομενικά επισκευή είναι να αποδυναμωθεί ολόκληρος ο host μέχρι να πετύχει η σύνδεση. Αυτή η ανταλλαγή είναι αόρατη τη στιγμή και μόνιμη στην πράξη, γιατί κανείς δεν αφαιρεί ένα κατώτατο όριο που επιτέλους δουλεύει. Δύο πολύ διαφορετικά σφάλματα δημιουργούν την πίεση, και μόνο ένα από αυτά αφορά καθόλου κρυπτογραφήσεις. Ταξινομήστε πρώτα το σφάλμα και μετά τοποθετήστε την εξαίρεση εκεί όπου δεν μπορεί να εξαπλωθεί.
Χωρίστε την αποτυχία στα δύο πριν επεξεργαστείτε μια οδηγία
Μια γραμμή στο αρχείο καταγραφής του διακομιστή για έλλειψη κοινού κρυπτογράφου, ή για μη υποστηριζόμενη έκδοση πρωτοκόλλου, προέρχεται από το κανάλι ελέγχου: τα δύο άκρα δεν μπόρεσαν να συμφωνήσουν πώς θα προστατευτεί η ίδια η διαπραγμάτευση. Αντίθετα, η γραμμή του πελάτη ότι δεν είναι ενεργοποιημένη καμία μέθοδος επαλήθευσης πιστοποιητικού διακομιστή προέρχεται από εντελώς άλλο σημείο, γιατί αυτός ο πελάτης δεν ελέγχει καθόλου ποιος απάντησε. Η αλλαγή κρυπτογράφου δεδομένων δεν κάνει τίποτα στη δεύτερη περίπτωση, και η προσθήκη ελέγχου ρόλου δεν κάνει τίποτα στην πρώτη.
Πάρτε την πρώτη αποτυχημένη γραμμή από κάθε πλευρά αντί για την τελευταία πριν από την αποσύνδεση, γιατί η τελευταία είναι συνήθως συνέπεια. Μετά προσδιορίστε ποιο αρχείο άνοιξε πραγματικά ο πελάτης: ένα εισαγόμενο προφίλ συχνά υπάρχει δύο φορές με διαφορετικά εμφανιζόμενα ονόματα, και η επεξεργασία του αντιγράφου που δεν διαβάζει κανείς παράγει μια πειστική μη αλλαγή. Μια διεργασία που εκτελείται κρατά τις ρυθμίσεις με τις οποίες ξεκίνησε, άρα ένα αποθηκευμένο αρχείο δεν είναι φορτωμένο αρχείο. Οι εντολές παρακάτω δείχνουν τη διαπραγμάτευση του πελάτη δίπλα στην οπτική του διακομιστή για την ίδια προσπάθεια.
openvpn --config <profile>.ovpn --verb 4 2>&1 | head -n 40
journalctl -u [email protected] --since '-10 min' | grep -iE 'cipher|tls|verify'
Ένας δεύτερος listener είναι το έντιμο σημείο για χαμηλότερο κατώτατο όριο
Όταν η συσκευή σταματά στο TLS 1.0 με κανάλι δεδομένων πριν από το 2.5, ο διακομιστής πρέπει να προσφέρει χαμηλότερο κατώτατο όριο για το κανάλι ελέγχου και έναν κρυπτογράφο δεδομένων που αναγνωρίζει ο παλιός πελάτης. Η οδηγία εφεδρικής τιμής υπάρχει ακριβώς για αυτόν τον peer, ενώ η λίστα κρυπτογράφων κρατά τους σύγχρονους πελάτες σε σύγχρονα σύνολα. Και οι δύο οδηγίες ανήκουν στον listener και όχι σε έναν χρήστη ή μια σύνδεση, και καμία επιλογή ανά πελάτη δεν τις στενεύει έπειτα. Γι' αυτό μία παλιά συσκευή στην κύρια θύρα είναι απόφαση για κάθε peer που τη μοιράζεται.
Όπου η πλατφόρμα το επιτρέπει, εκτελέστε τον παλιό listener ως δική του παρουσία σε ξεχωριστή θύρα, επιτρέψτε αυτή τη θύρα μόνο από τη διεύθυνση της συσκευής, και αφήστε την κύρια υπηρεσία ήσυχη. Καταγράψτε γιατί υπάρχει ο δεύτερος listener, στο αρχείο που φέρει τη διαμόρφωσή του, γιατί ένας μελλοντικός καθαρισμός θα το διαβάσει αλλιώς ως απομεινάρι. Ο διαχωρισμός αξίζει μόνο αν το χαμηλότερο κατώτατο όριο τελειώνει εκεί που τελειώνει η συσκευή.
tls-version-min 1.0
data-ciphers AES-128-GCM:AES-256-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
Τι σπάει στην πραγματικότητα ένα παλιό πιστοποιητικό παρόχου
Το σφάλμα επαλήθευσης είναι μια έλλειψη δέσμευσης ρόλου: χωρίς αυτήν ο πελάτης θα δεχτεί κάθε πιστοποιητικό που αλυσιδώνει σε έμπιστο CA, είτε εκδόθηκε για διακομιστή είτε όχι. Δεσμεύστε πρώτα το πιστοποιητικό στον ρόλο του διακομιστή και αντιμετωπίστε τη δέσμευση ως απαίτηση και όχι ως κουμπί συντονισμού. Μόνο ένα προφίλ που εξακολουθεί να αποτυγχάνει μετά από αυτό το βήμα έχει πραγματικό πρόβλημα πιστοποιητικού.
Ένα παλιό πιστοποιητικό παρόχου του οποίου το μέγεθος κλειδιού ή ο αλγόριθμος υπογραφής δεν ικανοποιεί πλέον την προεπιλεγμένη πολιτική του OpenSSL είναι η περίπτωση για περιορισμένη αλλαγή επιπέδου ασφάλειας στο κανάλι ελέγχου. Η μείωση του επιπέδου εκεί δεν απενεργοποιεί την επαλήθευση, και δεν πρέπει ποτέ να συνδυάζεται με κενό CA, απενεργοποιημένη ρύθμιση επαλήθευσης ή μη ελεγμένο όνομα host. Κρατήστε τη γραμμή μέσα στο μοναδικό προφίλ που τη χρειάζεται· η καθολική εξαγωγή χαλαρής διαμόρφωσης OpenSSL θα έδινε την ίδια χαλάρωση σε κάθε πρόγραμμα του μηχανήματος.
remote-cert-tls server
tls-cipher "DEFAULT:@SECLEVEL=0"
Διαβάστε τις διαπραγματευμένες τιμές, όχι το πανό
Στο επίπεδο λεπτομέρειας 4 και οι δύο πλευρές εκτυπώνουν την έκδοση TLS και τον κρυπτογράφο του καναλιού ελέγχου στα οποία κατέληξαν, και τον κρυπτογράφο δεδομένων της συνεδρίας. Διαβάστε αυτές τις γραμμές αντί για το πανό αρχικοποίησης, που αναφέρει επιτυχία και όχι τους όρους της. Έπειτα συνδέστε ξανά έναν σύγχρονο πελάτη στον κύριο listener και επιβεβαιώστε ότι εξακολουθεί να προσγειώνεται σε σύγχρονο σύνολο, γιατί μια εξαίρεση που διέρρευσε στην κοινή διαμόρφωση εμφανίζεται εδώ πρώτα. Οι τιμές που αντιγράφετε γίνονται η γραμμή βάσης για την επόμενη ανασκόπηση.
Δοκιμάστε την παλιά συσκευή μόνη της: πρέπει να συνδεθεί και να είναι η μόνη συνεδρία στα αρχεία καταγραφής που δείχνει τις ασθενέστερες παραμέτρους. Αν και ένας δεύτερος peer διαπραγματευτεί το παλιό σύνολο, η εξαίρεση είναι ευρύτερη από το επιδιωκόμενο και ο διαχωρισμός του listener δεν έγινε πραγματικά. Καταγράψτε και τις δύο παρατηρήσεις, όχι μόνο το συμπέρασμα.
Κάθε εξαίρεση χρειάζεται ιδιοκτήτη και ημερομηνία
Μια εξαίρεση χωρίς συνθήκη αφαίρεσης γίνεται σιωπηρά η προεπιλογή, γι' αυτό βάλτε τη συσκευή, τον ιδιοκτήτη, τον λόγο και την ημερομηνία που φεύγει δίπλα στη διαμόρφωση που δικαιολογεί. Χωρίς εκείνη τη γραμμή το χαμηλότερο κατώτατο όριο ζει περισσότερο από το υλικό που το χρειαζόταν.
Η αντικατάσταση του πελάτη ή το αίτημα στον πάροχο για ένα τρέχον προφίλ είναι το αποτέλεσμα που πρέπει να επιδιώκεται· η εξαίρεση είναι καθυστέρηση και όχι σχεδιασμός. Όταν η συσκευή αποσυρθεί, αφαιρέστε τον listener και το προφίλ στην ίδια αλλαγή ώστε να μη μείνει κανένα μισό σε λειτουργία. Τίποτα από αυτά δεν κάνει τις παλιές παραμέτρους ασφαλείς, μόνο εμποδίζει το όριο μιας συσκευής να γίνει βάση για όλους.