Manter uma conta local de emergência não a torna uma segunda oportunidade para cada login rejeitado. No modelo AAA do Cisco IOS e IOS XE, essa base só é consultada quando o método anterior falha de uma forma específica, e um servidor RADIUS que responde com rejeição não falhou dessa forma. A conta local cobre um método inacessível, não um rejeitado. Acreditar no contrário transforma uma decisão de política numa caça a uma falha de servidor que não existe.

Porque é que a lista de métodos parece uma escada

Uma linha como aaa authentication login default group radius local é lida da esquerda para a direita, e a maioria das pessoas lê-a como tente RADIUS e depois tente a base de dados local. A sintaxe convida a essa leitura porque uma lista é uma sequência. A semântica é mais estreita: a lista nomeia métodos de autenticação, e a regra para avançar de um para o seguinte depende do resultado do método anterior, não de dar ao utilizador outra tentativa.

Um método que devolve um erro e um método que devolve uma falha levam aqui a resultados diferentes. A rejeição é uma resposta, porque o servidor processou as credenciais e disse não, e a lista para aí. Um servidor inacessível, um pedido expirado ou uma resposta que não pode ser validada é o caso que deixa o método seguinte correr, e apenas onde o tratamento de falhas da plataforma está configurado assim. Por isso o conselho clássico de acrescentar local funciona em quedas e não faz nada com palavras-passe erradas. Leia a lista, em vez disso, como duas perguntas: qual método responde e o que a plataforma considera uma resposta.

Separe a lista de métodos do grupo de servidores

A lista de métodos é uma camada e o grupo de servidores é outra. A palavra-chave group radius nomeia um grupo cuja ordem interna, repetições, tempos limite e deteção de servidor morto pertencem ao grupo, enquanto um método local é uma camada acima dele. Ajustar qualquer coisa dentro do grupo não pode, portanto, transformar uma rejeição em fallback. Confirme a que lista o serviço realmente se refere antes de mudar qualquer uma das camadas.

Imprima a configuração AAA e leia a lista para a qual o serviço aponta, não o valor predefinido que se lembra de ter escrito. Faça isso a partir do dispositivo onde o serviço realmente termina.

show running-config | section aaa
show radius server-group RAD-GRP
show aaa servers

A tabela de servidores informa o estado e os contadores de cada entrada, o que lhe diz se a gateway alcançou o servidor durante a tentativa. Um servidor marcado como ativo com um contador de pedidos crescente tem respondido, por isso o login falhado é uma decisão e não um problema de conetividade.

Leia a resposta antes do registo

O código de resposta nomeia o resultado e implica o seu próprio passo seguinte. Access-Reject significa que o backend tomou uma decisão, por isso a evidência útil é a política que correspondeu e o estado da conta por trás dela. Access-Challenge significa que a troca quer outro passo suportado, como um segundo fator, e o fallback local saltaria em silêncio algo que a política exige.

Reproduza uma tentativa com uma conta de teste designada para que a resposta e o registo do backend possam ser comparados no mesmo instante. Use uma credencial cuja falha lhe seja permitida.

test aaa group RAD-GRP svc-ops 'LabPass!24' legacy
debug radius authentication

Uma entrada de cliente RADIUS ausente ou não reconhecida é uma causa comum de tempo limite silencioso, porque o servidor recebe o pedido, não encontra nenhuma definição de cliente correspondente e descarta-o sem responder. Uma incompatibilidade do segredo partilhado também costuma parecer um tempo limite, porque a resposta falha a validação e é descartada. Nada disso se parece com Access-Reject, e nada disso se repara acrescentando uma conta local. Verifique a definição do cliente e o segredo nos dois lados antes de tocar na lista de métodos.

Porque é que a conta local nunca provou nada

Uma conta que fica depois de um grupo na lista prova apenas que alguém planeou uma queda. Não diz nada sobre se o plano funciona, porque o caso que o exercita é o caso que ninguém ensaia: o servidor deixou de responder. Um login local a que nunca se chega em funcionamento normal pode carregar uma palavra-passe expirada ou um estado bloqueado durante meses sem que ninguém repare.

O acesso de emergência é uma decisão de design, não um efeito secundário da configuração. Dê-lhe a sua própria conta restrita, o seu próprio responsável e um procedimento de recuperação escrito, e inclua a rotação do segredo partilhado nesse procedimento. Manter uma palavra-passe local com o mesmo nome para cada utilizador central é o padrão que reintroduz em silêncio o acesso que julgava ter removido.

O teste que importa é deliberado, e vai interromper logins enquanto decorre. É exatamente por isso que pertence a uma janela agendada com o passo de reversão escrito primeiro.

Verifique o caminho de fallback durante uma janela de manutenção

Ordene o teste de modo a nunca remover o último caminho de entrada. Confirme primeiro um caminho de gestão independente, depois o acesso normal permitido, depois uma rejeição deliberada, depois o comportamento de queda aprovado. Esses quatro casos têm resultados esperados diferentes, e juntá-los num só teste é como as pessoas se trancam fora de um dispositivo de que ainda precisam.

Execute cada verificação a partir de uma sessão de consola ou de um caminho fora de banda, para que um erro não possa fechar a sessão em que está a trabalhar. A consola é o único caminho que não depende do componente em teste.

show aaa servers
show running-config | include aaa authentication
test aaa group RAD-GRP svc-ops 'LabPass!24' legacy

Depois, restaure a configuração anterior e confirme que os contadores voltam a mexer no próximo login real. Se a rejeição deliberada produzir um login local em vez de uma rejeição, então a lista ou o tratamento de falhas não é o que acreditava, e essa descoberta vale mais do que a queda com que começou. Escreva o resultado no registo de alterações ao lado dos nomes das contas e da data do teste.

Artigos relacionados