Den Daemon schreift e chroot-Feeler an de Profil gesäit schonn génereux aus, dofir ass déi verlockend Léisung eng Padregel méi breet ze maachen an nei ze starten. Dat ännert meeschtens näischt, well chroot duerch eng Berechtegung kontrolléiert gëtt, déi de Profil ni konnt iwwerginn. Fir ze entscheeden, wéi eng Schicht ee ufässt, brauch een dräi bëlleg Prüfungen: wat de Prozess dierf halen, wat d'Politik erlaabt, a wat den Startprogramm ewechgeholl huet, éier déi zwou iwwerhaapt gezielt hunn.

Zwou getrennte Paarten, an nëmmen eng gehéiert AppArmor

chroot brauch CAP_SYS_CHROOT an deem Benotzernummraum, an deem de Prozess leeft. Dat ass eng konventionell Linux-Berechtegung, déi de Kernel préift, éier den Opruff mat Paden eppes mécht. Getrennt dovun kann e forcéierende AppArmor-Profil d'Fäegkeet refuséieren, och wann de Prozess se huet, well verbindlech Politik zousätzlech zu de Umeldungsdaten a net amplaz vun hinnen consultéiert gëtt. Den Ënnerscheed ass an der Praxis wichteg: déi zwou Schichte liewen an ënnerschiddleche Fichieren an normalerweis ënnerhalen ënnerschiddlech Leit se.

Déi zwou Paarte schléissen mat dem selwechten errno feel. Béid produzéieren EPERM, a béid erschéngen als allgemeng Berechtegungs-Beschwéier am Daemon-Log, dofir verschwënnt esou vill Zäit beim Erroden vum Profilinhalt. D'Padregel, déi Dir wollt bäisetzen, kontrolléiert de Fichier-Zougrëff nodeems chroot gelungen ass; si huet näischt domat ze dinn, ob d'Operatioun iwwerhaapt erlaabt ass.

Eng drëtt Paart steet iwwer béide. Wann de Servicemanager oder eng Ëmmantelung de Prozess ouni d'Fäegkeet an hirem Grenzset ugefaangen huet, kann keng AppArmor-Ännerung se zréckbréngen, an d'Fäegkeeten an de Profil bäizesetzen dokumentéiert just eng Absicht, déi de Kernel net respektéiere wäert.

Lies de Berechtegungszoustand, éier s d'Politik änderst

Fänk mam lafende Prozess un an net mat der Konfiguratioun, déi Dir fir aktiv halt. D'Statusfichier weist fënnef Fäegkeetsmasken an de no-new-privileges-Flag, a si beäntweren ënnerschiddlech Froen:

grep -E '^(CapInh|CapPrm|CapEff|CapBnd|CapAmb|NoNewPrivs):' /proc/$(pidof openvpn)/status
sudo aa-status | grep -i openvpn

CapEff ass de Set, deen für den Opruff zielt: eng Fäegkeet, déi am CapBnd ass awer am CapEff feelt, ass vum Plafong erlaabt an net aktuell gehal. CapAmb ass wichteg, wann d'Binär net am übleche setuid-Sënn privilegéiert ass, well Ëmfeld-Fäegkeeten de Wee sinn, wéi e Service eng Berechtegung iwwer exec hält ouni Fichier-Fäegkeeten. CapInh huet Bits, déi iwwer exec geierft kënne ginn, awer nëmmen wann de verierfbare Set vum ausgefouerte Fichier et erlaabt, dofir gëtt e Bit do eleng näischt.

Da bestäteg, wéi ee Profil wierklech ugehaangen ass. E Prozess kann duerch en Profilnumm agespaart sinn, deen Dir net erwaart hat, besonnesch wann eng Distributioun hir eege Unit-Datei an hire Profil zesumme verschéckt, an /proc/PID/attr/current liesen entscheet dat an enger Linn. Ären editéierte Fichier mam Profil vergläichen, deen de Kernel mellen, ass den Ënnerscheed tëscht d'Ursaach fëschen an eng Datei editéieren, déi keen invitéiert.

Setz d'Fäegkeetsregel nëmmen derbäi, wann d'Auditspur dat seet

Kernel- an Auditspueren nennen d'Schicht, déi refuséiert huet. Sicht eng Refusatioun, déi d'Operatioun capable an den Numm sys_chroot dréit, zesumme mam Profil, deen se ervirbruecht huet. Wann dee Rekord existéiert, hat de Prozess d'Fäegkeet schonn an AppArmor huet se refuséiert, an déi geriicht Ännerung ass eng Fäegkeetsregel am richtege Profil:

capability sys_chroot,

Hal se als Fragment am Profil, deen tatsächlech ugehaangen ass, a préif d'Schlësselwuert géint d'Referenz vun den apparmor.d-Profiler amplaz eng Regel aus engem onverbonnene Guide ze kopéieren. Se an eng gedeelt include ze setzen gëtt se all agespaarte Programm, deen déi Datei eropluet, a de Profil op complain ëmzestellen verstoppt déi nächst Refusatioun amplaz dës ze léisen. D'Profilsregel hëlt eng Politik-Refusatioun ewech; si fabrizéiert keng Berechtegung, dofir wäert e Prozess, deen ni CAP_SYS_CHROOT a sengem effektive Set hat, och mat der Regel feelen.

Wann den Audit-Rekord iwwerhaapt keng AppArmor-Refusatioun weist, hale mam Profil op ze editéieren. Dir kuckt op e Problem mat den Umeldungsdaten, an déi reschtlech Aarbecht ass an der Unit-Datei oder am Eltereprozess, net an der Politiksprache.

De Servicemanager hält säin eegene Plafong

systemd setzt fir all Service e Grenzset vu Fäegkeeten, an am Standard ass dee Set schmuel. Wat do ausgeschloss ass, ass fir de Prozess net disponibel, egal wat de Profil seet, dofir kënnen haart gemaachte Uniten an enger Operatioun feelen, déi funktionéiert huet, wéi den Daemon vu Hand gestart gouf. Déi relevant Direktiven sinn an der Unit liicht ze liesen a liicht z'iwwersinn, wann d'Applikatioun de Feeler mellt. Drop-in-Dateien aus engem Distributiounspaket sinn déi üblech Quell vun engem Plafong, un dee sech kee erënnert, en konfiguréiert ze hunn.

De Plafong héijen an d'Fäegkeet ginn sinn zwou Ännerungen, net eng. En Andrag am Grenzset seet, datt de Prozess d'Fäegkeet dierf halen; en setzt se net an den effektive Set, an NoNewPrivs kann eng spéider Héichsetzung verhënneren, och wann alles anescht passt. Setz nëmmen dat derbäi, wat d'Operatioun brauch, hal de Rescht vun der Haartmachung an a Widderstand géint de Kuerzwee, all Fäegkeet ze ginn, fir een Opruff duerchzebréngen.

D'Reiefolleg ass hei och wichteg. Änner fir d'éischt de Plafong vun der Unit, bestäteg, datt CapEff elo de Bit enthält, an entscheet dann, ob AppArmor nach refuséiert. Béid Ännerungen op eemol ze maachen, léisst Iech nees roden, wann de Feeler weiderhi besteet.

Nodeems d'Refusatioun verschwonnen ass, préif de Prisong selwer

En erfollegräiche chroot verréckelt d'Wuerzel, dofir gëtt all Pad, deen den Daemon duerno beréiert, am neie Bam opgeléist. Eng feelend Konfiguratioun, en absenten Apparat-Knäppchen oder en Zertifikatsverzeechnis, dat net kopéiert gouf, erschéngt elo als Dateifeeler, an dee Feeler ass e Problem vum Layout an net vun der Fäegkeet. Liest den nächsten Event amplaz eng aner breet Erlaabnis derbäizesetzen. D'Verrécklung ännert och, wat en relativ Pad bedeit, dofir insistéieren d'Haartmachungsguide op absolute Paden an der Daemon-Konfiguratioun.

Et hëlleft och, sech ze erënneren, wat chroot net mécht. Et ass eng Padgrenz, keng Sandbox: e Prozess, deen d'Berechtegung behält, kann entkommen, dofir gëtt d'Fäegkeet normalerweis nom Opruff fale gelooss an dofir soll d'Aspärung ëm den Daemon bleiwen. Den AppArmor-Profil, de Grenzset vu Fäegkeeten an d'Dateisystem-Aspärungen zesummen ze halen ass den Zweck vun dëser Übung, net e Rescht, deen ewechgeholl gëtt, wann de Service start.

D'Entscheedungsregel ass kuerz. Wann den Audit-Rekord AppArmor nennt, setz eng Fäegkeetsregel an den ugehaangene Profil. Wann den effektive Set eidel ass, fësch de Plafong vun der Unit an d'Reiefolleg vum Fale vun der Berechtegung. Wann de Profil net deen ass, deen Dir editéiert hutt, hale mam Editéieren op a fannt den echten.

Ähnlech Artikelen