Κάποιος σας στέλνει ένα προφίλ, το εισάγετε, και τριάντα δευτερόλεπτα αργότερα ένας πελάτης καλεί προορισμό που δεν έλεγξε κανείς. Διαβάστε πρώτα το αρχείο σε επεξεργαστή κειμένου, γιατί όλα όσα μετρούν χωρούν σε μια χούφτα οδηγίες: remote, proto, port, ca, cert, tls-crypt και verify-x509-name. Όλα τα άλλα είναι προεπιλογές, και οι εκπλήξεις ζουν εκεί.

Καταγράψτε κάθε τελικό σημείο που μπορεί να χρησιμοποιήσει το αρχείο

Ξεκινήστε από τα τελικά σημεία, γιατί ένα προφίλ μπορεί να περιέχει πολλά. Το grep -nE '^[[:space:]]*(remote|proto|port|remote-random|connection)' profile.ovpn εκτυπώνει κάθε υποψήφιο με τη σειρά του αρχείου, μαζί με όσα είναι ένθετα σε ενσωματωμένα μπλοκ <connection>.

Όταν μια οδηγία παραλείπει θύρα, ο πελάτης επιστρέφει στην προεπιλογή του ακροατή, οπότε το μόνο remote vpn.example.com σημαίνει θύρα 1194 με όποιο proto εμφανιστεί αργότερα στο αρχείο. Αρκετές απλές γραμμές remote είναι εναλλακτικές: ο πελάτης τις δοκιμάζει με σειρά εκτός αν το remote-random τις ανακατέψει, και ποτέ δεν αντικαθιστά σιωπηλά τον κεντρικό υπολογιστή άλλου παρόχου. Δύο γραμμές remote σε άσχετους τομείς είναι το σημείο όπου σταματάτε και ρωτάτε ποια εννοούνταν.

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

Επιβεβαιώστε πρώτα το όνομα, μετά τη θύρα

Το dig +short vpn.example.com σάς λέει αν το όνομα υπάρχει και ποιες διευθύνσεις επιστρέφει, και ένα τελικό σημείο με πολλές διευθύνσεις ή πίσω από διαμεσολαβητή μπορεί νόμιμα να επιστρέψει αρκετές. Η επίλυση του ονόματος είναι προϋπόθεση, όχι απόδειξη ιδιοκτησίας· οποιοσδήποτε μπορεί να δείξει ένα όνομα σε μια διεύθυνση, και μία διεύθυνση μπορεί να απαντά για πολλά ονόματα.

Έπειτα ελέγξτε τον ακροατή στη θύρα που βρήκατε, σύμφωνα με το επίπεδο μεταφοράς. Πάνω από TCP, το openssl s_client -connect vpn.example.com:1194 -servername vpn.example.com εκτυπώνει την αλυσίδα που παρουσιάζει ο διακομιστής. Πάνω από UDP χρειάζεστε DTLS: το openssl s_client -dtls1_2 -connect vpn.example.com:1194 εκτελεί την ίδια χειραψία πάνω από αυτοδύναμα πακέτα. Μια ολοκληρωμένη χειραψία αποδεικνύει ότι κάτι ακούει και κρατά πιστοποιητικό, που είναι περισσότερο από ό,τι δείχνει ένα ping και λιγότερο από ό,τι απαιτούν οι δικές του ρυθμίσεις εμπιστοσύνης του προφίλ.

Όταν η χειραψία αποτυγχάνει και ο κεντρικός υπολογιστής απαντά σε ping, η θύρα είναι μάλλον λάθος ή φιλτραρισμένη. Δείτε το ως λόγο να ζητήσετε τη σωστή θύρα, όχι ως πρόσκληση να σαρώσετε τις διπλανές. Το nc -vzu επίσης αναφέρει επιτυχία σε ορισμένες στοίβες χωρίς τίποτα να ακούει, οπότε ένα γυμνό UDP τεστ δεν σημαίνει τίποτα χωρίς χειραψία πίσω του.

Διαβάστε τις καρφίτσες εμπιστοσύνης χωριστά από τη διεύθυνση

Η διεύθυνση αποφασίζει πού πηγαίνει ο πελάτης· το μπλοκ εμπιστοσύνης αποφασίζει ποιον πιστεύει όταν φτάσει. Το verify-x509-name "vpn.example.com" name καρφιτσώνει το κοινό όνομα του υποκειμένου, και το remote-cert-tls server απαιτεί την εκτεταμένη χρήση κλειδιού για έλεγχο ταυτότητας διακομιστή. Ένα προφίλ που σας δίνει ένας πάροχος πρέπει να φέρει και τα δύο.

Αναζητήστε το ca, ένα ενσωματωμένο μπλοκ <ca>, και είτε tls-crypt είτε tls-auth. Ένα προφίλ που χρησιμοποιεί tls-auth χρειάζεται key-direction 1 στον πελάτη όταν η πλευρά του διακομιστή χρησιμοποιεί κατεύθυνση 0, και μια αναντιστοιχία αποτυγχάνει τη χειραψία με σφάλμα TLS που διαβάζεται σαν βλάβη πιστοποιητικού. Ένα ενσωματωμένο CA που δεν ανήκει στον πάροχο του οποίου μόλις επιλύσατε το όνομα σημαίνει ότι το αρχείο συναρμολογήθηκε από δύο πηγές, και αυτή είναι η περίπτωση που αξίζει κατηγορηματική άρνηση.

Το verify-x509-name δέχεται λειτουργίες name, name-prefix ή subject, και η τελευταία περιμένει πλήρες διακεκριμένο όνομα με την ακριβή σειρά που το εκτυπώνει ο διακομιστής. Διαλέξτε λειτουργία που ταιριάζει στο σχήμα της τιμής, γιατί ο πελάτης απορρίπτει κάθε σύνδεση αντί να προειδοποιήσει για μια κοντινή αστοχία. Για αρχείο που δεν συντάξατε εσείς, το name με απλό όνομα κεντρικού υπολογιστή είναι η λιγότερο εκπληκτική επιλογή.

Ελέγξτε τις επιλογές που αποτυγχάνουν σιωπηλά

Το OpenVPN 2.6 διαπραγματεύεται κρυπτογράφηση μέσω data-ciphers, και ένα προφίλ που φέρει μόνο παλιά γραμμή cipher AES-256-CBC μπορεί να ολοκληρώσει το κανάλι ελέγχου και μετά να κολλήσει στα δεδομένα. Διαβάζοντας αυτή την τιμή μαθαίνετε αν το αρχείο προηγείται του διακομιστή στον οποίο συνδέεστε· η σελίδα εγχειριδίου του 2.6 απαριθμεί τη σειρά διαπραγμάτευσης αν χρειαστεί να την παραθέσετε στον πάροχο.

Το auth-user-pass χωρίς όνομα αρχείου σημαίνει ότι ο πελάτης θα ρωτήσει, οπότε ένα προφίλ που φαίνεται αυτοτελές χρειάζεται ακόμη διαπιστευτήρια. Το auth-user-pass credentials.txt σημαίνει ότι περιμένει αρχείο που πιθανώς δεν σας στάλθηκε. Τα nobind και resolv-retry infinite είναι συνηθισμένα και ακίνδυνα, ενώ το explicit-exit-notify είναι μόνο για UDP και άχρηστο πάνω από TCP.

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

Αποφασίστε, και μετά καταγράψτε τι αποφασίσατε

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

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

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

Αν τελικά το εισαγάγετε και η πρώτη προσπάθεια αποτύχει, εκτελέστε τον πελάτη με --verb 3 και διαβάστε τις πρώτες δέκα γραμμές: η επιλυμένη διεύθυνση remote, το διαπραγματευμένο proto και το σφάλμα TLS εμφανίζονται με αυτή τη σειρά, που σας λέει ποιον από τους παραπάνω ελέγχους παραλείψατε.

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