Resumo

  • CoA-Request ou Disconnect-Request autenticada comprova um hop RADIUS aceito, não a permissão sobre todo tenant, a unicidade da sessão atual ou a capacidade do NAS para aplicar o atributo.
  • A prova liga access e accounting originais a proxy, realm, NAS, chave de sessão, mudança pedida, identidade de replay, ACK/NAK, estado instalado e tráfego. RADIUS/1.1 melhora o transporte sem decidir esses vínculos.

Uma conta, duas conexões vivas

O caso inicial é um exercício, não um incidente noticiado. Um assinante mantém notebook no Wi-Fi do escritório e telefone numa rede visitada. Os registros compartilham User-Name, mas possuem Acct-Session-Id, NAS, ponto de acesso e policy diferentes.

Um motor de risco quer limitar o notebook e envia CoA-Request válida com nome e filtro. Aplicar às duas sessões transforma um selector fraco em poder transversal. Escolher a mais recente inventa uma regra ausente. Rejeitar o multiple match preserva a diferença entre mensagem válida e objeto autorizado.

RFC 5176 separa Dynamic Authorization Client, Dynamic Authorization Server, NAS e session. Uma pessoa pode manter várias sessões simultâneas ou sucessivas. Endereço do cliente RADIUS não é usuário; NAS não é sessão; nome de conta não é conexão única.

CoA muda autorização. Disconnect encerra serviço e descarta contexto. Usar Disconnect como fallback de uma mudança estreita amplia o dano e apaga evidência. As duas capacidades precisam de roles distintos.

Cardinality faz parte da decisão

Acct-Session-Id, NAS-Port, endereço atribuído e identificadores de station podem compor o alvo. User-Name ou Chargeable-User-Identity ajuda a limitar cross-user action, mas não cria unicidade universal.

O receptor calcula zero, uma ou várias sessões atuais. Session Context Not Found e Multiple Session Selection Unsupported impedem que ausência ou ambiguidade virem escolha arbitrária.

O identificador precisa de provenance: NAS emissor, realm ou tenant, epoch de início e atributos de assignment. Reinício e reutilização podem levar o mesmo valor a outro contexto. O join com accounting é controle de autoridade, não detalhe de banco.

Hop autenticado não significa mandato amplo

No RADIUS histórico, o endereço UDP de origem escolhe o shared secret. Authenticator correto prova coerência com uma relação configurada naquele hop. Não prova aprovação humana, escopo do tenant nem conteúdo imutável através de proxies.

RFC 5176 reconhece o risco de NAS compartilhado: um provider pode afetar usuário de outro. Secrets separados, filtro de rede e reverse-path check reduzem a superfície. A policy local ainda valida sender, realm, NAS, tenant, session e action.

RFC 8559 encaminha CoA de roaming por Operator-Name e pelo opaque Operator-NAS-Identifier criado pela rede visitada. A volta segue o operator realm onde a sessão reside, não o realm do username. A rede visitada resolve o token para seu NAS e remove signalling de proxy antes do hop final.

Cada proxy pode ver e alterar o conteúdo que recebe. A proteção é hop-by-hop. O audit precisa registrar intermediários e escopo delegado em vez de atribuir o pacote final diretamente a um administrador remoto.

Alvo único ainda pode receber ação inválida

Filtro, VLAN, rate ou operação vendor-specific pode ser desconhecida, incompatível com o acesso ou proibida para o tenant. O receptor final rejeita o conjunto se não puder executar tudo; partial success escondido viola atomicity.

Um atributo não deve servir ao mesmo tempo para selecionar e modificar. Primeiro se fecha “quem”, depois se decide “o quê”. Algumas mudanças exigem renegociação em camada inferior. O controller conseguir codificar um valor não cria suporte no NAS.

Running code define compatibilidade real. Um catálogo central descreve capability observada; não a declara para todos os devices.

Retransmission não é nova intenção

Retry UDP idêntico para o mesmo servidor mantém source port, Identifier e Request Authenticator. Atributos diferentes criam nova identidade. O DAS mantém duplicate detection pelo intervalo adequado.

Sem IPsec replay protection, Event-Timestamp limita freshness e permanece igual na retransmissão. A janela de tempo e a memória de duplicados precisam coincidir. Timestamp atual não prova ticket, continuidade da sessão ou aprovação end-to-end.

Response cache pode produzir dois ACKs para uma execução. Métricas separam original, retry, duplicate suprimido, cached reply e decisão posterior independente.

RADIUS/1.1 altera proteção, não o assinante

RFC 9765 define ALPN radius/1.1 e exige TLS 1.3 ou posterior. Depois da negociação bilateral, TLS assume authentication da conexão, integrity e confidentiality. Request/Response Authenticator históricos deixam de ser usados; Message-Authenticator não autentica pacote nesse modo.

Token de quatro octetos relaciona request e reply. Novo pacote recebe novo valor; retransmission DTLS idêntica preserva o Token. Deduplication é por conexão.

A correção é importante, mas codes CoA/Disconnect e a maioria dos atributos mantêm semântica. Ela não escolhe session, não autoriza tenant crossing e não prova enforcement. Um ledger registra certificate, ALPN, TLS, conexão e Token; outro registra realm, NAS, session, action, decisão e efeito.

ACK precisa encontrar o estado real

CoA-ACK é o relato do NAS de que mudou a autorização; NAK e Error-Cause classificam recusa. A verificação compara filtro ou VLAN, rate policy, accounting continuity e tráfego antes e depois.

ACK sem mudança é defeito de enforcement. Mudança sem resposta é defeito de observação do transporte. NAK com mutação parcial é defeito de atomicity. Um único alarme “CoA falhou” não aponta o reparo.

A cadeia mínima contém access, accounting, live inventory, sender e proxies, request fingerprint, Identifier/Token, timestamp, cardinality, capability/policy local, response, installed state, packets e reversal restrita.

Testar duas sessões parecidas de propósito

Criar duas sessões simultâneas com um identificador tentador compartilhado e diferentes Acct-Session-Id e contextos NAS. Uma CoA estreita muda exatamente uma; a outra continua igual. Remover o campo distintivo deve gerar rejeição, não escolha por idade ou ordem da base.

Repetir o pacote não repete o efeito. Testar timestamp vencido, realm errado, NAS errado e action sem suporte. Rollback restaura o estado anterior com o mesmo alcance; Disconnect só reverte se encerrar era a decisão original.

Fontes