Могућности омогућавају процену неких важних системских привилегија у посебној нити која се разликује од тренутног процеса. На овај начин, не морате да покрећете програм као роот да би приступио одређеним деловима система.
Као решење које произилази из потреба, одељак 25 ПОСИКС.1е говори о овом питању. Развој привилегија дефинисаних у том одељку и више је завршен издавањем Линук кернела верзије 2.6.26. Ево свега што треба да знате о могућностима у Линук кернелу.
Разумевање логике АПИ-ја за могућности
Контрола ауторизације у системима заснованим на Уник-у састоји се од два корака:
- Ако је тренутни власник (ефикасни ИД корисника, ЕУИД) покренуте апликације нула, онда систем не проверава да ли постоји овлашћење
- Ако је ЕУИД вредност различита од нуле, систем обавља процес контроле у складу са овлашћењима ефективног корисника и групе релевантне апликације
Неке апликације морају да имају шире привилегије (СУИД, СГИТ битови) док раде. Као најтипичнији пример, можете замислити апликација пассвд. Уз то, корисници у систему могу да промене своје лозинке. Међутим, писати на
/etc/shadow фајл, где се чувају шифроване лозинке, потребно је радити са роот корисничким правима (тј. ИД корисника = 0).Да би се решио овај проблем, апликација пассвд има СУИД бит. Који год корисник покреће ову апликацију, активни власник (ЕУИД) ће увек бити роот:
лс -л /уср/бин/пассвд
# Излаз
-рвср-кр-к. 1 роот роот 32552 23. јул 2021. /уср/бин/пассвд
Чини се да је могућност покретања СУИД апликација у традиционалном Уник моделу аутентификације решила проблем. Међутим, критичне грешке у апликацијама са СУИД битовима отварају врата за покретање нежељених кодова за кориснике са пуним овлашћењем у систему. Идеална апликација би требало да може да ради без потребе за роот корисничким правима ако је могуће.
Проблем се не завршава само са СУИД битом. Такође морате имати роот корисничка права када желите да слушате на а привилеговани ТЦП или УДП порт мање од 1024 на системима заснованим на Уник-у. На пример, да бисте могли да слушате ТЦП 80 порт веб сервера, морате покренути апликацију као роот корисник.
Током година, постало је јасно колико је погубно покретати софтвер који пружа услуге мрежном окружењу са потпуно овлашћеним корисничким налогом. Као прелазно решење, усвојено је да само одређени и мањи део програма слуша на привилегованом порту као роот, а затим мења ИД активног корисника у другог корисника за наредне процесе (на пример, никог корисника са ограниченим правима).
Овај систем, који се користи годинама, добро је функционисао својом једноставношћу и још увек се ефикасно користи. Међутим, данас је могуће добити неке додатне могућности, специфичне за апликацију, преко Линук АПИ-ја за могућности, без потребе за роот правима, осим горе наведених систем.
Модел могућности Линука, објашњено!
Можете пронаћи најсвеобухватнију имплементацију АПИ-ја за могућности у језгру Линука. Модерне Линук дистрибуције такође покушавају да искористе овај нови модел у целом систему што је више могуће.
На пример, да би пинг апликација радила, мора бити у могућности да отвори РАВ утичнице, које су генерално резервисане само за роот кориснике. У старим дистрибуцијама Линука, проблем је да се апликацији додели СУИД бит како би га нормални корисници могли користити. У овим верзијама, када уклоните СУИД бит из апликације и покушате да покренете апликацију као обичан корисник, добијате следећу грешку:
пинг 8.8.8.8
# Излаз
пинг: ицмп опен соцкет: Операција није дозвољена
Док у модерним дистрибуцијама Линука, пинг апликација вероватно нема СУИД бит:
лс -л /бин/пинг
# Излаз
-рвкр-кр-к. 1 роот роот 95232 25. јул 2021. /бин/пинг
Ипак, можете успешно покренути апликацију као обичан корисник. Механизам који ово омогућава је да пинг апликација има посебну могућност ЦАП_НЕТ_РАВ.
Можете научити додатне могућности апликације са гетцап командујте на следећи начин:
судо гетцап /bin/ping
# Излаз
/бин/пинг цап_нет_рав=еп
Ако команда гетцап врати празан одговор, можете ручно да подесите ову вредност помоћу:
судо сетцап цап_нет_рав+еп /бин/пинг
Модел способности процеса
У Линук имплементацији, могућности сваког процеса су груписане у три наслова:
Способност | Изјава |
дозвољено | У овом кластеру постоји листа дозвољених додатних могућности за релевантни процес. Давање дозволе не значи да се у том тренутку може активно користити. Могуће је укључити овлашћења овде у ефективни скуп могућности уз додатну радњу. |
делотворан | Приказује тренутно активну листу могућности повезаног процеса. Уз помоћне функције које регулишу систем вештина, могуће је одустати или поново стећи вештину. У сваком случају, то се може учинити само међу онима који су већ овлашћени у дозвољеној групи. |
наследна | Када апликација покрене нови процес, новопокренути процес приказује листу могућности које ће наследити са листе дозвољених. |
Листа дозвољених, ефективних и наследних могућности за покретање процеса у било ком тренутку се приказује као битмаска на линијама ЦапПрм, ЦапЕфф, и ЦапИнх у фајлу /proc/
На пример, покушајте да прочитате вредности ваше покренуте схелл апликације из /proc/self/status фајл:
мачка /проц/селф/статус | греп Цап
# Излаз
ЦапИнх: 0000000000000000
ЦапПрм: 0000000000000000
ЦапЕфф: 0000000000000000
ЦапБнд: 000001фффффффффф
ЦапАмб: 0000000000000000
Модел могућности датотека у Линуку
Рад система могућности за датотеке зависи од предуслова да се ова својства могу ускладиштити у слоју виртуелног система датотека (ВФС). Слично моделу процеса, могућности за датотеке спадају у три наслова:
1. Дозвољено
Систем одређује дозвољене могућности процеса када се одговарајући извршни фајл покрене у овом кластеру.
2. Ефективно
За разлику од модела могућности процеса, ово заглавље чува само један бит: активан или неактиван. Ако је бит активан, могућности дефинисане у листи дозвољених датотека су аутоматски преноси се на листу ефективних могућности релевантног процеса када се ова датотека покрене и процес створио. Ако бит није активан, аутоматски се пренос дозвољених могућности на датотеци у процес који је у току не врши.
Међутим, ако је код релевантне апликације интегрисан са системом могућности, он може активирати дозволе у дозвољеном скупу датотеке са системским позивима. Главна сврха оваквог понашања је да обезбеди да старе апликације које не укључују могућности специфичне за систем код, развој на нивоу софтверског кода може да ради са системом могућности без потребе за било каквим изворним кодом Промене.
Можда мислите да ће боље написане апликације користити могућности само када је то потребно. Ако је бит активан, све могућности на листи дозвољених постају активне када се апликација покрене.
3. Наследно
Као иу моделу процеса, релевантна датотека се покреће и процес се јавља. Ако се друга апликација покрене из процеса након тога, она је укључена у дозвољену листу новог процеса. Укратко, указује на листу способности које треба наследити.
Улога способности у Линук систему
Када покренете одређени процес као обичан корисник, немате никакве привилегије. Као резултат, можете приступити само партицијама које систем дозвољава нормалним корисницима. Главни разлог за ово је пооштравање безбедности система и примена таквих мера.
Омогућавање свим корисницима приступ свим ресурсима може створити озбиљну безбедносну рањивост. Људима који користе систем у злонамерне сврхе биће веома лако да искористе системске рањивости. Могућности Линук-а су корисне у таквим стварима. Можете лако да ојачате безбедност својих апликација помоћу АПИ-ја за могућности које покреће језгро.
Линукс могућности су само једно од питања о којима треба размишљати да би се примениле веома моћне методе као што је подела роот корисника дозволе, додељивање различитих дозвола непривилегованим корисницима и предузимање разних мера предострожности у вези са отвореним портовима у интернет услугама са Линук сервери.
Побољшајте безбедност свог Линук сервера са ових 7 корака за учвршћивање
Реад Нект
Повезане теме
- Линук
- Програмирање
- Линук Кернел
- Оперативни систем
О аутору
Инжењер и програмер софтвера који је љубитељ математике и технологије. Одувек је волео компјутере, математику и физику. Развио је пројекте мотора за игре, као и машинско учење, вештачке неуронске мреже и библиотеке линеарне алгебре. Штавише, наставља да ради на машинском учењу и линеарним матрицама.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили