Bevezetés
Előfeltételek
Magyarázat
Fájlképességekkel való munka
Következtetés
Bevezetés
A Linux képességei a Linux kernel speciális attribútumai, amelyek a folyamatokhoz és a bináris végrehajtható fájlokhoz specifikus jogosultságokat biztosítanak, amelyek általában olyan folyamatok számára vannak fenntartva, amelyek tényleges felhasználói azonosítója 0 (a root felhasználónak és csak a root felhasználónak UID 0-a van).
Ez a cikk ismerteti néhány elérhető képességet, azok felhasználását, valamint a beállításukat és eltávolításukat. Kérjük, vegye figyelembe, hogy a futtatható fájlok képességeinek beállítása veszélyeztetheti a rendszer biztonságát. Ezért érdemes megfontolni egy nem termelési rendszeren való tesztelést, mielőtt a képességeket élesben implementálja.
Előfeltételek
- Olyan Linux rendszer, amelyen root hozzáféréssel rendelkezik (akár a root felhasználón keresztül, akár egy sudo hozzáféréssel rendelkező felhasználón keresztül).
Magyarázat
Lényegében a képességek célja az, hogy a „root” hatalmát meghatározott jogosultságokra osszák fel, így ha egy vagy több képességgel rendelkező folyamatot vagy binárist kihasználnak, a potenciális károk korlátozottak, ha összehasonlítjuk ugyanazzal a folyamattal, amely rootként fut.
A képességek a folyamatokon és a végrehajtható fájlokon állíthatók be. Egy fájl végrehajtásából származó folyamat megszerezheti a fájl képességeit.
A Linuxon megvalósított képességek számosak, és az eredeti kiadás óta sokat hozzáadtak. Néhány közülük a következő:
CAP_CHOWN: A fájlok felhasználói azonosítójának és csoportazonosítójának módosítása
CAP_DAC_OVERRIDE: DAC (Diszkrecionális hozzáférés-vezérlés) felülírása. Például a vto megkerüli az olvasási/írási/végrehajtási engedélyek ellenőrzését.
CAP_KILL: Az engedélyek megkerülése a jelek folyamatokhoz való küldéséhez.
CAP_SYS_NICE: Emelje fel a folyamatok szépségét ( A kedvesség magyarázata itt található )
CAP_SYS_TIME: A rendszer és a valós idejű hardveróra beállítása
A teljes lista megtekintéséhez futtassa a parancsot man 7 capabilities.
A képességek készletekben vannak hozzárendelve, nevezetesen "engedélyezett", "örökölhető", "hatékony" és "környezeti" a szálaknál, valamint "engedélyezett", "örökölhető" és "hatékony" a fájlok esetében. Ezek a halmazok különböző összetett viselkedéseket határoznak meg, teljes magyarázatuk túlmutat jelen cikk keretein.
A képességek fájlban való beállításakor szinte mindig az "engedélyezett" és a "hatékony" kifejezéseket fogjuk használni, például CAP_DAC_OVERRIDE+ep. Figyeljük meg a +ep, amely a fent említett halmazokat jelöli.
Fájlképességekkel való munka
Szükséges csomagok
Két fő eszköze, getcapés setcapamely rendre megtekinteni, és ezeket az attribútumokat.
- Debian és Ubuntu esetén ezeket az eszközöket a
libcap2-bincsomag biztosítja, amely a következőkkel telepíthető:apt install libcap2-bin
- CentOS és Fedora esetén a
libcapcsomag szükséges:yum install libcap
- Arch Linuxon ezeket is biztosítják
libcap:pacman -S libcap
Olvasási képességek
Ha meg szeretné tekinteni, hogy egy fájl rendelkezik-e képességekkel, egyszerűen futtassa getcap /full/path/to/binarya következőt:
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
Ha meg szeretné tudni, hogy mely képességek vannak már beállítva a rendszeren, kereshet a teljes fájlrendszerben rekurzív módon a következő paranccsal:
getcap -r /
Tekintettel arra, hogy a virtuális fájlrendszerek (például /proc) nem támogatják ezeket a műveleteket, a fenti parancs több ezer hibát produkál, ezért a tisztább kimenet érdekében használja a következőket:
getcap -r / 2>/dev/null
Képességek hozzárendelése és eltávolítása
Egy adott képesség beállításához használja a fájlt setcap "capability_string" /path/to/file.
A fájl összes funkciójának eltávolításához használja a setcap -r /path/to/file.
A demonstrációhoz létrehozunk egy üres fájlt az aktuális könyvtárban, lehetőséget adunk neki, majd eltávolítjuk. Kezdje a következővel:
root@demo:~# touch testfile
root@demo:~# getcap testfile
A második parancs nem ad ki kimenetet, vagyis ez a fájl nem rendelkezik semmilyen képességgel.
Ezután állítson be egy képességet a fájlhoz:
root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep
Példaként a „CAP_CHOWN+ep” volt használva, de bármely más is hozzárendelhető ilyen módon.
Most távolítson el minden képességet a következőről testfile:
root@demo:~# setcap -r testfile
root@demo:~# getcap testfile
Ismét nem lesz kimenet, mert a "CAP_CHOWN+ep" eltávolításra került.
Következtetés
A képességeknek számos lehetséges felhasználási területük van, és segíthetnek a rendszer biztonságának szigorításában. Ha a SUID bitet használja a végrehajtható fájlokon, fontolja meg annak cseréjét a szükséges képességekkel.