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

Ένα προφίλ που εκτελεί βοηθό είναι πρόγραμμα, όχι αρχείο ρυθμίσεων

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

Ο μύθος που αξίζει να εγκαταλείψουμε είναι ότι ένα προφίλ μπορεί μόνο να ανακατευθύνει κίνηση. Ένας βοηθός που εκτελεί ip route add και ένας που εκτελεί curl εναντίον απομακρυσμένου κεντρικού υπολογιστή είναι ο ίδιος μηχανισμός, και το προφίλ φαίνεται ίδιο από έξω. Τίποτα στην εμφάνιση του αρχείου δεν σας λέει ποιο έχετε, γι' αυτό η εξέταση πρέπει να φτάσει στο ίδιο το σενάριο.

Τι καθορίζει πραγματικά την εκτέλεση και πώς μοιάζουν οι γραμμές που την επιτρέπουν

Τρία πράγματα ελέγχουν έναν βοηθό: η οδηγία συμβάντος που τον ονομάζει, το επίπεδο script-security που τον επιτρέπει και η ίδια η υλοποίηση της πλατφόρμας του πελάτη. Ένα προφίλ μπορεί να ζητήσει άγκιστρο και να μη δει τίποτα να συμβαίνει, επειδή ένας κινητός πελάτης ή μια περικομμένη έκδοση για υπολογιστή μπορεί να μην υλοποιεί καθόλου αυτό το συμβάν. Ομοίως, ένα προφίλ που ζητά περισσότερη άδεια από όση χρειάζεται η λειτουργία του σας λέει κάτι για την προέλευσή του. Ένα επίπεδο άδειας είναι δυνατότητα, όχι έγκριση. Οι γραμμές που την επιτρέπουν μοιάζουν έτσι, με μια διαδρομή που στέκεται στη θέση της δικής σας.

script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.sh

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

Ιδιοκτησία, διαδρομή και με τι τρέφεται ο βοηθός

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

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

Αποτυχίες καθαρισμού εμφανίζονται αφού φύγει η σήραγγα

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

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

Εξέταση του βοηθού και διατήρηση διεξόδου

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

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

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