Dateiberechtigungen an Linux

Moien alleguer. Mir ginn aktiv an d'Aarbecht a preparéiere scho vill mächteg Starten am Januar. Ënnert anerem gouf d'Aschreiwung fir en neie Stream vu jidderee säi Liiblingscours ugekënnegt. "Administrateur Linux». Am Viraus vun de Start deele mir traditionell Iwwersetzunge vun nëtzlecht Material.

Dateiberechtigungen an Linux

Datei Permissiounen bidden eng sécher Alternativ zu SUID Ausféierbaren, awer kënnen am Ufank e bësse konfus schéngen.


Mir all wëssen, datt binären SÜDEN sinn schlecht Entscheedung aus Sécherheetssiicht. Glécklech, wann Är Uwendung e puer limitéiert Privilegien erfuerdert, gëtt et e méi effiziente Wee genannt Fichier Permissiounen.

Ech spueren Iech e bëssen Zäit wann Dir wëllt vermeiden den Artikel hei uewen am Detail ze liesen: Am Wesentlechen erlaben Dateierechter Prozesser déi als Root lafen an dofir erlaabt sinn eppes ze maachen fir gewësse Fäegkeeten ze behalen, limitéiert dëser Lëschtwa se Privilegien falen a vun engem onprivilegéierte Benotzer lafen. Dëst bedeit datt wann en Ugräifer et fäerdeg bréngt e Prozess mat engem Pufferiwwerfluss oder aneren Ausnotzen ze kompromittéieren, se net fäeg sinn vun soss eppes ze profitéieren wéi bestëmmte minimale Privilegien déi de Prozess tatsächlech brauch.

Rechter si super fir Servicer, déi normalerweis ëmmer als Root lafen, awer wat ass mat Kommandozeilen-Utilities? Glécklecherweis gëtt dat och ënnerstëtzt, virausgesat datt Dir déi richteg Utilities installéiert hutt. Wann Dir benotzt Ubuntuzum Beispill, braucht Dir e Pak libcap2-bin. Dir musst och en net-archaesche Kernel lafen (vun der Versioun 2.6.24).

Dës Funktiounen erlaben Permissiounen mat ausführbaren Dateien assoziéiert ze ginn, ähnlech wéi de SUID Bit ze setzen, awer nëmme fir e spezifesche Set vu Permissiounen. Utility setcap benotzt fir Permissiounen aus enger Datei ze addéieren an ze läschen.

Den éischte Schrëtt ass d'Permissiounen ze wielen déi Dir braucht. Fir d'Wuel vun dësem Artikel huelen ech un datt et e Netzwierkdiagnostool genannt gëtt tracewalk, déi fäeg sinn ze benotzen rau Sockets. Dëst erfuerdert normalerweis datt d'Applikatioun als Root leeft, awer wann Dir kuckt der Lëscht et stellt sech eraus, datt nëmmen Erlaabnis néideg ass CAP_NET_RAW.

Unzehuelen datt Dir am Verzeechnes sidd wou de Binär läit tracewalk, Dir kënnt dës Erlaabnis esou addéieren:

sudo setcap cap_net_raw=eip tracewalk

Ignoréieren de Suffix fir elo =eip fir Resolutioun, Ech schwätzen iwwer dat an e puer Sekonnen. Notéiert datt den Erlaabnisnumm a klenge Buschtawen ass. Dir kënnt elo kontrolléieren ob Dir Permissiounen richteg konfiguréiert hutt mat:

setcap -v cap_new_raw=eip tracewalk

Oder Dir kënnt all Permissiounen fir e bestëmmten Ausführbar oplëschten:

getcap tracewalk

Fir Referenz, kënnt Dir och all Permissiounen aus dem ausführbar ewechhuelen mat:

setcap -r tracewalk

Zu dësem Zäitpunkt sollt Dir fäeg sinn den Ausféierbar als onprivilegéierte Benotzer auszeféieren, an et sollt fäeg sinn mat roude Sockets ze schaffen, awer keng vun den anere Privilegien déi de Root Benotzer huet.

Also wat heescht dat komescht Suffix? =eip? Dëst erfuerdert e bësse Verständnis vun der Natur vun de Permissiounen. All Prozess huet dräi Sätz vun Permissiounen - effektiv, ierflecher an erlaabt:

  • Effektiv Permissiounen sinn déi, déi definéieren wat e Prozess tatsächlech ka maachen. Zum Beispill kann et net mat Matière Sockets këmmeren wann CAP_NET_RAW ass net am effektiven Set.
  • Verfügbar Permissiounen sinn déi, déi e Prozess erlaabt ass ze hunn, wann se se mat dem passenden Uruff freet. Si verhënneren datt e Prozess tatsächlech eppes mécht, ausser et gouf speziell geschriwwen fir déi Erlaabnis ze froen. Dëst erlaabt datt Prozesser geschriwwe ginn fir kritesch Permissiounen un den effektive Set ze addéieren nëmme fir d'Period wou se tatsächlech erfuerderlech sinn.
  • Ierflecher Permissiounen sinn déi, déi am zougängleche Set vum geschaafte Kand Prozess ierflecher kënne ginn. Während der Operatioun fork() oder clone() de Kannerprozess gëtt ëmmer eng Kopie vun den Permissiounen vum Elterendeel kritt, well et nach ëmmer déiselwecht Ausféierbar leeft op deem Punkt. En ierfleche Set gëtt benotzt wann exec() (oder gläichwäerteg) gëtt genannt fir déi ausführbar Datei mat enger anerer ze ersetzen. Zu dësem Zäitpunkt gëtt de verfügbare Set vum Prozess vum ierfleche Set maskéiert fir den zougängleche Set ze kréien deen fir den neie Prozess benotzt gëtt.

Also den Utility setcap erlaabt eis d'Permissiounen vun dësen dräi Sets onofhängeg fir e bestëmmten Ausführbar ze addéieren. Bedenkt datt d'Bedeitung vu Gruppen liicht anescht interpretéiert gëtt fir Dateierechter:

  • Verfügbar Datei Permissiounen sinn déi, déi ëmmer fir eng ausführbar Datei verfügbar sinn, och wann den Elterendeel, deen et genannt huet, se net hat. Si goufe fréier "gezwongen" Genehmegungen genannt.
  • Ierflecher Datei Permissiounen definéieren eng zousätzlech Mask déi och benotzt ka ginn fir Permissiounen aus dem Uruffprozess ze läschen. Si gëllen zousätzlech zum ierfleche Set vum Uruffprozess, sou datt d'Erlaabnes nëmmen ierflech ass wann et a béide Sätz existéiert.
  • Effektiv Datei Permissiounen sinn eigentlech nëmmen en eenzege Bit, net e Set, a wann et gesat gëtt, heescht et datt de ganze verfügbare Set och an den effektive Set vum neie Prozess kopéiert gëtt. Dëst kann benotzt ginn fir Permissiounen op Prozesser ze addéieren déi net speziell geschriwwe goufen fir se ze froen. Well et e bëssen ass, wann Dir et fir eng Erlaabnis setzt, muss et fir all Permissiounen agestallt ginn. Dir kënnt et als Legacy Bit denken, well et benotzt gëtt fir Permissiounen z'erméiglechen vun Uwendungen ze benotzen déi se net ënnerstëtzen.

Wann Dir Permissiounen via setcap dräi Buschtawen e, i и p bezitt op effektiv, ierflecher an zougänglech setzt bzw. Also, déi fréier Spezifizéierung:

sudo setcap cap_net_raw=eip tracewalk

... weist datt d'Resolutioun CAP_NET_RAW muss zu de verfügbaren an ierfleche Sets bäigefüügt ginn an datt den effektiven Bit muss och gesat ginn. Dëst wäert all virdru festgeluechte Permissiounen op der Datei iwwerschreiden. Fir méi Permissiounen gläichzäiteg ze setzen, benotzt eng komma-getrennt Lëscht:

sudo setcap cap_net_admin,cap_net_raw=eip tracewalk

Permissiounen Guide diskutéiert all dëst méi am Detail, awer hoffentlech huet dëse Post demystifizéiert wat e bësse lass ass. Et ginn nëmmen e puer Virschléi an Tricks fir ze ernimmen.

Als éischt funktionnéieren d'Dateifäegkeeten net mat Symlinks - Dir musst se op d'binär Datei selwer applizéieren (dh d'Zil vum Symlink).

Zweetens, si schaffen net mat interpretéiert Scripten. Zum Beispill, wann Dir e Python-Skript hutt, deen Dir d'Erlaabnes wëllt zouginn, musst Dir et dem Python Dolmetscher selwer zouginn. Natierlech ass dëst e potenziell Sécherheetsprobleem well dann all Skripte, déi mat deem Dolmetscher ausgefouert ginn, déi spezifizéiert Erlaabnes hunn, obwuel dëst nach ëmmer wesentlech besser ass wéi et SUID ze maachen. Déi heefegst Léisung schéngt ze sinn eng separat Ausféierbar an C oder gläichwäerteg ze schreiwen, deen déi néideg Operatiounen ausféiere kann an et aus engem Skript nennen. Dëst ass ähnlech wéi d'Approche benotzt vum Wireshark déi e Binär benotzt /usr/bin/dumpcap privilegiéiert Operatiounen auszeféieren:

$ getcap /usr/bin/dumpcap 
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip

Drëttens, Fichier Permissiounen sinn behënnert wann Dir eng Ëmfeld Variabel benotzt LD_LIBRARY_PATH aus offensichtleche Sécherheetsgrënn(1). Dat selwecht gëllt fir LD_PRELOAD, souwäit ech weess.

1. Zanter engem Angreifer kann offensichtlech eng vun de Standard Bibliothéiken ersetzen a benotzen LD_LIBRARY_PATHseng Bibliothéik ze zwéngen am Preferenz fir de System eent genannt ginn, an dofir seng eege arbiträr Code mat de selwechte Privilegien wéi der Opruff Applikatioun ausgefouert.

Dat ass alles. Méi Detailer iwwer de Coursprogramm fannt Dir op Webinar, deen de 24. Januar stattfënnt.

Source: will.com

Kaaft zouverlässeg Hosting fir Site mat DDoS Schutz, VPS VDS Server 🔥 Kaaft zouverléissegt Websäithosting mat DDoS-Schutz, VPS VDS Server | ProHoster