Eng laang Lafzäit beweist nëmmen, datt de Start mat deene Privilegien gelungen ass, déi den Daemon an deem Ament hat. D’Feeler, déi hei zielen, kommen méi spéit: en neie Client verbënnt sech, eng Widderrufflescht gëtt ersat, en Hëllefsskript muss eng Fichier schreiwen. Jiddwereng vun hinne ass en neit Opmaachen duerch de Kont ouni Privilegien, mat senger eegener Berechtegungsfro a senger eegener Fehlermeldung. Dräi Entscheidungen trennen eng Konfiguratioun, déi weider schafft, vun enger, déi beim nächsten Evenement versoe géif.

Trennt dat, wat fréi geluede gouf, vun deem, wat méi spéit opgemaach gëtt

En Deskriptor ass en Hannergrëff op eng oppe Fichierbeschreiwung, an de Zougangsmodus gouf festgeluecht, wéi déi Beschreiwung erstallt gouf. De Benotzer vum Prozess méi spéit ze wiesselen hëlleft de Hannergrëff net zou, dofir schafft eng Schlësselfichier, déi als root gelies gouf, och no der Reduktioun. De Modus ännert sech och net: en Hannergrëff, dee fir Liesen opgemaach gouf, gëtt net schreifbar, an en schreifbaren Hannergrëff gëtt net zréckgezunn, just well de Kont seng Rechter um Wee verluer huet. Dës zwou Tatsaachen erklären de gréissten Deel vum iwwerraschende Verhalen an dëse Rapporten.

Déi aner Hallschent ass Erënnerung. Den Daemon kann en Zertifikat analyséieren, dat analyséiert Material behalen an d’Fichier zoumaachen; wat am Gebrauch bleift, sinn Daten, net eng oppe Fichier. Dofir beweist weideren Trafik weder datt en Deskriptor oppe ass nach datt den Numm vum Wee erreechbar ass. Et beweist just, datt dat néidegt Material fir déi aktuell Sitzung fréier kritt gouf.

En spéideren Opmaachen ass eng aner Transaktioun. Et leeft ënner den aktuellen Umeldungsdaten, dem aktuelle Sécherheetskontext an der aktueller Montéierungsvue, dofir kann en Wee, dee beim Start liesbar war, bei der nächster Verbindung ofgeleent ginn. D’Rotatioun bäit eng Fal: eng nei Fichier iwwer dee selwechten Numm ze schreiwen hëlleft en existéierenden Deskriptor um ale Objet befestegt, dofir kann en Neillueden erfollegräich ausgesinn, während den Daemon nach de virege Inhalt benotzt. Vergläicht d’Inode, déi de Prozess huet, mat där op der Plack, ier Dir un eng Rotatioun gleeft.

Nennt déi dräi Runtime-Liesungen a wéini jiddwereng geschitt

Dräi Ressourcen gi gewéinlech vill méi spéit wéi d’Initialiséierung opgemaach, an si versoen zu verschiddenen Zäitpunkten. D’Konfiguratiounsfichier vun engem bestëmmte Client gëtt gelies, wéi dee Client sech verbënnt, dofir kann et fir ee Benotzer briechen, während all déi aner weiderlafen. Widderruffdaten ginn bei der Peer-Authentifikatioun an nach eng Kéier beim Ersatz vun der Fichier gekuckt. En temporären Dossier gëtt just beréiert, wéi e Skript oder en Zousaz eppes schreift.

Keen vun den dräi gehéiert zum Startwee, dofir kann en Server, dee Wochen laang gesond war, bei der nächster Verbindung versoen. D’Kategorie nennt och den Eegentemer vun der Korrektur: déi éischt zwou sinn Liesrechter op der Konfiguratioun ënner dem Daemonkont, an déi drëtt ass eng schreifbar Plaz mat engem schmuele Zweck.

Path reopened laterWhat triggers the openFirst sign when it fails
Client configuration fileA connection for that client identityOne client rejected while others connect
Revocation dataPeer authentication, including after replacementRevoked and valid peers both refused
Script or plugin temporary directoryA helper needs to create a fileThe helper exits with a path error

persist-key äntwert op eng méi schmuel Fro, wéi déi meescht Leit unhuelen. Et hält d’Schlësselfichier iwwer déi dokumentéiert SIGUSR1- a ping-restart-Resets op, an et mécht näischt fir CCD-Fichieren, Widderruffdaten, Hëllefsprogrammer oder e komplett Neistart vum Prozess. Déi verfollegen nach ëmmer hir eege Weeër vum Opmaachen, ënner deem Kont, deen deemools leeft.

Bestätegt de Kont an d’Vue, déi e wierklech huet

Frot den Daemon, dee leeft, wéi ee Kont en notzt, amplaz der Unit-Fichier ze vertrauen, a vergläicht dunn d’Äntwert mat deem, wat d’Unit festleet. Eng Differenz ass dat Éischt, wat misst geléist ginn, well all spéider Berechtegungspréifung als deen leeft, deen de Prozess wierklech ass. Gitt duerno de Wee Komponent fir Komponent duerch; d’Duerchgank gëtt op all Niveau bewäert, dofir bleift eng liesbar Fichier an engem Dossier, deen een net duerchkënnt, onliesbar. De leschte Fichiersmodus ass déi lescht Fro, net déi éischt.

Nummraim a Sandkëschte vu Servicer bäien Grenzen, déi Proprietéit a Modusbits net beschreiwen. E Wee, deen an Ärer Shell ze gesinn ass, kann an engem chroot, engem Montéierungs-Nummraum oder enger Unit, déi Heemdossieren verstoppt, feelen oder nëmme liesbar sinn. Sécherheetsmoduler bäien nach eng Schicht, dofir kann eng Fichier, déi liesbar ausgesäit, beim Opmaachen nach ofgeleent ginn.

ps -o user:12,pid,args -C openvpn
systemctl show -p User -p Group -p ProtectHome -p RootDirectory [email protected]
sudo -u openvpn namei -l /etc/openvpn/ccd/alice

E gelungene Lies an der Shell vum Administrateur testet keng vun dëse kombinéierte Bedingunge. Loosst d’Préifung als Daemonkont lafen, mat dem selwechten Nummraum an der selwechter Sandkëscht, oder akzeptéiert, datt d’Resultat Är Shell beschreift an net de Server. Den drëtte Befehl ass déi bëlleg Versioun vun deem Test: en dréckt de Modus vun all Komponent aus a versoe beim éischten, deen den Daemonkont net duerchkënnt.

Gitt dem Runtime-Schreiwen en eegenen Dossier

Liesen ass just d’Halschent vum Inventaire. En Hëllefsskript brauch vläicht eng Statusfichier, en Zousaz muss vläicht en Zoustand niewent senger Konfiguratioun schreiwen, an déi Schreiwen sinn net ofgedeckt, wann een de Konfiguratiounsbeem schreifbar mécht. Gitt dem konkreten Dossier déi Schreifberechtegung, déi seng Funktioun brauch, mat engem Eegentemer an engem Modus, deen Dir erkläre kënnt. Preferéiert nëmme Lieszougang fir alles, wat nëmme gelies gëtt.

Halt d’Rechter vum private Schlëssel getrennt vun de Politikfichieren. E Schlëssel, deen no engem Reset miss gelies ginn, huet eng aner Fuerderung wéi eng Clientfichier, déi bei all Verbindung gelies gëtt, an ee luese Modus fir béid gëtt méi Zougang wéi de Problem freet. En eegene Daemonkont mat enger enker Proprietéit ass méi einfach ze préifen wéi eng breet Grupp. Wann de Schlëssel Resets muss iwwerstoen, persist-key hëlt et d’Neilliesen ewech, amplaz den Dossier ze vergréisseren.

Entscheet no deem Evenement, wat Dir kënnt reproduzéieren

En live Tunnell beweist een eenzegen Wee duerch de Code. Dat Evenement, wat d’Fichier brauch, ass den eenzegen Test, deen dat Opmaachen deckt, wat Iech wichteg ass, sief et eng nei Clientverbindung, eng ersate Widderruff-Fichier, en erlaabte sanften Reset oder en geplangten Neistart. Wielt d’Evenement, loosst et lafen a behält den éischte Feeler amplaz vum leschten.

Fir en sanften Reset weisen een Signal an de Log vun der Unit, ob de Schlëssel nach eng Kéier gelies gouf. Schéckt d’Signal a liest duerno déi lescht Zeilen, déi d’Unit geschriwwen huet:

systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pager

Schléisst net doraus, datt en kompromittéierten Daemon keng Fichieren méi ännere kann, just well d’Privilegien erofgesat goufen. Wat en nach kann, hänkt vun de verbleiwenen Umeldungsdaten, senge Fäegkeeten, den Dossieren, an déi en schreiwe kann, an all schreifbarem Deskriptor of, deen en nach huet. D’Privilegien-Reduktioun enkelt d’Autoritéit, an den Inventaire vun de Runtime-Opmaachungen weist wéi wäit. Schreift déi Grenz niewent d’Konfiguratioun, sou datt déi nächst Persoun se net nach eng Kéier muss entdecken.

Ähnlech Artikelen