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

Ποιο επίπεδο απέτυχε: χειραψία, κρυπτογράφος, πακέτο ή βιβλιοθήκη

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

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

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

Όταν αποτυγχάνει η χειραψία, η πολιτική TLS απορρίπτει το πιστοποιητικό

Το Ubuntu 22.04 μετέφερε το σύστημα σε OpenSSL 3, και το προεπιλεγμένο επίπεδο ασφάλειας σε αυτόν τον κλάδο είναι αυστηρότερο για υπογραφές πιστοποιητικών και μεγέθη κλειδιών απ' ό,τι ήταν το 20.04. Ένα πιστοποιητικό CA υπογεγραμμένο με παλαιότερη σύνοψη, ή ένα κλειδί κάτω από το τρέχον όριο, αποτυγχάνει τώρα κατά τη χειραψία. Εφόσον τίποτα δεν έχει ταυτοποιηθεί ακόμη, το σφάλμα διαβάζεται σαν λάθος κωδικός ή νεκρός διακομιστής.

Η στενή επιδιόρθωση προσαρτά μια συμβολοσειρά κρυπτογράφου μόνο σε αυτή τη σύνδεση. Στον επεξεργαστή επιφάνειας εργασίας, ανοίξτε το προφίλ, πηγαίνετε στις σύνθετες ρυθμίσεις και βάλτε DEFAULT:@SECLEVEL=0 στο πεδίο κρυπτογράφου TLS. Το αρχείο κλειδιού του NetworkManager παίρνει την ίδια τιμή κάτω από [vpn]:

[vpn]
tls-cipher=DEFAULT:@SECLEVEL=0

Επανεκκινήστε το NetworkManager και συνδεθείτε ξανά, γιατί ο δαίμονας αποθηκεύει προσωρινά τα αναλυμένα προφίλ και αλλιώς θα συνεχίσει να χρησιμοποιεί το αντίγραφο που ήδη κρατά. Μάθετε τι κάνει η γραμμή πριν την κρατήσετε: η ρύθμιση είναι όριο σε πολλές παραμέτρους πιστοποιητικών και κλειδιών, όχι όνομα κρυπτογράφου, οπότε το χαμήλωμά της διευρύνει αυτό που δέχεται το μεμονωμένο προφίλ. Σημειώστε ποιος διακομιστής το απαίτησε και αφαιρέστε τη ρύθμιση όταν ο διαχειριστής επανεκδώσει τρέχον υλικό. Η αλλαγή του /etc/ssl/openssl.cnf φτάνει το ίδιο όριο για κάθε πρόγραμμα που διαβάζει αυτό το αρχείο, κάτι πολύ πέρα από το VPN.

Το OpenVPN 2.6 απαιτεί τον κρυπτογράφο καταχωρημένο για διαπραγμάτευση

Το Ubuntu 22.10 έφερε το OpenVPN 2.6, και σε αυτή την έκδοση το --cipher σταματά να επιλέγει μόνο του το κανάλι δεδομένων. Ο κρυπτογράφος πρέπει να υπάρχει και στη διαπραγματευόμενη λίστα data-ciphers, αλλιώς ο πελάτης τυπώνει προειδοποίηση απαρχαίωσης και μετά αποτυγχάνει να σηκώσει τη σήραγγα.

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

data-ciphers=AES-256-CBC

Χρησιμοποιήστε την τιμή που διαφημίζει ο διακομιστής, όχι αυτή που θυμάστε· ένας διακομιστής που προσφέρει AES-256-GCM δεν θα διαπραγματευτεί με λίστα πελάτη που ονομάζει μόνο CBC. Επανεκκινήστε τον διαχειριστή και συνδεθείτε ξανά, μετά επαναλάβετε την προσπάθεια από κέλυφος με τον κρυπτογράφο να περνά ρητά και για διαπραγμάτευση και για εφεδρεία:

sudo openvpn --config client.ovpn --data-ciphers AES-256-CBC --data-ciphers-fallback AES-256-CBC

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

Βλάβες πακέτων και προσθέτων μοιάζουν με βλάβες VPN

Δεν είναι κάθε αποτυχία μετά την αναβάθμιση κρυπτογραφική. Ένα αποθετήριο OpenVPN που προστέθηκε κάτω από κωδικό όνομα που η έκδοση δεν χρησιμοποιεί παράγει πακέτο που δεν εγκαθίσταται ποτέ, οπότε συγκρίνετε τι lsb_release -a αναφέρει με το αρχείο λίστας που προσθέσατε. Ένα στοιχείο universe που λείπει ή μια θυρίδα ασφαλείας παράγει πακέτο που δεν βρίσκεται καθόλου. Και οι δύο περιπτώσεις αφήνουν το προφίλ άθικτο και τη σήραγγα αδύνατη.

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

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

Μια βιβλιοθήκη προμηθευτή μπορεί να κρύβεται πίσω από σφάλμα πολιτικής

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

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

ldd /usr/sbin/openvpn | grep -i -E 'ssl|crypto'

Αφαιρέστε ή επαναδρομολογήστε το αντίγραφο του προμηθευτή και μετά τρέξτε τον ίδιο έλεγχο ξανά. Η αναμενόμενη έκδοση πρέπει να είναι αυτή σε χρήση πριν επιστρέψετε στο προφίλ.

Το καρφίτσωμα παλαιότερου πελάτη αγοράζει χρόνο, όχι λύση

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

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

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

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