Увод
Предуслови
Објашњење
Рад са могућностима датотека
Закључак
Увод
Линук могућности су посебни атрибути у језгру Линука који процесима и бинарним извршним датотекама додељују специфичне привилегије које су обично резервисане за процесе чији је ефективни ИД корисника 0 (Роот корисник, и само роот корисник, има УИД 0).
Овај чланак ће објаснити неке од доступних могућности, њихову употребу и како их поставити и уклонити. Имајте на уму да могућности подешавања на извршним датотекама могу да угрозе безбедност вашег система. Као такав, требало би да размислите о тестирању на непроизводном систему пре него што примените могућности у производњи.
Предуслови
- Линук систем на коме имате роот приступ (било преко роот корисника или корисника са судо приступом).
Објашњење
У суштини, циљ могућности је да се моћ 'роот' подели на специфичне привилегије, тако да ако се експлоатише процес или бинарни фајл који има једну или више могућности, потенцијална штета је ограничена у поређењу са истим процесом који се покреће као роот.
Могућности се могу подесити за процесе и извршне датотеке. Процес који је резултат извршавања датотеке може добити могућности те датотеке.
Могућности имплементиране на Линук су бројне, а многе су додате од њиховог првобитног издања. Неки од њих су следећи:
CAP_CHOWN: Измените ИД корисника и ИД групе датотека
CAP_DAC_OVERRIDE: Заобилази ДАЦ (дискрециону контролу приступа). На пример, вто заобилази провере дозвола за читање/писање/извршавање.
CAP_KILL: Заобиђите провере дозволе за слање сигнала процесима.
CAP_SYS_NICE: Повећајте лепоту процеса ( Објашњење лепоте се може наћи овде )
CAP_SYS_TIME: Подесите системски и хардверски сат у реалном времену
За пуну листу, покрените man 7 capabilities.
Могућности се додељују у скуповима, односно „дозвољено“, „наследно“, „ефикасно“ и „амбијентно“ за нити, и „дозвољено“, „наследно“ и „ефикасно“ за датотеке. Ови скупови дефинишу различита сложена понашања, њихово потпуно објашњење је ван оквира овог чланка.
Када постављамо могућности у датотеку, скоро увек ћемо користити „дозвољено“ и „ефикасно“, на пример CAP_DAC_OVERRIDE+ep. Обратите пажњу на +ep, који означава горе поменуте скупове.
Рад са могућностима датотека
Потребни пакети
Постоје два главна средства, getcapа setcapкоје односно да видите и поставити ове атрибуте.
- На Дебиан-у и Убунту-у, ове алате обезбеђује
libcap2-binпакет, који се може инсталирати са:apt install libcap2-bin
- На ЦентОС-у и Федори,
libcapпакет је потребан:yum install libcap
- На Арцх Линук-у их обезбеђују
libcapи:pacman -S libcap
Способности читања
Да бисте видели да ли датотека има било какав скуп могућности, можете једноставно покренути getcap /full/path/to/binary, на пример:
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
Ако желите да сазнате које су могућности већ постављене на вашем систему, можете рекурзивно претраживати цео систем датотека помоћу следеће команде:
getcap -r /
Због чињенице да виртуелни системи датотека (као што је /proc) не подржавају ове операције, горња команда ће произвести хиљаде грешака, тако да за чистији излаз користите следеће:
getcap -r / 2>/dev/null
Додељивање и уклањање способности
Да бисте подесили одређену могућност на датотеци, користите setcap "capability_string" /path/to/file.
Да бисте уклонили све могућности из датотеке, користите setcap -r /path/to/file.
За демонстрацију направићемо празну датотеку у тренутном директоријуму, дати јој могућност и уклонити је. Почните са следећим:
root@demo:~# touch testfile
root@demo:~# getcap testfile
Друга команда не производи никакав излаз, што значи да ова датотека нема никакве могућности.
Затим поставите могућност за датотеку:
root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep
„ЦАП_ЦХОВН+еп“ је коришћен као пример, али било који други се може доделити на овај начин.
Сада уклоните све могућности из testfile:
root@demo:~# setcap -r testfile
root@demo:~# getcap testfile
Опет, неће бити излаза, јер је „ЦАП_ЦХОВН+еп“ уклоњено.
Закључак
Могућности имају много потенцијалних употреба и могу помоћи да се појача безбедност ваших система. Ако користите СУИД бит на својим извршним датотекама, размислите о његовој замени потребном специфичном способношћу.