Een OpenVPN-Client erausgeheien: kill, deny oder en Zertifikat zréckzéien?
Dräi OpenVPN-Aktiounen huelen e Client ewech, awer jidderee beendet eppes aneres: eng lafend Sitzung, een Anmeldversuch oder d'Recht, sech nees ze verbannen. Wielt no Identitéit.
Dir hutt e common name an eng Adress an Ären Notizen, an dräi Kommandoen, déi all schéngen e Client ewechzehuelen. Nëmmen ee mécht dat, wat Dir wëllt, an d'Wiel hänkt dovun of, ob Dir d'Sitzung, déi just leeft, musst ophalen, d'nächst Anmeldung musst ofleenen oder d'Recht, sech iwwerhaapt ze verbannen, musst huelen. Liest d'Identitéit, déi Dir tatsächlech hutt, ier Dir eppes ufaasst, well en OpenVPN-Pool déi selwecht Tunneladress méi spéit enger anerer Sitzung gëtt.
Wéi eng Identitéit Dir tatsächlech hutt
Eng Statusdatei vun der Versioun 3 ass de gewéinlechen Ausgangspunkt. Den CLIENT_LIST-Abschnitt dréit de common name, déi richteg Adress, Byte-Zieler an d'Verbindungszäit; den ROUTING TABLE-Abschnitt bildet eng virtuell Adress op e common name mat engem Zäitstempel vun der leschter Referenz of. De common name ass d'stabil Identitéit. D'virtuell Adress ass eng Zousetzung, an déi richteg Adress hannert engem NAT kann tëschent Sitzungen änneren, ouni datt sech um Server eppes ännert.
D'Verwaltungsinterface weist eng ähnlech Vue iwwer hire status-Kommando a füügt eng Client-ID pro Sitzung bäi. Genee déi ID erwaart client-kill, an et ass net d'Tunneladress. Wann Dir wësse musst, wéi ee common name beim Verbannen wéi eng Adress kritt huet, huet d'Ëmfeld vun engem client-connect-Skript béides, zesumme mat der vertrauenswürdeger baussenzeger Adress, awer dat Skript leeft als OpenVPN-Benotzer a brauch e beschreifbare Logwee.
| What you hold | Where it came from | What it can act on |
|---|---|---|
| Common name | CLIENT_LIST, or the auth hook | kill, and credential revocation |
| Client ID | status on the management socket | client-kill, that one session |
| Tunnel address | ROUTING TABLE, client-connect environment | Nothing durable, the address is recycled |
Elo killen, bei der Anmeldung ofleenen, fir ëmmer zréckzéien
Béid Ewechhuelkommandoen an der Verwaltungsinterface sinn Sitzungsaktiounen. kill hëlt e common name oder eng richteg Adress a Port; client-kill hëlt d'Client-ID an ennerbricht déi Instanz direkt. Keent ass eng Spär: en erausgeheite Client mat engem gültege Zertifikat an engem Passwuert verbënnt sech a Sekonnen nees, wat gutt ass, wann Dir e Testpeer recycléiert, an nëtzlos, wann en Laptop geklaut gouf.
client-deny ass eng aner Zort Entscheidung. Et gëtt normalerweis vun engem Authentifikatiouns- oder client-connect-Hook ausgestallt an ofleent d'Sitzung mat engem Grond, dofir passt et zu enger Politik, déi eng Anmeldung ofleent, an net zu enger, déi eng Verbindung ënnerbricht. D'Dokumentatioun warnt och, datt eng Oflehnung, déi wärend enger TLS-Renegotiatioun ausgestallt gëtt, de renegotiséierte Schlëssel ongülteg mécht, wärend déi bestehend Sitzung bis zum zouenen Iwwergangsfenster ka weiderlafen. Wann d'Ufuerderung ass, datt de Client just elo fort ass, ass déi dokumentéiert Äntwert client-kill.
Dauerhaft Ewechhuele läit ënner all dësem. Zréckzitt d'Zertifikat a suergt dofir, datt crl-verify op eng Lëscht weist, déi de Server tatsächlech nei lued, deaktivéiert d'clientspezifesch Konfiguratiounsdatei am ccd-Verzeechnis oder deaktivéiert de Kont an deem Backend, deen den Authentifikatiounshook ufrot. Eng Zréckzuch ass och net direkt: mat de Standardastellunge vun reneg-sec kann eng etabléiert Sitzung weiderlafen, bis se sech renegotiséiert, dofir ergänze sech d'Sitzungsaktioun an d'Authentifikatiounsaktioun, si sinn keng Alternativen.
Ass de Verwaltungssocket fräi?
D'Verwaltungsinterface bedéngt ee Client gläichzäiteg. Wann eng GUI oder en Iwwerwaachungsdaemon d'Verbindung schonn hält, kann Äre Skript sech net dernieft ukoppelen, a jee no Client kënnt Dir déi bestehend erausdrécken, amplaz propper ze scheiteren. Säi Passwuert reest an der Kloertext iwwer dee Socket, dofir gehéiert et op eng lokal Adress oder en Unix-Socket, ni op eng ëffentlech Interface.
Wann Dir de Socket net huelen kënnt, hutt Dir nach Méiglechkeeten, an se sinn all méi lues. Loosst d'éischt d'Sitzung vun der GUI, wann Dir se kontrolléiert, oder akzeptéiert de Wee iwwer d'Authentifikatiounsschicht a waart op déi nächst Renegotiatioun. Wat Dir net sollt maachen, ass den Déngscht nei ze starten, fir ee Client lass ze ginn, well dat och all aner Sitzungen op en Enn bréngt a d'Beweiser vun der Statusdatei fir dës zerstéiert.
D'Reiefolleg, déi ech op engem liewege Server lafe loossen
Koppelt Iech un, liest den aktuellen Zoustand, handelt op der ID, déi Dir just geliest hutt, a liest se dann nach eng Kéier. Wäerter, déi aus engem Dokument kopéiert goufen, sinn deene meeschte Wee, fir déi falsch Persoun ëmzebréngen.
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 goneDen Numm an d'Nummer hei uewen sinn Platzhalter, an IDen ginn nei benotzt, nodeems aner Clienten sech ofgekoppelt hunn. Bestätegt, datt d'Rei feelt, ier Dir eppes als fäerdeg opschreift, a kontrolléiert, datt sech d'Zuel vun de verbonnene Clienten ëm een a net ëm méi beweegt huet.
Bestätegt, datt en fort bliwwen ass
Notéiert de common name, d'Tunneladress, d'baussenzeg Adress an d'Minutt vum Ewechhuelen. Wann dee selwechte common name eng Minutt méi spéit nees opdaucht, huet d'Sitzungsaktioun geschafft an d'Authentifikatiounsschicht net, wat eng komplett aner Reparatur ass wéi bei engem Kommando, deen ni gewierkt huet.
Test dann vun der Clientsäit. En zréckgezunn Zertifikat sollt beim nächsten Handshake feelen; wann et sech nach verbënnt, gëtt d'CRL guer net geliest, an dat ass d'Entdeckung, déi et wäert ass ze mellen. Wielt d'Aktioun no deem, wat Dir musst ophalen, bestätegt mat engem zweete status, a reparéiert d'Authentifikatiounsschicht, wann d'Äntwert länger misst halen wéi d'Sitzung.