Командата VPN работи като вашия потребител, парола не се появява и тунелът се вдига. Тази последователност изглежда като операция без привилегии и обикновено не е. Отделна услуга извършва мрежовите промени и интересният въпрос е какво ще направи тази услуга за извикващ, когото не е проверила. Броенето на подкани за парола не ви казва нищо за тази граница.

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

Интерфейсът приема заявки: свързване, прекъсване, избор на профил. Механизмът притежава мрежовите операции: създаване на интерфейси, промяна на маршрути, прилагане на филтри. Проверката за оторизация решава дали този извикващ може да поиска това действие. Тези три могат да бъдат разпръснати в изпълним файл, помощник и системна услуга, а потребителят вижда само първото.

Ролите могат да живеят в един изпълним файл, в два процеса или в клиент и системна услуга и командата, която потребителят вижда, рядко разкрива кое е. Икона в системния трей и системен демон могат да изглеждат като едно приложение, докато работят с много различни правомощия. Привилегията по време на инсталиране и привилегията по време на заявка също са различни неща. Инсталатор, който е работил като root, може да остави услуга, която слуша за по-късни заявки, дълго след като мениджърът на пакети е приключил. Тази услуга, а не командата, която сте въвели, държи правомощията.

Делегирането е нормалният дизайн

Делегирането на привилегирована мрежова работа на услуга е разумната архитектура. То оставя обикновените приложения без привилегии и централизира операциите, които изискват внимание. Дизайнът се изплаща само когато услугата също проверява кой пита и за какво. Без тази проверка това е просто по-широка врата.

NetworkManager е конкретният пример за Linux. Неговото ръководство за конфигурация обяснява как PolicyKit оторизира заявки не от root при подразбиращата се настройка. Това показва делегирана оторизация в реален продукт. То не доказва, че всеки търговски клиент използва NetworkManager, и не описва пътя до сокета или политиката на конкретен доставчик.

Моделът е делегиране с политика зад него. Примерът е една реализация на този модел, не универсална.

Четете границата, не подканата

Намерете услугата, собственика на нейната конфигурация и локалния интерфейс, който използва фронтендът. После питайте кои потребители могат да заявяват кои операции. Възможността да вдигнете и свалите един запазен профил не е същото разрешение като зареждането на конфигурация, която операторът никога не е преглеждал. Разликата е целият въпрос за сигурността.

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

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

Питайте също какво засяга операцията. Елемент от менюто, който изглежда личен, може да промени маршрутите и DNS за цялата машина, което означава, че може да наруши сесиите на други потребители. Обхватът на въздействието принадлежи към същия преглед като разрешението и обикновено решава дали услугата се нуждае от по-тясна роля.

Поправяйте разрешенията по поддържания начин

Правенето на защитен контролен сокет достъпен за запис от всички или добавянето на акаунт към широка административна група премахва грешка в разрешението и създава по-голяма. Грешката беше единственото, което ви казваше, че тази граница съществува. Използвайте документирания процес за членство или оторизация, включително изискваното обновяване на сесията. Членството в група често важи само за нови сесии за вход, затова промяната може да изглежда, че не прави нищо до следващото влизане.

Ако продуктът предлага по-тясна роля за операцията, предпочетете я пред общо разрешение. Запишете избраната роля и нейния собственик до името на услугата.

Как изглежда доброто разделяне

Обикновените приложения остават без привилегии, услугата извършва само настройката, за която е създадена, и всеки извикващ се проверява срещу политика, която има собственик. Това е защитим дизайн. Той е и одитируем, защото политиката има име, свързано с нея. Всичко по-голямо заслужава писмено изключение, а не тиха промяна на разрешения.

Режимът на отказ е услуга, която изпълнява всяка заявка от всеки локален потребител, защото интерфейсът е удобен. От страна на потребителя изглежда идентично и носи много по-големи правомощия. Тествайте една отказана заявка, не само успешната. Отказът, който идва от политиката, е доказателството, че политиката съществува.

Подобни статии