Prezantimi
Parakushtet
Shpjegim
Puna me aftësitë e skedarëve
konkluzioni
Prezantimi
Aftësitë e Linux-it janë atribute të veçanta në kernelin Linux që u japin proceseve dhe ekzekutuesve binare privilegje specifike që zakonisht rezervohen për proceset, ID-ja e përdoruesit efektiv i të cilave është 0 (Përdoruesi rrënjësor, dhe vetëm përdoruesi rrënjë, ka UID 0).
Ky artikull do të shpjegojë disa nga aftësitë e disponueshme, përdorimet e tyre dhe mënyrën e vendosjes dhe heqjes së tyre. Ju lutemi vini re se vendosja e aftësive në skedarët e ekzekutueshëm ka potencialin të rrezikojë sigurinë e sistemit tuaj. Si i tillë, duhet të konsideroni testimin në një sistem jo-prodhues përpara se të zbatoni aftësitë në prodhim.
Parakushtet
- Një sistem Linux në të cilin keni akses në rrënjë (ose nëpërmjet përdoruesit rrënjë ose një përdoruesi me akses sudo).
Shpjegim
Në thelb, qëllimi i aftësive është të ndajnë fuqinë e 'rrënjës' në privilegje specifike, në mënyrë që nëse një proces ose binare që ka një ose më shumë aftësi shfrytëzohet, dëmi i mundshëm është i kufizuar kur krahasohet me të njëjtin proces që funksionon si root.
Aftësitë mund të vendosen në procese dhe skedarë të ekzekutueshëm. Një proces që rezulton nga ekzekutimi i një skedari mund të fitojë aftësitë e atij skedari.
Aftësitë e zbatuara në Linux janë të shumta dhe shumë janë shtuar që nga lëshimi i tyre origjinal. Disa prej tyre janë si më poshtë:
CAP_CHOWN: Bëni ndryshime në ID-në e përdoruesit dhe ID-në e grupit të skedarëve
CAP_DAC_OVERRIDE: Anuloni DAC (Kontrolli i Aksesit Diskrecionar). Për shembull, vto anashkalojë kontrollet e lejes së leximit/shkrimit/ekzekutimit.
CAP_KILL: Anashkaloni kontrollet e lejeve për dërgimin e sinjaleve te proceset.
CAP_SYS_NICE: Rritni bukurinë e proceseve ( Një shpjegim i bukurisë mund të gjendet këtu )
CAP_SYS_TIME: Vendosni sistemin dhe orën e harduerit në kohë reale
Për listën e plotë, ekzekutoni man 7 capabilities.
Aftësitë caktohen në grupe, përkatësisht "të lejuara", "të trashëgueshme", "efektive" dhe "ambient" për thread-at dhe "të lejuara", "të trashëgueshme" dhe "efektive" për skedarët. Këto grupe përcaktojnë sjellje të ndryshme komplekse, shpjegimi i plotë i tyre është përtej qëllimit të këtij artikulli.
Kur vendosim aftësi në skedar, ne pothuajse gjithmonë do të përdorim "të lejuara" dhe "efektive", për shembull CAP_DAC_OVERRIDE+ep. Vini re +ep, që tregon grupet e lartpërmendura.
Puna me aftësitë e skedarëve
Paketat e nevojshme
Ka dy mjetet kryesore, getcapdhe setcaptë cilat respektivisht mund të shikoni dhe të vendosur këto atribute.
- Në Debian dhe Ubuntu, këto mjete ofrohen nga
libcap2-binpaketa, e cila mund të instalohet me:apt install libcap2-bin
- Në CentOS dhe Fedora,
libcappaketa është e nevojshme:yum install libcap
- Në Arch Linux, ato ofrohen gjithashtu nga
libcap:pacman -S libcap
Aftësitë e leximit
Për të parë nëse një skedar ka ndonjë grup aftësish, thjesht mund të ekzekutoni getcap /full/path/to/binary, për shembull:
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
Nëse dëshironi të zbuloni se cilat aftësi janë vendosur tashmë në sistemin tuaj, mund të kërkoni të gjithë sistemin e skedarëve në mënyrë rekursive me komandën e mëposhtme:
getcap -r /
Për shkak të faktit se sistemet virtuale të skedarëve (siç është /proc) nuk i mbështesin këto operacione, komanda e mësipërme do të prodhojë mijëra gabime, kështu që për një dalje më të pastër përdorni sa vijon:
getcap -r / 2>/dev/null
Caktimi dhe heqja e aftësive
Për të vendosur një aftësi të veçantë në një skedar, përdorni setcap "capability_string" /path/to/file.
Për të hequr të gjitha aftësitë nga një skedar, përdorni setcap -r /path/to/file.
Për demonstrim ne do të krijojmë një skedar bosh në drejtorinë aktuale, do t'i japim një aftësi dhe do ta heqim atë. Filloni me sa vijon:
root@demo:~# touch testfile
root@demo:~# getcap testfile
Komanda e dytë nuk prodhon asnjë dalje, që do të thotë se ky skedar nuk ka ndonjë aftësi.
Më pas, vendosni një aftësi për skedarin:
root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep
"CAP_CHOWN+ep" është përdorur si shembull, por çdo tjetër mund të caktohet në këtë mënyrë.
Tani, hiqni të gjitha aftësitë nga testfile:
root@demo:~# setcap -r testfile
root@demo:~# getcap testfile
Përsëri, nuk do të ketë dalje, sepse "CAP_CHOWN+ep" u hoq.
konkluzioni
Aftësitë kanë shumë përdorime të mundshme dhe mund të ndihmojnë për të forcuar sigurinë e sistemeve tuaja. Nëse përdorni bitin SUID në ekzekutuesit tuaj, merrni parasysh ta zëvendësoni atë me aftësinë specifike të nevojshme.