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

Ποια ταυτότητα έχετε στην πραγματικότητα

Ένα αρχείο κατάστασης έκδοσης 3 είναι η συνήθης αφετηρία. Το τμήμα CLIENT_LIST φέρει το common name, την πραγματική διεύθυνση, τους μετρητές byte και τον χρόνο σύνδεσης· το τμήμα ROUTING TABLE αντιστοιχίζει μια εικονική διεύθυνση σε ένα common name με χρονική σφραγίδα τελευταίας αναφοράς. Το common name είναι η σταθερή ταυτότητα. Η εικονική διεύθυνση είναι μια εκχώρηση, και η πραγματική διεύθυνση πίσω από ένα NAT μπορεί να αλλάξει μεταξύ συνεδριών χωρίς να αλλάξει τίποτα στον διακομιστή.

Η διεπαφή διαχείρισης προσφέρει παρόμοια εικόνα μέσω της εντολής status και προσθέτει ένα ID πελάτη ανά συνεδρία. Αυτό το ID περιμένει η client-kill, και δεν είναι η διεύθυνση σήραγγας. Αν πρέπει να ξέρετε ποιο common name έλαβε ποια διεύθυνση τη στιγμή της σύνδεσης, το περιβάλλον ενός σεναρίου client-connect έχει και τα δύο, μαζί με την έμπιστη εξωτερική διεύθυνση, αλλά αυτό το σενάριο εκτελείται ως χρήστης OpenVPN και χρειάζεται εγγράψιμη διαδρομή καταγραφής.

What you holdWhere it came fromWhat it can act on
Common nameCLIENT_LIST, or the auth hookkill, and credential revocation
Client IDstatus on the management socketclient-kill, that one session
Tunnel addressROUTING TABLE, client-connect environmentNothing durable, the address is recycled

Σκοτώστε τώρα, αρνηθείτε στη σύνδεση, ανακαλέστε για πάντα

Και οι δύο εντολές αφαίρεσης στη διεπαφή διαχείρισης είναι ενέργειες συνεδρίας. Η kill παίρνει ένα common name ή μια πραγματική διεύθυνση και θύρα· η client-kill παίρνει το ID πελάτη και τερματίζει αμέσως εκείνο το στιγμιότυπο. Καμία δεν είναι φραγή: ένας πελάτης που αποβλήθηκε με έγκυρο πιστοποιητικό και κωδικό επανασυνδέεται σε δευτερόλεπτα, κάτι που είναι καλό όταν ανακυκλώνετε ένα peer δοκιμής και άχρηστο όταν κλάπηκε ένα φορητό υπολογιστή.

Η client-deny είναι άλλου είδους απόφαση. Συνήθως εκδίδεται από άγκιστρο ελέγχου ταυτότητας ή client-connect και απορρίπτει τη συνεδρία με αιτιολογία, άρα ταιριάζει σε πολιτική που αρνείται μια σύνδεση και όχι σε εκείνη που διακόπτει μια σύνδεση. Η τεκμηρίωση προειδοποιεί επίσης ότι μια απόρριψη που εκδίδεται κατά τη διάρκεια επαναδιαπραγμάτευσης TLS ακυρώνει το επαναδιαπραγματευμένο κλειδί, ενώ η υπάρχουσα συνεδρία μπορεί να συνεχιστεί μέχρι να κλείσει το παράθυρο μετάβασης. Αν η απαίτηση είναι ο πελάτης να έχει φύγει τώρα, η τεκμηριωμένη απάντηση είναι η client-kill.

Η μόνιμη αφαίρεση βρίσκεται κάτω από όλα αυτά. Ανακαλέστε το πιστοποιητικό και βεβαιωθείτε ότι η crl-verify δείχνει σε λίστα που ο διακομιστής πράγματι επαναφορτώνει, απενεργοποιήστε το αρχείο ρυθμίσεων που αφορά τον πελάτη στον κατάλογο ccd, ή απενεργοποιήστε τον λογαριασμό σε όποιο backend ρωτά το άγκιστρο ελέγχου ταυτότητας. Ούτε η ανάκληση είναι άμεση: με τις προεπιλεγμένες ρυθμίσεις reneg-sec μια εγκατεστημένη συνεδρία μπορεί να συνεχιστεί μέχρι να επαναδιαπραγματευτεί, άρα η ενέργεια συνεδρίας και η ενέργεια διαπιστευτηρίων αλληλοσυμπληρώνονται, δεν είναι εναλλακτικές.

Είναι ελεύθερη η υποδοχή διαχείρισης;

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

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

Η ακολουθία που εκτελώ σε ζωντανό διακομιστή

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

status                     # note the client ID and common name
client-kill 3              # end that session now
kill Test-Client           # alternative: by common name
status                     # confirm the session is gone

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

Επιβεβαιώστε ότι έμεινε μακριά

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

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

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