Stapelt net d'systemd-Häertung op den user-Ëmstig vun OpenVPN
Zwee Rezepter mat mannsten Rechter zesummen sinn net eng méi streng. Wielt, wien den Identitéitswiessel mécht, a kartéiert duerno d'Autoritéit iwwer de ganzen Liewenszyklus.
Zwee Rezepter mat mannsten Rechter, déi een un deen aneren ugepecht sinn, ginn net eng méi streng Deploiement. Een Modell léisst den Daemon mat Rechter starten an no der Initialiséierung op en onprivilegéierte Kont iwwergoen; deen aneren léisst de Servicemanager en zënter der éischter Instruktioun ënner enger limitéierter Identitéit starten. Béid schaffen eleng, a Kombinatioun entsteet dacks e Service, deen nach eng vun den zwou Aufgabe propper kann. De Rescht geet d'Entscheedung der Rei no duerch.
Zwee Modeller, een Eegentemer vum Wiessel
Den éischte Modell gehéiert zum Daemon. D'Gemeinschaftsversioun vum OpenVPN huet d'Optiounen user an group, déi d'Identitéit wiesselen, nodeems den Tunnel an d'Schlësselen ageriicht sinn, an persist-key zesumme mat persist-tun halen déi Ressourcen duerno nach brauchbar.
Den zweeten Modell gehéiert zum Servicemanager. Eng systemd-Astellong User= oder Group= entscheet, ënner wéi enger Identitéit de Prozess start, an d'Capability-Direktive entscheeden, wat en halen däerf. D'Wiel tëschent de Modeller ass eng Pakéierungsfro, ier se eng Sécherheetsfro ass, an de Paketbetreiber huet se schonn beäntwert. Är Aufgab ass et, déi Äntwert ze fannen, anstatt eng drëtt Optioun ze erféieren.
Béid si legitim. De Feeler ass, se als Schichte vun engem Design ze behandelen, well den zweete Modell den Identitéitswiessel vum éischten zu enger Operatioun maache kann, déi de Prozess net méi däerf ausféieren.
Entscheet, wou d'Identitéit sech ännert
Wann d'Unit schonn als speziellen Kont start, verlaangt eng Daemoninstruktioun, en anere Kont ze ginn, en setuid-Iwwergang, deen en häerte Service ni hätt solle maachen. De Feeler erschéngt als Berechtegungsfeeler beim Start an net als kloer Politikmessage. Et liest sech wéi eng fehlend Capability, wat d'Leit Richtung engem méi breeden Aschränkungsset dréckt anstatt op d'Identitéitsfro.
Liest, wat den installéierte Paket tatsächlech liwwert, ier Dir eppes ännert, och säin drop-in-Verzeechnis. Verschidden Unite loossen den eegenen Ëmstig vum Daemon bewosst ewech, well de Manager sech schonn drëm këmmert, an anerer verloossen sech op déi Optiounen fir de Wiessel no der Initialiséierung. Eng vun deenen zwee ewechhuelen, ouni ze wëssen, wéi ee Modell Dir geierft hutt, ass de Wee, wéi en funktionéierende Service ophält ze starten.
Schreift de gewielte Modell an enger Zeil op: Manager-eege oder Daemon-eege. All spéider Direktiv muss mat deem Saz iwwerenee stëmmen, an eng gemëscht Unit soll als Feeler an net als Kompromiss behandelt ginn.
Capabilityte si Limiten, keng Kaddoen
En Capability-Bounding-Set seet, wat e Prozess héchstens halen däerf. Et ass eng Plafong, an eng Capability do opzelëschten gëtt fir sech selwer näischt, dofir kann eng Unit mat engem grousszügegen Aschränkungsset nach ëmmer keen Tunnel opbauen.
Wat eng Capability tatsächlech an den Ambient-Set vun engem Service setzt, ass AmbientCapabilities=. D' systemd-Ausféierungsreferenz dokumentéiert déi zwou Direktiven getrennt, an deen Ënnerscheed erkläert de gréissten Deel vun de verwirrende Capability-Rotschléi am Netz.
Setzt eng Capability eréischt derbäi, nodeems déi feelend Operatioun se identifizéiert huet. E méi breeden Aschränkungsset verstoppt déi richteg Ursaach a léisst de Service méi privilegéiert wéi d'Design et virgesinn hat. Et mécht d'Unit och méi schwéier z'iwwerpréiwen, well d'Plafong d'Aarbecht net méi beschreift. Huelt déi zousätzlech Capability ewech, wann de richtige Feeler behuewen ass.
Kartéiert d'Autoritéit iwwer de Liewenszyklus
Lëscht op, wat de Prozess an all Etapp muss maachen: Start, stabilt Ëmfeld, Nei-Authentifikatioun an Ofbau. D'Uleeë vun der Schnëttstell, Routenännerungen, d'Liese vun engem geschützte Schlëssel an d'Opruffe vun engem Hëllefer geschéien net all am selwechten Ament oder ënner deene selwechten Ufuerderungen. Sortéiert d'Lëscht no Etapp, ier Dir se no Capability sortéiert.
Persistenzoptioune behalen Ressourcen iwwer Neiverhandlungen an hu kee Recht, dat ni gehalen gouf. E Schlëssel, deen de Prozess beim Start net liese kann, bleift och duerno onliesbar, wat d'Persistenzflagen och soen. D'Flagen behalen dat, wat schonn funktionéiert huet.
Benotzt e spezielle Kont anstatt en gedeelte. D'OpenVPN-Entwéckler warnen virun der Gewunnecht, nobody als allgemengt Beispill ze benotzen, well aner Servicer um Host vläicht schonn ënner deem Kont lafen an d'Isolatioun, déi Dir ze hutt mengt, net do ass.
Funktiounen, déi d'lokal Belaaschtung änneren, wéi Datenkanal-Offload oder e Build, deen anescht linkt, kënnen verréckelen, wéi eng Operatiounen néideg sinn. Iwwerpréift d'Kaart, wann de Paket sech ännert, net nëmmen wann eppes futt gaang ass.
Schreift de Plang op a behaalt Erhuelungszougang
En Deploiementsprotokoll soll de Manager, d'Startidentitéit, déi ugestrieft stabil Identitéit an all Bewilligung mat der Operatioun nennen, déi se erfuerdert. Dee Protokoll mécht déi nächst Ännerung iwwerpréifbar an net experimentell.
Halt Konsolenzougang verfügbar, wärend Dir ännert, well eng Unit, déi beim Start feelt, schwéier aus der Ferne ze reparéieren ass. Test en Neistart an en komplette Neistart, ier Dir d'Ännerung als fäerdeg bezeechent. Eng Unit, déi en Neistart iwwerlieft, kann nach ëmmer feelen, ier d'Netzwierk steet.
Erfolleg ass en verstanene Liewenszyklus mat mannster Autoritéit, net e Prozess, deen zoufälleg ënner engem Numm deen net root ass leeft.