Uvod
Preduvjeti
Obrazloženje
Rad s mogućnostima datoteka
Zaključak
Uvod
Sposobnosti Linuxa su posebni atributi u jezgri Linuxa koji procesima i binarnim izvršnim datotekama daju specifične privilegije koje su obično rezervirane za procese čiji je efektivni korisnički ID 0 (Root korisnik, i samo root korisnik, ima UID 0).
Ovaj članak će objasniti neke od dostupnih mogućnosti, njihovu upotrebu te kako ih postaviti i ukloniti. Imajte na umu da mogućnosti postavljanja izvršnih datoteka mogu ugroziti sigurnost vašeg sustava. Kao takav, trebali biste razmotriti testiranje na neproizvodnom sustavu prije implementacije mogućnosti u proizvodnji.
Preduvjeti
- Linux sustav na kojem imate root pristup (bilo putem root korisnika ili korisnika sa sudo pristupom).
Obrazloženje
U osnovi, cilj sposobnosti je podijeliti moć 'root' na specifične privilegije, tako da ako se iskorištava proces ili binarni program koji ima jednu ili više mogućnosti, potencijalna šteta je ograničena u usporedbi s istim procesom koji se izvodi kao root.
Mogućnosti se mogu postaviti na procese i izvršne datoteke. Proces koji je rezultat izvršavanja datoteke može dobiti mogućnosti te datoteke.
Mogućnosti implementirane na Linux su brojne, a mnoge su dodane od njihova izvornog izdanja. Neki od njih su sljedeći:
CAP_CHOWN: Izmijenite ID korisnika i ID grupe datoteka
CAP_DAC_OVERRIDE: Poništi DAC (diskrecijska kontrola pristupa). Na primjer, vto zaobilazi provjere dopuštenja čitanja/pisanja/izvršavanja.
CAP_KILL: Zaobiđite provjere dopuštenja za slanje signala procesima.
CAP_SYS_NICE: Podignite dobrotu procesa ( Objašnjenje lijeposti možete pronaći ovdje )
CAP_SYS_TIME: Postavite sustav i hardverski sat u stvarnom vremenu
Za cijeli popis pokrenite man 7 capabilities.
Mogućnosti su dodijeljene u skupovima, odnosno "dopušteno", "nasljedno", "učinkovito" i "ambijentno" za niti, te "dopušteno", "nasljedno" i "učinkovito" za datoteke. Ovi skupovi definiraju različita složena ponašanja, njihovo potpuno objašnjenje je izvan dosega ovog članka.
Prilikom postavljanja mogućnosti u datoteku, gotovo uvijek ćemo koristiti "dopušteno" i "učinkovito", na primjer CAP_DAC_OVERRIDE+ep. Obratite pažnju na +ep, koji označava gore spomenute skupove.
Rad s mogućnostima datoteka
Potrebni paketi
Postoje dva glavna alata, getcapa setcapkoji redom može pogledati i postaviti ove atribute.
- Na Debianu i Ubuntuu, ove alate nudi
libcap2-binpaket koji se može instalirati sa:apt install libcap2-bin
- Na CentOS-u i Fedori
libcappotreban je paket:yum install libcap
- Na Arch Linuxu ih također pružaju
libcap:pacman -S libcap
Sposobnosti čitanja
Da biste vidjeli ima li datoteka bilo kakav skup mogućnosti, jednostavno možete pokrenuti getcap /full/path/to/binary, na primjer:
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
Ako želite saznati koje su mogućnosti već postavljene na vašem sustavu, možete rekurzivno pretraživati cijeli datotečni sustav sljedećom naredbom:
getcap -r /
Zbog činjenice da virtualni datotečni sustavi (kao što je /proc) ne podržavaju ove operacije, gornja naredba će proizvesti tisuće pogrešaka, pa za čišći izlaz koristite sljedeće:
getcap -r / 2>/dev/null
Dodjela i uklanjanje sposobnosti
Za postavljanje određene mogućnosti na datoteci, koristite setcap "capability_string" /path/to/file.
Da biste uklonili sve mogućnosti iz datoteke, koristite setcap -r /path/to/file.
Za demonstraciju ćemo stvoriti praznu datoteku u trenutnom direktoriju, dati joj mogućnost i ukloniti je. Započnite sa sljedećim:
root@demo:~# touch testfile
root@demo:~# getcap testfile
Druga naredba ne proizvodi nikakav izlaz, što znači da ova datoteka nema nikakve mogućnosti.
Zatim postavite mogućnost za datoteku:
root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep
"CAP_CHOWN+ep" je korišten kao primjer, ali bilo koji drugi se može dodijeliti na ovaj način.
Sada uklonite sve mogućnosti iz testfile:
root@demo:~# setcap -r testfile
root@demo:~# getcap testfile
Opet, neće biti izlaza, jer je "CAP_CHOWN+ep" uklonjen.
Zaključak
Mogućnosti imaju mnogo potencijalnih upotreba i mogu pomoći da se pojača sigurnost vaših sustava. Ako koristite SUID bit na svojim izvršnim datotekama, razmislite o tome da ga zamijenite potrebnom specifičnom sposobnošću.