VPN-командата работи како вашиот корисник, лозинка не се појавува и тунелот се крева. Таа низа изгледа како операција без привилегии, а обично не е. Мрежните промени ги извршува посебна услуга, а интересното прашање е што таа услуга ќе направи за повикувач што не го проверила. Броењето барања за лозинка не ви кажува ништо за таа граница.

Интерфејсот, механизмот и проверката

Интерфејсот прифаќа барања: поврзи, прекини, избери профил. Механизмот ги поседува мрежните операции: создавање интерфејси, менување рути, примена на филтри. Проверката на авторизација одлучува дали овој повикувач смее да го побара ова дејство. Тие три можат да бидат распоредени на бинарна датотека, помошник и системска услуга, а корисникот го гледа само првото.

Улогите можат да живеат во една бинарна датотека, во два процеса или во клиент и системска услуга, а командата што ја гледа корисникот ретко открива која. Иконата во системската лента и системскиот демон можат да изгледаат како една апликација, а работат со многу различни овластувања. Привилегијата при инсталација и привилегијата при барање се исто така различни работи. Инсталаторот што работел како root може да остави услуга што слуша подоцнежни барања, долго откако менаџерот на пакети завршил. Таа услуга, а не командата што ја внесовте, ги има овластувањата.

Делегирањето е нормален дизајн

Делегирањето на привилегирана мрежна работа на услуга е разумната архитектура. Таа ги држи обичните апликации без привилегии и ги централизира операциите што бараат внимание. Дизајнот се исплати само кога услугата проверува и кој прашува и за што. Без таа проверка тоа е само поширока врата.

NetworkManager е конкретниот пример на Linux. Неговиот водич за конфигурација објаснува како PolicyKit авторизира барања што не се од root во стандардното поставување. Тоа покажува делегирана авторизација во вистински производ. Тоа не докажува дека секој комерцијален клиент го користи NetworkManager, и не го опишува патот до сокетот ниту политиката на кој било конкретен добавувач.

Шаблонот е делегирање со политика зад него. Примерот е една имплементација на тој шаблон, не универзална.

Читајте ја границата, не барањето

Најдете ја услугата, сопственикот на нејзината конфигурација и локалниот интерфејс што го користи предниот дел. Потоа прашајте кои корисници смеат да бараат кои операции. Можноста да кренете и спуштите еден зачуван профил не е истата дозвола како вчитување конфигурација што операторот никогаш не ја прегледал. Разликата е целото безбедносно прашање.

Започнете со менаџерот на услуги и со сопствениот поглед на клиентот за неговите дозволи. Командите подолу покажуваат дали демонот работи, што смее повикувачот да побара од него и што демонот изложува под неговиот директориум за извршување.

systemctl status NetworkManager
nmcli general permissions
ls -l /run/NetworkManager

Прашајте и на што влијае операцијата. Ставка во менито што изгледа лична може да ги смени рутите и DNS-от за целата машина, што значи дека може да ги наруши сесиите на другите корисници. Опсегот на влијанието припаѓа на истиот преглед како и дозволата, и обично одлучува дали услугата има потреба од потесна улога.

Поправете ги дозволите на поддржаниот начин

Правењето на заштитен контролен сокет достапен за пишување на сите, или додавањето сметка во широка административна група, отстранува грешка во дозвола и создава поголема. Грешката беше единственото нешто што ви кажуваше дека таа граница постои. Користете го документираниот процес на членство или авторизација, вклучително освежувањето на сесијата што го бара. Членството во група често важи само за нови сесии за најава, поради што промената може да изгледа како да не прави ништо до следната најава.

Ако производот изложува потесна улога за операцијата, дајте ѝ предност пред општо доделување. Запишете ја избраната улога и нејзиниот сопственик до името на услугата.

Како изгледа добра поделба

Обичните апликации остануваат без привилегии, услугата го извршува само поставувањето за кое е направена, и секој повикувач се проверува спрема политика што некој ја поседува. Тоа е одбранлив дизајн. Тој е и ревизиски проверлив, бидејќи политиката има име поврзано со неа. Секое поголемо нешто заслужува писмен исклучок, а не тивка промена на дозвола.

Режимот на неуспех е услуга што извршува кое било барање од кој било локален корисник затоа што интерфејсот е удобен. Од страната на корисникот изгледа исто, и носи многу поголеми овластувања. Тестирајте едно одбиено барање, не само успешното. Одбивањето што доаѓа од политиката е доказ дека политиката постои.

Поврзани статии