Lucrul cu Capabilități Linux

Introducere

Capabilitățile Linux sunt atribute speciale în nucleul Linux care acordă procese și privilegii specifice executabile binare, care sunt rezervate în mod normal proceselor al căror ID de utilizator efectiv este 0 (Utilizatorul root, și numai utilizatorul root, are UID 0).

Acest articol va explica unele dintre capabilitățile disponibile, utilizările lor și cum să le setați și să le eliminați. Vă rugăm să rețineți că setarea funcțiilor pe executabile are potențialul de a compromite securitatea sistemului. Ca atare, ar trebui să luați în considerare testarea pe un sistem care nu este de producție înainte de a implementa capabilități în producție.

Cerințe preliminare

  • Un sistem Linux pe care aveți acces root (fie prin intermediul utilizatorului root, fie al unui utilizator cu acces sudo).

Explicaţie

În esență, obiectivul capabilităților este împărțirea puterii „rădăcinii” în privilegii specifice, astfel încât, dacă este exploatat un proces sau un binar care are una sau mai multe capacități, daunele potențiale sunt limitate în comparație cu același proces care rulează ca root.

Capabilitățile pot fi setate pe procese și fișiere executabile. Un proces rezultat din executarea unui fișier poate câștiga capabilitățile acelui fișier.

Capacitățile implementate pe Linux sunt numeroase și multe au fost adăugate de la lansarea inițială. Unele dintre ele sunt următoarele:

  • CAP_CHOWN: Modificați ID-ul de utilizator și ID-ul de grup al fișierelor
  • CAP_DAC_OVERRIDE: Anulează DAC (control de acces discreționar). De exemplu, vto ocolesc citirea / scrierea / executarea verificărilor de permisiuni.
  • CAP_KILL: Verifică permisiunile de ocolire pentru trimiterea de semnale la procese.
  • CAP_SYS_NICE: Creșteți aspectul proceselor ( O explicație a bunătății poate fi găsită aici )
  • CAP_SYS_TIME: Setați sistemul și ceasul hardware în timp real

Pentru lista completă, executați man 7 capabilities.

Capabilitățile sunt atribuite în seturi, și anume „permise”, „moștenitoare”, „eficiente” și „ambientale” pentru fire și „permise”, „moștenite” și „eficiente” pentru fișiere. Aceste seturi definesc diferite comportamente complexe, explicația lor completă este dincolo de sfera acestui articol.

Atunci când setăm capabilitățile pe fișier, vom folosi aproape întotdeauna „permis” și „eficient”, de exemplu CAP_DAC_OVERRIDE+ep. Observați +ep, care indică seturile menționate mai sus.

Lucrul cu funcțiile fișierelor

Pachetele obligatorii

Există două instrumente principale, getcapși setcapcare se pot vizualiza , respectiv , și a stabilit aceste atribute.

  • Pe Debian și Ubuntu, aceste instrumente sunt furnizate de libcap2-binpachet, care poate fi instalat cu:apt install libcap2-bin
  • Pe CentOS și Fedora, libcappachetul este necesar:yum install libcap
  • Pe Arch Linux, acestea sunt furnizate libcapși de:pacman -S libcap

Capacități de citire

Pentru a vedea dacă un fișier are o setare de capabilități, puteți rula pur și simplu getcap /full/path/to/binary, de exemplu:

 root@demo:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 root@demo:~# getcap /usr/bin/rcp
 /usr/bin/rcp = cap_net_bind_service+ep

Dacă doriți să aflați ce funcții sunt deja setate pe sistemul dvs., puteți căuta în întregul sistem de fișiere recursiv cu următoarea comandă:

getcap -r /

Datorită faptului că sistemele de fișiere virtuale (cum ar fi /proc) nu acceptă aceste operațiuni, comanda de mai sus va produce mii de erori, deci pentru o ieșire mai curată, folosiți următoarele:

getcap -r / 2>/dev/null 

Atribuirea și eliminarea capabilităților

Pentru a seta o anumită capacitate într-un fișier, utilizați setcap "capability_string" /path/to/file.

Pentru a elimina toate funcțiile dintr-un fișier, utilizați setcap -r /path/to/file.

Pentru demonstrație, vom crea un fișier gol în directorul curent, îi vom oferi o capacitate și îl vom elimina. Începeți cu următoarele:

root@demo:~# touch testfile
root@demo:~# getcap testfile

A doua comandă nu produce nici o ieșire, ceea ce înseamnă că acest fișier nu are nicio capacitate.

Apoi, setați o capacitate pentru fișier:

root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep

„CAP_CHOWN + ep” a fost folosit ca exemplu, dar oricare altul poate fi atribuit în acest mod.

Acum, eliminați toate funcțiile din testfile:

root@demo:~# setcap -r testfile
root@demo:~# getcap testfile

Din nou, nu va exista nicio ieșire, deoarece „CAP_CHOWN + ep” a fost eliminat.

Concluzie

Capabilitățile au numeroase utilizări potențiale și pot ajuta la întărirea securității sistemelor dvs. Dacă utilizați bitul SUID pe executabilii dvs., luați în considerare înlocuirea acestuia cu capacitatea specifică necesară.



Leave a Comment

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe