Die meisten lesen eine .ovpn-Datei wie die Einstellungsseite eines Routers: Adressen, Routen, eine Liste von Verschlüsselungen. Der Teil, der Code ausführt, steht nahe am Ende, neben Direktiven, die nach Klempnerarbeit aussehen, und er läuft mit welchen Rechten der Client auch immer schon hat. Das ist die Lücke, die ein nachlässiges oder bösartiges Profil ausnutzt, und es ist auch die Lücke, die aus einem hilfreichen DNS-Helfer drei Wochen später ein Supportproblem macht. Die Ereignisdirektive, die Sicherheitsstufe und der Eigentümer der Datei entscheiden, was passieren kann; der Inhalt des Skripts entscheidet, was tatsächlich geschieht. Lesen Sie alle vier, bevor Sie sich verbinden.

Ein Profil, das einen Helfer startet, ist ein Programm, keine Einstellungsdatei

Direktiven wie route und dhcp-option beschreiben Zustand, den der Client herstellen soll, und der Client behandelt sie als Daten. Ein up-Skript ist anders: Der Client startet es als Prozess und übergibt ihm eine Umgebung voller Verbindungsdetails, sodass alles, was sein Autor geschrieben hat, mit den Rechten Ihres Kontos läuft. Auf einem Laptop, auf dem der Benutzer Administrator ist, ist das eine breite Tür für eine Datei, die als Anhang oder als Einfügung aus einem Forumsthread ankam. Der Unterschied ist nicht stilistisch, es ist der Unterschied zwischen Konfiguration und Code.

Der Mythos, den es zu begraben gilt, ist, dass ein Profil nur Datenverkehr umleiten kann. Ein Helfer, der ip route add ausführt, und einer, der curl gegen einen entfernten Host ausführt, sind derselbe Mechanismus, und das Profil sieht von außen gleich aus. Nichts am Aussehen der Datei verrät, welchen Sie haben, deshalb muss die Prüfung bis zum Skript selbst reichen.

Was die Ausführung tatsächlich entscheidet und wie die freischaltenden Zeilen aussehen

Drei Dinge steuern einen Helfer: die Ereignisdirektive, die ihn benennt, die script-security-Stufe, die ihn erlaubt, und die eigene Umsetzung der Client-Plattform. Ein Profil kann einen Hook anfordern und trotzdem nichts geschehen sehen, weil ein mobiler Client oder ein abgespeckter Desktop-Build dieses Ereignis vielleicht gar nicht umsetzt. Ebenso sagt ein Profil, das mehr Berechtigung verlangt, als seine Funktion braucht, etwas über seine Herkunft. Eine Berechtigungsstufe ist eine Fähigkeit, keine Genehmigung. Die freischaltenden Zeilen sehen so aus, mit einem Pfad, der für Ihren steht.

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

Stufe 0 lehnt externe Programme ab, und Stufe 1, die Voreinstellung, erlaubt nur die eingebauten Programme des Clients, ein Hook braucht also 2 oder höher; Stufe 3 gibt es vor allem zur Übergabe alter Passwörter und sollte gemieden werden. Ein Profil mit einem Hook braucht sowohl die Direktive als auch diese Stufe, deshalb verdient eine Zeile nahe dem Ende der Datei dieselbe Prüfung wie der Zertifikatsblock. Die OpenVPN-Dokumentation listet die Berechtigungsstufen, und ihre Formulierung sollte man neben dem lesen, was das Profil tatsächlich verlangt.

Eigentum, Pfad und womit der Helfer gefüttert wird

Ein Profil, dem Sie vertrauen, das aber auf ein Skript zeigt, das ein anderes Konto überschreiben kann, ist keine vertrauenswürdige Regelung, denn die Prüfung von gestern beschreibt nicht mehr, was heute läuft. Prüfen Sie Eigentümer und Modus des Helfers und prüfen Sie, ob der konfigurierte Pfad auf die Datei zeigt, die Sie untersucht haben, und nicht auf einen Namen, den etwas anderes überschatten kann. Argumente und Umgebung verdienen denselben Blick: Der Client übergibt Verbindungsdetails an den Hook, und ein Helfer, der seine ganze Umgebung protokolliert, schreibt womöglich Anmeldedaten in ein Support-Ticket. Bevorzugen Sie eine dokumentierte Integration des Betreibers oder der Plattform gegenüber einem DNS-Skript, das aus einem unpassenden Beitrag kopiert wurde, denn zwei Resolver-Verwalter, die um dieselbe Datei streiten, erzeugen einen Fehler, der wie ein kaputtes VPN aussieht.

Wenn Sie einen fehlschlagenden Hook melden, redigieren Sie die Umgebung, bevor Sie sie irgendwo einfügen. Der Dump, der Ihnen beim Debuggen hilft, kann auch das Token tragen, das Sie authentifiziert.

Aufräumfehler zeigen sich, nachdem der Tunnel weg ist

Ein up-Helfer fügt Routen und Resolver-Einstellungen hinzu, und der down-Helfer soll sie wieder entfernen. Fehlt der down-Hook, schlägt er still fehl oder läuft er nie, weil der Client beendet wurde, überleben die Reste die Sitzung. Der Verkehr nimmt dann einen Weg, den niemand geplant hat, und Namen werden über einen Resolver aufgelöst, der hätte entfernt werden sollen, während der Tunnel selbst gesund aussieht. Diese Symptome treten nach dem Trennen auf, deshalb wird das Netzwerk verantwortlich gemacht statt das Profil.

Testen Sie den Abbau als eigenen Schritt: Tunnel hochfahren, Routen und Resolver notieren, Tunnel herunterfahren, dann bestätigen, dass beides weg ist. Ein Profil, das sauber verbindet, kann trotzdem Zustand hinterlassen, und ein Exit-Code null des Helfers beweist nicht, dass der Resolver dort gelandet ist, wo Sie denken.

Den Helfer prüfen und einen Ausweg behalten

Lesen Sie das Skript von Anfang bis Ende und suchen Sie drei Dinge: Befehle, die Rechte brauchen, fest kodierte Pfade, die es auf Ihrem System vielleicht nicht gibt, und jeden Netzwerkaufruf, den es macht. Sehen Sie dann, wie es scheitert, denn ein Helfer, der Fehler schluckt, macht aus einem Konfigurationsfehler ein Rätsel. Wenn Sie nicht in einem Satz sagen können, was das Skript tut und wer es ändern kann, sind Sie nicht bereit, es zu aktivieren. Ein Profil, das mehr Rechte verlangt, als dieser Satz braucht, ist das Signal anzuhalten.

Bewahren Sie das letzte funktionierende Profil und den Helfer, auf den es verwies, in geschütztem Speicher auf, mit beiden Versionen notiert, damit ein Rollback eine Kopie ist und kein Wiederaufbau im schlechtesten Moment. Existiert der Helfer nur für eine Distribution oder Client-Version, die ihn nicht mehr braucht, ziehen Sie ihn in der Konfiguration zurück, der die Einstellung gehört, statt Rechte zu erhöhen, bis die Fehler aufhören. Das ist der Ausweg: weniger bewegliche Teile, nicht mehr Berechtigung.

Ähnliche Artikel