Кратко
- Аутентифицированный CoA-Request или Disconnect-Request доказывает принятый RADIUS hop. Он не доказывает полномочия отправителя для tenant, единственность текущей сессии и способность NAS выполнить изменение.
- Защищаемая цепочка связывает исходные access и accounting с proxy path, realm, NAS, session key, запрошенными атрибутами, replay identity, ACK/NAK, установленным состоянием и трафиком. RADIUS/1.1 улучшает транспорт, но не решает эти связи.
Одно имя нашло два подключения
Начальный эпизод — лабораторный сценарий, а не сообщение об инциденте. Абонент держит ноутбук в офисной сети и телефон в visited network. У записей одинаковый User-Name, но разные Acct-Session-Id, NAS, точки подключения и действующие policies.
Risk engine хочет ограничить ноутбук и отправляет корректный CoA-Request с именем и фильтром. Применение к обеим сессиям превращает слабый selector в межсессионную власть. Выбор самой новой создаёт правило, которого не было в запросе. Отказ при множественном совпадении сохраняет разницу между подлинным сообщением и однозначно разрешённой целью.
RFC 5176 разделяет Dynamic Authorization Client, Dynamic Authorization Server, NAS и session как экземпляр услуги. Один пользователь может иметь несколько сессий одновременно или последовательно. Адрес RADIUS client не является абонентом, NAS не является сессией, имя учётной записи не является уникальным подключением.
CoA меняет authorization. Disconnect завершает услугу и удаляет контекст. Отключение после отказа узкого фильтра — не безопасный fallback: оно расширяет решение и уничтожает диагностическое состояние.
Cardinality входит в авторизацию
Цель можно уточнять через Acct-Session-Id, NAS-Port, назначенный адрес и идентификаторы station. User-Name или Chargeable-User-Identity помогает ограничить действие пользователем, но не создаёт глобальную уникальность.
Получатель различает ноль, одну и несколько живых сессий. Session Context Not Found и Multiple Session Selection Unsupported нужны, чтобы отсутствие или неоднозначность не превращались в произвольный выбор.
Нужна и provenance ключа: выдавший NAS, realm или tenant, epoch запуска, атрибуты назначения. После restart или повторного использования то же значение может относиться к другому контексту. Join с accounting является проверкой полномочий, потому что определяет носителя последствия.
Подлинный hop не даёт общего мандата
В историческом RADIUS UDP source address выбирает shared secret. Правильный Authenticator подтверждает настроенное отношение на этом hop. Он не подтверждает одобрение человеком, tenant scope или неизменность через цепочку proxies.
RFC 5176 признаёт риск общего NAS: один provider может воздействовать на чужие сессии. Отдельные secrets, сетевой фильтр и reverse-path check уменьшают поверхность. Локальная policy всё равно отдельно допускает sender, realm, NAS, tenant, session и action.
RFC 8559 направляет roaming CoA по Operator-Name и opaque Operator-NAS-Identifier, созданному visited network. Обратный путь идёт к operator realm, где живёт сессия, а не к realm из username. Visited network преобразует token во внутренний NAS и удаляет proxy signalling перед последним hop.
Каждый proxy видит и может менять обрабатываемые данные, затем защищает новый hop. Audit должен записывать посредников и scope делегирования, а не изображать окончательный пакет как неизменную end-to-end подпись удалённого администратора.
Однозначная сессия ещё не делает действие допустимым
Filter, VLAN, rate или vendor-specific action может не поддерживаться NAS, не подходить этому доступу или быть запрещён tenant. Конечный получатель отклоняет весь набор, если не может выполнить его полностью; скрытый partial success разрушает atomicity.
Один vendor attribute не должен одновременно быть selector и action. Сначала решается «кто», затем «что». Некоторые изменения требуют переговоров нижнего уровня. Способность controller закодировать значение не создаёт capability в работающем NAS.
Running code определяет реальную совместимость. Центральный набор правил описывает проверенную возможность, но не объявляет её существующей на всех устройствах.
Retransmission не является новым намерением
Неизменный UDP retry к тому же серверу сохраняет source port, Identifier и Request Authenticator. Изменённые атрибуты создают новую request identity. Получатель хранит duplicate detection в пределах нужного окна.
Без IPsec replay protection Event-Timestamp ограничивает freshness и не меняется при retransmission. Временное окно и память duplicates должны совпадать. Иначе старый, но ещё свежий request исполнится снова после забытого первого запуска.
Timestamp не является временем одобрения ticket и не доказывает продолжение той же session. Response cache может дать два ACK одному исполнению. Метрики разделяют original, retry, suppressed duplicate, cached response и отдельное последующее решение.
Граница изменений RADIUS/1.1
RFC 9765 задаёт ALPN radius/1.1 и требует TLS 1.3 или новее. После двустороннего согласования TLS обеспечивает authentication соединения, integrity и confidentiality. Исторические Request/Response Authenticator не используются, а Message-Authenticator не аутентифицирует пакет в этом режиме.
Четырёхоктетный Token связывает request и reply. Новый пакет соединения получает новый Token; идентичный DTLS retransmission сохраняет значение. Deduplication выполняется на уровне connection.
Это важное исправление транспорта, но codes CoA/Disconnect и большинство атрибутов сохраняют смысл. Оно не выбирает subscriber, не разрешает переход между tenants и не доказывает enforcement. Один ledger хранит certificate, ALPN, TLS, connection и Token; другой — realm, NAS, session, action, локальное решение и эффект.
ACK надо связать с выполненным состоянием
CoA-ACK — заявление NAS об успешном изменении. NAK и Error-Cause классифицируют отказ. Затем сравниваются filter/VLAN, rate policy, accounting continuity и характерный трафик до и после.
ACK без состояния — enforcement defect. Состояние без ответа — defect транспортного наблюдения. NAK после частичного изменения — atomicity defect. Общий сигнал «CoA failed» скрывает место ремонта.
Минимальная цепочка включает access, accounting, live inventory, sender и proxies, request fingerprint, Identifier/Token, timestamp, cardinality, capability/policy decision, response, installed state, packets и ограниченное обратное изменение.
Проверка на двух похожих сессиях
Создать две одновременные сессии с общим привлекательным идентификатором и разными Acct-Session-Id и NAS context. Узкий CoA меняет ровно одну, оставляя вторую нетронутой. Без отличительного поля запрос должен отклоняться, а не выбирать по возрасту или порядку базы.
Повтор пакета не повторяет эффект. Дополнительно проверить stale timestamp, wrong realm, wrong NAS и unsupported action. Rollback восстанавливает прежнее состояние тем же scope; Disconnect является обратным действием только тогда, когда исходным решением было завершение.
Источники
- RFC 5176 — Динамическая авторизация RADIUS
- RFC 8559 — Proxy динамической авторизации
- RFC 9765 — RADIUS/1.1 и ALPN
- RFC 2865 — RADIUS
- RFC 2869 — Расширения RADIUS
- RFC 5080 — Вопросы реализации RADIUS
- RFC 6614 — RADIUS поверх TLS
- RFC 7360 — RADIUS поверх DTLS
- RFC 7585 — Динамическое обнаружение peer
- IANA — Типы RADIUS
- FreeRADIUS — Использование CoA
- FreeRADIUS — Создание CoA
- Heng Lu — Приоритет работающего кода
- Heng Lu — Минимальная начальная спецификация, локальное будущее решение и добровольное принятие
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
