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

Το αντίγραφο ασφαλείας επιστρέφει αρχεία, όχι εξουσία

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

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

Η ταυτότητα του διακομιστή και η ταυτότητα του πελάτη αποτυγχάνουν με διαφορετικούς τρόπους

Στο WireGuard η ταυτότητα του διακομιστή είναι το ιδιωτικό κλειδί στο wg0.conf, άρα η αντιγραφή αυτού του αρχείου σε δεύτερο προσβάσιμο κεντρικό υπολογιστή δημιουργεί δύο διακομιστές με την ίδια ταυτότητα και χωρίς γνώση ο ένας για τον άλλο. Καθένας κρατά τη δική του λίστα ομοτίμων. Αφαιρέστε έναν ομότιμο στον νέο υπολογιστή και ο παλιός εξακολουθεί να τον δέχεται· ελέγξτε το wg show σε έναν και βλέπετε τη μισή αλήθεια. Οι πελάτες επίσης δεν μεταβαίνουν μόνοι τους: ένα προφίλ φέρει ένα Endpoint, άρα μια συσκευή συνεχίζει να μιλά στη διεύθυνση με την οποία διαμορφώθηκε, που μπορεί να είναι ο υπολογιστής που θέλατε να αποσύρετε.

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

Και οι πελάτες διπλασιάζονται, συνήθως κατά τη μετανάστευση. Η αντιγραφή προφίλ σε εφεδρική συσκευή «μόνο για δοκιμή» παράγει δεύτερη συσκευή με το ίδιο κλειδί και κοινό όνομα. Με το duplicate-cn και οι δύο συνεδρίες μπορούν να μένουν ενεργές ταυτόχρονα, και μια στατική εκχώρηση διεύθυνσης στο ccd ή στο ifconfig-pool-persist μπορεί να συγκρουστεί με την αρχική συσκευή. Αυτές είναι δύο μηχανές που φορούν μία ταυτότητα, και τίποτα στη διαμόρφωση του διακομιστή δεν τις ξεχωρίζει.

Διαλέξτε μία από τρεις καταστάσεις για το παλιό τελικό σημείο

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

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

ss -lunp | grep -E ':51820|:1194'
wg show wg0
wg pubkey < /etc/wireguard/server.key

Συμβιβάστε πρώτα ομότιμους, ανακλήσεις και διευθύνσεις

Καταγράψτε τι ισχυρίζεται η επαναφορά έναντι του τι είναι εξουσιοδοτημένο τώρα. Στο WireGuard το wg show wg0 δίνει κλειδί, τελικό σημείο, τελευταία χειραψία και μετρητές μεταφοράς κάθε ομοτίμου, αρκετά για να εντοπίσετε συσκευή που δεν κατέχετε πια. Αφαιρέστε την ζωντανά με το wg set wg0 peer <key> remove, μετά επεξεργαστείτε και τη διαμόρφωση, αλλιώς ο ομότιμος επιστρέφει στην επόμενη εκκίνηση. Το wg show wg0 allowed-ips αποκαλύπτει το δεύτερο πρόβλημα: δύο ομότιμοι σε μία διεύθυνση ή διεύθυνση που έχετε ήδη αναθέσει ξανά.

Στο OpenVPN η λίστα ανάκλησης είναι αρχείο με ημερομηνία, και μια επαναφορά μπορεί να φέρει πίσω παλιά. Ελέγξτε την πριν συνδεθούν οι πελάτες:

openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
grep -E 'crl-verify|reneg-sec' /etc/openvpn/server.conf

Αν η τελευταία ενημέρωση προηγείται της ανάκλησης, ο διακομιστής εξακολουθεί να τιμά πιστοποιητικό που ανακαλέσατε. Το OpenVPN 2.4 και νεότερο ξαναδιαβάζει το αρχείο CRL για κάθε νέα σύνδεση, άρα η αντικατάσταση του αρχείου σταματά νέες συνεδρίες, αλλά οι εγκατεστημένες σήραγγες παραμένουν μέχρι επαναδιαπραγμάτευση· η προεπιλογή του reneg-sec είναι 3600 δευτερόλεπτα, και η μείωσή του ή η επανεκκίνηση της υπηρεσίας σας δίνει την αλλαγή τώρα. Παλαιότερες εκδόσεις μπορεί να μην παίρνουν το αρχείο τόσο αξιόπιστα, άρα κάντε επανεκκίνηση όταν δεν μπορείτε να επιβεβαιώσετε τη συμπεριφορά της έκδοσης. Το εγχειρίδιο του wg(8) καλύπτει την αφαίρεση ομοτίμου και τη σύνταξη allowed-ips που χρησιμοποιήθηκε παραπάνω.

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

Επαληθεύστε με πελάτη που ανακαλέσατε

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

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

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