Сложихте акаунта в правилната група, входът мина успешно, а връзката все още се отхвърля — или се установява и не стига до нищо полезно. Обичайният рефлекс е да добавяте потребителя към още групи, докато нещо се получи, и точно така организациите стигат до предоставяне на много повече права, отколкото заявката е изисквала. Членството в група е един от входовете на решението за авторизация, никога самото решение: шлюзът събира няколко факта за сесията, съпоставя ги с подредена политика и едва след това решава до какво има достъп тази сесия. Ако е провалено друго условие, редактирането на групата не променя нищо освен вашата изложеност. Ето как всъщност се сглобява решението, къде членството спира да е достатъчно и коя проверка ви казва с кой отказ си имате работа.

Членството в група е условие, а не разрешение

В RADIUS групата пристига като атрибут за авторизация, а атрибутите описват сесията, вместо да я оторизират. Сървърът отговаря с Access-Accept или Access-Reject; при приемане може да прикачи Filter-Id, Class или тунелните атрибути от RFC 2868, а мрежовото оборудване от другата страна ги тълкува както е решил неговият производител. Нищо в протокола не съпоставя група с пълен достъп. Това съпоставяне се пише от онзи, който е конфигурирал политиката на шлюза или на сървъра за мрежов достъп, и то може да бъде толкова тясно, колкото един-единствен хост.

Ето защо едно и също име на група се държи различно в две системи. Microsoft NPS сглобява мрежовите политики от условия, ограничения и настройки и ги оценява в зададен ред. OpenVPN Access Server има свой модел за групи и правила за достъп, докато общностният OpenVPN сървър често делегира целия въпрос на скрипт client-connect или на файл от client-config-dir. Всяка система консумира група; никоя не дели логиката за приоритет на друга. Набор от правила, копиран между тях, не доказва нищо за онзи, който дебъгвате.

Решава правилото, което е съвпаднало, а не групата, която очаквате

Повечето машини спират на първата политика, която съвпада, или на най-специфичната. Ако политика 3 отказва, а политика 7 разрешава, сесията може да се провали, без изобщо да стигне до правилото, което би я пропуснало. Подредбата е реална настройка в NPS и в повечето продукти за контрол на мрежовия достъп и се разминава, когато с годините се добавят политики. Някой вдига политика за отказ най-отгоре, за да овладее несвързан инцидент, и група, която работеше предното тримесечие, спира да работи.

Условията, които пътуват заедно с групата, са другата половина на проблема. Състоянието на устройството, методът за удостоверяване, завършеното MFA, изходната мрежа, субектът на сертификата или времеви прозорец от деня могат да стоят в една и съща политика. Когато едно от тях не е изпълнено, политиката не съвпада, машината преминава към следващата и се прилага отказ по подразбиране. От гледна точка на потребителя това изглежда като пренебрегната група; от гледна точка на машината групата никога не е била разглеждана.

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

Прочетете записа за приемане или отказ, преди да пипате група

Първо задайте един въпрос: стигна ли заявката изобщо до етапа на авторизация? В NPS отговорът вече е в журнала за събития, където 6272 записва предоставен достъп, 6273 — отказ, а 6274 — заявка, която сървърът е отхвърлил, преди да оцени политиката. Тези три числа разделят проблема на три различни разследвания и само едно от тях е за групи.

What the record showsWhat it meansWhere to look next
6272, access grantedAuthentication and authorization both succeededRoutes, split tunnel, DNS, per-resource rules
6273, access deniedA policy matched and denied, or nothing matched and the default deniedThe conditions of the policy that fired, in order
6274, request discardedThe request never reached authorizationShared secret, NAS client entry, proxy chain, malformed attributes

Когато журналът е недостъпен, попитайте сървъра директно и прочетете какво връща. Отговор без Filter-Id и без тунелни атрибути ви казва, че сървърът смята сесията за нищо особено и шлюзът прилага собствени правила. Отговор с атрибути, които точката за налагане не реализира, е друга повреда: авторизацията е минала, а устройството, което е трябвало да действа по нея, е пренебрегнало резултата.

radtest alice 'password' 10.0.0.5 0 testing123

Сравнете върнатите атрибути с тези, които шлюзът документира, а не с това, което подсказва името на групата. Това сравнение обикновено разграничава проблем в политиката от проблем в налагането, преди някой да редактира група.

Промяната на група не действа със задна дата

Атрибутите за авторизация се връщат веднъж, когато сесията бъде удостоверена. Шлюзът ги съхранява в сесията и не препрочита директорията при всеки пакет — точно затова установена сесия продължава да работи, след като премахнете някого от група. Затова и нова сесия може да се провали, докато стара още работи, и затова двама потребители с еднакви списъци с групи могат да получат различни резултати.

За да влезе промяната в сила, ви трябва ново решение за авторизация, а не само нови ключове. Когато сървърът поддържа динамична авторизация по RFC 5176, Disconnect-Request или CoA-Request към UDP 3799 принуждава сесията да бъде преоценена; в противен случай прекъснете клиента и го оставете да се свърже отново. Преговорите обновяват ключовете на тунела и обикновено оставят резултата от авторизацията непроменен, така че да ги приемате за обновяване на правата води до противоречиви резултати от тестовете.

Поправете условието, а не групата

След като знаете коя политика се е задействала, поправката обикновено е малка: пренаредете отказ, който засенчва желаното разрешаване, добавете липсващото условие за устройство или MFA към политиката, която сте имали предвид, или напишете тясно правило за конкретния ресурс, вместо да вдигате потребителя в група, която носи още десет. Разширяването на членството, за да се затвори заявка, е скъпата версия на същата поправка и така един бърз ход от поддръжката се превръща в постоянно изключение, което никой не преглежда.

Кратък цикъл държи промяната честна:

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

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

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