Каманда VPN працуе ад вашага карыстальніка, пароль не з'яўляецца, і тунель падымаецца. Гэтая паслядоўнасць успрымаецца як дзеянне без прывілеяў, але звычайна яна такая не. Сеткавыя змены выконвае асобная служба, і цікавае пытанне ў тым, што гэтая служба зробіць для выклікальніка, якога яна не праверыла. Падлік запытанняў пароля нічога не кажа пра гэтую мяжу.

Інтэрфейс, механізм і праверка

Інтэрфейс прымае запыты: падключыцца, адключыцца, выбраць профіль. Механізм валодае сеткавымі аперацыямі: стварэнне інтэрфейсаў, змена маршрутаў, прымяненне фільтраў. Праверка аўтарызацыі вырашае, ці можа гэты выклікальнік прасіць гэтае дзеянне. Гэтыя тры могуць быць размеркаваны паміж бінарнікам, памочнікам і сістэмнай службай, і карыстальнік бачыць толькі першае.

Ролі могуць жыць у адным бінарніку, у двух працэсах або ў кліенце і сістэмнай службе, і каманда, якую бачыць карыстальнік, рэдка паказвае, дзе менавіта. Значок у трэі і сістэмны дэман могуць выглядаць як адна праграма, працуючы з вельмі рознымі паўнамоцтвамі. Прывілеі ў момант усталявання і прывілеі ў момант запыту — таксама розныя рэчы. Усталявальнік, які працаваў ад імя root, можа пакінуць службу, што слухае наступныя запыты, яшчэ доўга пасля завяршэння працы менеджэра пакетаў. Менавіта гэтая служба, а не набраная вамі каманда, валодае паўнамоцтвамі.

Дэлегаванне — звычайны дызайн

Перадача прывілеяванай сеткавай працы службе — разумная архітэктура. Яна пакідае звычайныя праграмы без прывілеяў і цэнтралізуе аперацыі, якія патрабуюць увагі. Дызайн апраўдвае сябе толькі тады, калі служба таксама правярае, хто просіць і для чаго. Без гэтай праверкі гэта проста шырэйшыя дзверы.

NetworkManager — канкрэтны прыклад для Linux. Яго кіраўніцтва па канфігурацыі тлумачыць, як PolicyKit аўтарызуе запыты не ад root у прадвызначанай наладзе. Гэта паказвае дэлегаваную аўтарызацыю ў рэальным прадукце. Гэта не даказвае, што кожны камерцыйны кліент выкарыстоўвае NetworkManager, і не апісвае шлях да сокета ці палітыку якога-небудзь канкрэтнага пастаўшчыка.

Узор — гэта дэлегаванне, за якім стаіць палітыка. Прыклад — адна рэалізацыя гэтага ўзору, а не ўніверсальная.

Чытайце мяжу, а не запытванне

Знайдзіце службу, уладальніка яе канфігурацыі і лакальны інтэрфейс, які выкарыстоўвае франтэнд. Затым спытайце, якія карыстальнікі могуць запытваць якія аперацыі. Магчымасць падняць і апусціць адзін захаваны профіль — гэта не тое ж дазвол, што загрузка канфігурацыі, якую аператар ніколі не разглядаў. Розніца — гэта і ёсць усё пытанне бяспекі.

Пачніце з менеджэра службаў і з уласнага ўяўлення кліента пра яго дазволы. Каманды ніжэй паказваюць, ці працуе дэман, што выклікальнік можа ў яго папрасіць і што дэман адкрывае ў сваім каталогу выканання.

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

Спытайце таксама, на што ўплывае аперацыя. Пункт меню, які выглядае асабістым, можа змяніць маршруты і DNS для ўсёй машыны, а гэта значыць, што ён можа парушыць сеансы іншых карыстальнікаў. Радыус уздзеяння належыць да таго ж разгляду, што і дазвол, і звычайна менавіта ён вырашае, ці патрэбна службе вузейшая роля.

Выпраўляйце дазволы падтрыманым спосабам

Зрабіць абаронены кіравальны сокет даступным для запісу ўсім, або дадаць уліковы запіс у шырокую адміністрацыйную групу, прыбірае памылку дазволу і стварае большую. Памылка была адзіным, што казала вам пра існаванне гэтай мяжы. Выкарыстоўвайце дакументаваны працэс членства або аўтарызацыі, уключаючы патрабаванае ім абнаўленне сеансу. Членства ў групе часта дзейнічае толькі для новых сеансаў уваходу, таму змена можа выглядаць так, быццам нічога не робіць, да наступнага ўваходу.

Калі прадукт прапануе вузейшую ролю для аперацыі, аддайце перавагу ёй перад агульным дазволам. Запішыце абраную ролю і яе ўладальніка побач з назвай службы.

Як выглядае добрае раздзяленне

Звычайныя праграмы застаюцца без прывілеяў, служба выконвае толькі тую наладку, для якой створана, і кожны выклікальнік правяраецца па палітыцы, якая мае ўладальніка. Гэта абараняльны дызайн. Ён таксама падлягае аўдыту, бо ў палітыкі ёсць імя. Усё большае заслугоўвае пісьмовага выключэння, а не ціхай змены дазволаў.

Рэжым адмовы — гэта служба, якая выконвае любы запыт ад любога лакальнага карыстальніка, таму што інтэрфейс зручны. З боку карыстальніка гэта выглядае гэтак жа, і яно нясе значна большыя паўнамоцтвы. Праверце адзін адхілены запыт, а не толькі паспяховы. Адмова, якая паходзіць з палітыкі, і ёсць доказам існавання палітыкі.

Падобныя артыкулы