Este tutorial apresenta uma configuração completa de um roteador Cisco IOS para autenticação de usuários através de um servidor RADIUS, utilizando também uma conta local como fallback e habilitando acesso remoto por Telnet e SSH.
O procedimento foi validado em laboratório com Cisco IOS 12.4 e MikroTik User Manager 7.21.5.
A estrutura utilizada foi semelhante a:
Ou o que nos interessa é apenas isso:
RADIUS
MikroTik User Manager
100.66.0.1
|
|
+------+------+
| |
Cisco 01 Cisco 02
100.66.0.2 100.66.0.6
Cisco 01 e Cisco 02 utilizam a mesma configuração lógica, alterando apenas hostname, IP e cadastro do cliente RADIUS.
O servidor RADIUS possui os roteadores Cisco cadastrados como clientes RADIUS.
Exemplo:
RADIUS Server: 100.66.0.1
Authentication: UDP/1812
Accounting: UDP/1813
Shared Secret: CiscoRadius123
O usuário utilizado nos testes foi:
Usuário: cisco01
Senha: cisco01
Nesta etapa será configurado o User Manager para enviar ao Cisco o atributo Cisco-AVPair, informando que o usuário RADIUS deve receber nível de privilégio 15.
No ambiente testado, foi necessário combinar:
atributo Cisco-AVPair no User Manager;
grupo no User Manager contendo esse atributo;
usuário associado ao grupo;
aaa authorization exec no Cisco.
O User Manager permite criar atributos RADIUS personalizados e associá-los a grupos, fazendo com que sejam enviados nos pacotes Access-Accept.
No MikroTik:
/user-manager/attribute
add name=Cisco-AVPair vendor-id=9 type-id=1 value-type=string packet-types=access-accept
Verifique:
/user-manager/attribute/print
Deve aparecer algo semelhante a:
NAME VALUE-TYPE
Cisco-AVPair string
name=Cisco-AVPair
Nome do atributo RADIUS utilizado pelo Cisco.
vendor-id=9
Identifica a Cisco como fabricante do atributo.
type-id=1
Identificador do atributo Cisco-AVPair.
value-type=string
O conteúdo do atributo será enviado como texto.
packet-types=access-accept
O atributo será enviado no Access-Accept, ou seja, na resposta positiva de autenticação.
Agora será criado um grupo específico para os usuários Cisco que deverão receber privilégio 15:
/user-manager/user/group
add name=Cisco-Administrators
Verifique:
/user-manager/user/group/print detail
Agora vem a parte principal.
O atributo será associado ao grupo com o seguinte valor:
shell:priv-lvl=15
Execute:
/user-manager/user/group
set [find name=Cisco-Administrators] attributes="Cisco-AVPair:shell:priv-lvl=15"
Verifique:
/user-manager/user/group/print detail
O resultado deverá apresentar algo semelhante a:
name="Cisco-Administrators"
attributes="Cisco-AVPair:shell:priv-lvl=15"
Importante: as aspas são importantes nesse comando. O valor completo do atributo contém : e =, portanto é recomendável informar o valor entre aspas no CLI do RouterOS.
A lógica é semelhante à utilização de Mikrotik-Group, mas neste caso o atributo é o Cisco-AVPair e o valor informa ao equipamento Cisco o nível de privilégio:
Cisco-AVPair:shell:priv-lvl=15
Agora pode ser criado o usuário:
/user-manager/user
add name=cisco01 password="SENHA_DO_USUARIO" group=Cisco-Administrators
Por exemplo:
/user-manager/user
add name=cisco01 password="cisco01" group=Cisco-Administrators
Verifique:
/user-manager/user/print detail
O usuário deverá aparecer associado ao grupo:
name="cisco01"
group=Cisco-Administrators
Como o atributo está associado ao grupo, não é necessário cadastrá-lo novamente individualmente no usuário. O User Manager permite justamente utilizar grupos para aplicar atributos comuns a vários usuários.
O Cisco também precisa estar cadastrado no User Manager como um equipamento autorizado a realizar requisições RADIUS.
Exemplo para um Cisco com endereço 100.66.0.2:
/user-manager/router
add name=Cisco 01 address=100.66.0.2 protocol=udp shared-secret="CiscoRadius123" coa-port=3799
Confira:
/user-manager/router/print detail
Deve aparecer:
name="Cisco 01"
address=100.66.0.2
protocol=udp
coa-port=3799
O shared-secret deve ser exatamente o mesmo configurado no Cisco.
Antes de ativar AAA/RADIUS, é altamente recomendável criar pelo menos uma conta administrativa local.
username admin privilege 15 secret admin
username admin
Cria o usuário local admin.
privilege 15
Define o nível de privilégio 15 para esse usuário.
No Cisco IOS, o nível 15 corresponde ao nível privilegiado máximo.
secret admin
Define a senha utilizando o mecanismo secret, que é preferível ao comando password para contas locais.
No laboratório, o comando apareceu posteriormente no running-config como:
username admin privilege 15 secret 5 $1$...
A senha não aparece em texto puro no running-config.
Boa prática: em ambiente real, utilizar uma senha forte e não utilizar admin como senha.
Além do usuário administrativo, foi configurada uma senha para o comando enable:
enable secret cisco
Essa configuração é importante como mecanismo adicional de acesso administrativo local.
Depois de entrar em modo EXEC de usuário:
Router>
o comando:
enable
solicita a senha configurada em:
enable secret cisco
e leva a:
Router#
Essa configuração também fornece uma alternativa caso seja necessário acessar o equipamento sem depender do servidor RADIUS.
O primeiro comando relacionado ao AAA é:
aaa new-model
Ele habilita o modelo AAA do Cisco IOS.
AAA significa:
Authentication
Authorization
Accounting
Ou seja:
Authentication — quem é o usuário?
Authorization — o que o usuário pode fazer?
Accounting — registrar o que o usuário fez.
Neste laboratório foram utilizados principalmente Authentication e Authorization.
A configuração utilizada foi:
aaa authentication login default group radius local
Essa linha é uma das mais importantes.
Ela cria/utiliza a lista de métodos de autenticação chamada:
default
e determina a ordem:
RADIUS → LOCAL
Ou seja, quando um usuário realizar login:
O Cisco tenta autenticar no RADIUS.
Se o RADIUS não estiver disponível ou não concluir a autenticação, o Cisco pode utilizar a base local.
A estrutura pode ser entendida assim:
aaa authentication login default group radius local
│ │ │ │ │ │
│ │ │ │ │ └── banco local
│ │ │ │ └──────── grupo RADIUS
│ │ │ └──────────────── lista default
│ │ └────────────────────── login
│ └───────────────────────────────────── authentication
└───────────────────────────────────────── AAA
Aqui está uma das configurações que fez diferença no laboratório:
aaa authorization exec default group radius local
Essa configuração controla a autorização da sessão EXEC depois que o usuário é autenticado.
A sequência passa a ser aproximadamente:
Usuário
↓
Autenticação
↓
RADIUS aceita
↓
Autorização EXEC
↓
Cisco cria a sessão EXEC
↓
Router#
Sem essa configuração, o comportamento observado no laboratório era:
Router>
mesmo com o usuário RADIUS autenticado.
Depois de adicionar:
aaa authorization exec default group radius local
o acesso remoto passou a resultar diretamente em:
Router#
Para que o usuário autenticado pelo RADIUS entre diretamente no modo privilegiado (Router#), as duas configurações são necessárias no ambiente testado:
aaa authentication login default group radius local
aaa authorization exec default group radius local
A autenticação (aaa authentication login) valida o usuário e a senha no RADIUS.
A autorização de EXEC (aaa authorization exec) permite que o Cisco aplique os atributos de autorização recebidos do RADIUS durante a criação da sessão EXEC.
Também foi necessário manter o atributo Cisco-AVPair no User Manager para atribuir o nível de privilégio ao usuário Cisco:
Cisco-AVPair = shell:priv-lvl=15
Esse atributo pode ser associado ao usuário ou ao grupo utilizado pelo usuário RADIUS.
No ambiente testado, somente o atributo no MikroTik não foi suficiente. Sem:
aaa authorization exec default group radius local
o usuário conseguia autenticar, mas a sessão não recebia o privilégio 15.
Portanto, o funcionamento validado foi:
Cisco
├── aaa authentication login default group radius local
│ └── autentica o usuário
│
└── aaa authorization exec default group radius local
└── solicita/aplica autorização da sessão EXEC
│
▼
MikroTik User Manager
│
└── Cisco-AVPair
shell:priv-lvl=15
│
▼
Router#
Resultado: autenticação RADIUS + autorização EXEC + Cisco-AVPair:shell:priv-lvl=15 → usuário entra diretamente em Router#.
No Cisco:
radius-server host 100.66.0.1 auth-port 1812 acct-port 1813
Essa configuração informa onde está o servidor RADIUS.
100.66.0.1
É o endereço IP do servidor RADIUS.
auth-port 1812
A porta UDP 1812 é utilizada para autenticação RADIUS.
acct-port 1813
A porta UDP 1813 é utilizada para Accounting.
A configuração completa:
radius-server host 100.66.0.1 auth-port 1812 acct-port 1813
pode ser interpretada como:
Servidor RADIUS
|
+-- Authentication → UDP 1812
|
+-- Accounting → UDP 1813
O Cisco também precisa conhecer o segredo compartilhado configurado para esse cliente RADIUS:
radius-server key CiscoRadius123
Esse valor precisa ser exatamente igual ao configurado no servidor RADIUS para o roteador.
Por exemplo:
Cisco:
CiscoRadius123
e no RADIUS(MikroTik):
CiscoRadius123
O Shared Secret não é a senha do usuário.
São duas coisas diferentes:
Usado entre:
Cisco ↔ RADIUS
Usada entre:
Usuário ↔ Cisco/RADIUS
Durante o laboratório, uma situação importante foi identificada: quando o Cisco enviava a requisição RADIUS, mas não recebia uma resposta válida, o debug mostrava retransmissões.
Posteriormente, quando a comunicação estava correta, apareceu:
RADIUS: Received from id ... Access-Accept
Esse é um excelente indicador de que a comunicação RADIUS está funcionando.
As linhas VTY são utilizadas para acesso remoto ao equipamento.
A configuração utilizada foi:
line vty 0 4
login authentication default
transport input telnet ssh
line vty 0 4
Seleciona as linhas VTY 0 até 4.
Em outras palavras, trata-se da configuração das sessões de acesso remoto disponíveis nessas linhas.
login authentication default
Essa linha determina que o login das VTY utilizará a lista AAA chamada:
default
que foi configurada anteriormente:
aaa authentication login default group radius local
Assim, a cadeia fica:
Acesso VTY
↓
login authentication default
↓
lista "default"
↓
RADIUS
↓
LOCAL como fallback
Foi utilizado:
transport input telnet ssh
Isso permite conexões remotas através de:
Telnet
SSH
Portanto:
Telnet → permitido
SSH → permitido
Em um ambiente de produção, o ideal é preferir SSH e desabilitar Telnet, pois Telnet não fornece a mesma proteção criptográfica do SSH.
Nesse caso, a configuração recomendada seria:
transport input ssh
Para um laboratório onde os dois protocolos estão sendo estudados, pode-se manter:
transport input telnet ssh
Para habilitar o SSH no Cisco IOS utilizado no laboratório, foram executados:
conf t
ip domain-name omegait-telecom.local
crypto key generate rsa
ip ssh version 2
end
ip domain-name omegait-telecom.local
O domínio é utilizado pelo IOS durante a geração das chaves RSA.
Sem um hostname e domínio adequadamente configurados, a geração da chave RSA pode não funcionar como esperado.
No laboratório:
hostname: cisco01
domain: omegait-telecom.local
O comando:
crypto key generate rsa
gera as chaves criptográficas utilizadas pelo SSH.
Durante a execução, o IOS pode perguntar o tamanho da chave.
Em equipamentos antigos, pode aparecer algo semelhante a:
How many bits in the modulus [512]:
No laboratório com o IOS utilizado, foi empregada uma chave RSA de 1024 bits. Em ambientes reais, deve-se utilizar um tamanho compatível com a política de segurança vigente.
Depois que a chave RSA é criada, o equipamento passa a ter os elementos necessários para atuar como servidor SSH.
Foi configurado:
ip ssh version 2
Isso força o Cisco a utilizar SSH versão 2.
O SSHv2 deve ser preferido ao SSHv1 por questões de segurança e compatibilidade.
A configuração funcional utilizada no laboratório ficou essencialmente assim:
!
aaa new-model
!
aaa authentication login default group radius local
aaa authorization exec default group radius local
!
enable secret cisco
!
username admin privilege 15 secret admin
!
radius-server host 100.66.0.1 auth-port 1812 acct-port 1813
radius-server key CiscoRadius123
!
line vty 0 4
login authentication default
transport input telnet ssh
!
ip domain-name omegait-telecom.local
crypto key generate rsa
ip ssh version 2
!
Depois da configuração, pode-se salvar:
write memory
ou:
write
Para verificar as linhas VTY:
show running-config | section line vty
O resultado esperado é semelhante a:
line vty 0 4
login authentication default
transport input telnet ssh
Isso confirma que as VTY estão utilizando a lista AAA default e aceitando Telnet/SSH.
O comando:
show ip ssh
permite verificar o estado do servidor SSH.
Um resultado esperado deve indicar que o SSH está habilitado e, no laboratório, configurado para versão 2.
Também pode ser utilizado:
show ssh
para visualizar sessões SSH existentes.
A partir de outro equipamento, pode ser realizado um teste SSH:
ssh cisco01@100.66.0.2
ou, a partir de um MikroTik:
/system ssh address=100.66.0.2 user=cisco01
Após informar a senha do usuário RADIUS:
cisco01
o resultado esperado no laboratório foi:
cisco01#
ou:
cisco02#
Observe a diferença:
cisco01>
representa nível EXEC 1.
Enquanto:
cisco01#
representa o modo EXEC privilegiado.
Também pode ser realizado um teste Telnet:
telnet 100.66.0.2
O Cisco deve apresentar:
User Access Verification
Username: cisco01
Password:
Depois da autenticação, com a autorização EXEC configurada corretamente:
cisco01#
A conta local:
username admin privilege 15 secret admin
também deve ser testada.
Por exemplo:
Username: admin
Password: admin
Como a lista AAA foi configurada como:
aaa authentication login default group radius local
o Cisco possui o método local como alternativa ao RADIUS.
Isso é particularmente importante para evitar ficar completamente dependente do servidor RADIUS para administração do equipamento.
Depois de entrar no Cisco:
show privilege
Um usuário privilegiado deverá apresentar:
Current privilege level is 15
No laboratório, o usuário RADIUS passou a entrar diretamente em:
Router#
após a configuração:
aaa authorization exec default group radius local
Durante o laboratório, o debug RADIUS foi extremamente útil.
Para ativar:
debug radius
Para desativar:
undebug all
ou:
no debug all
O comando:
undebug all
é especialmente útil quando o terminal começa a ficar constantemente preenchido pelas mensagens de debug.
Quando o Cisco envia uma solicitação:
RADIUS: Send Access-Request to 100.66.0.1:1812
significa que o Cisco está enviando a requisição de autenticação para o servidor.
Quando aparece:
RADIUS: Received from id ... Access-Accept
o servidor RADIUS aceitou a autenticação.
Quando aparece:
RADIUS: Received from id ... Access-Reject
o servidor recusou a autenticação.
Já mensagens como:
RADIUS: Retransmit to ...
indicam que o Cisco está retransmitindo a solicitação porque não recebeu uma resposta válida dentro do intervalo esperado.
Para configurar um Cisco do zero, uma sequência prática é:
conf t
hostname cisco01
aaa new-model
aaa authentication login default group radius local
aaa authorization exec default group radius local
enable secret cisco
username admin privilege 15 secret admin
radius-server host 100.66.0.1 auth-port 1812 acct-port 1813
radius-server key CiscoRadius123
ip domain-name omegait-telecom.local
crypto key generate rsa
ip ssh version 2
line vty 0 4
login authentication default
transport input telnet ssh
end
write
Depois:
show running-config | section line vty
e:
show ip ssh
Por fim, testar:
Telnet → usuário RADIUS
SSH → usuário RADIUS
Login local → usuário admin
Enable → senha local
Com essa configuração, o fluxo fica:
┌───────────────────┐
│ Cliente SSH/Telnet│
└────────┬──────────┘
│
▼
┌─────────────────┐
│ Cisco VTY 0-4 │
└────────┬────────┘
│
▼
login authentication default
│
▼
┌─────────────────┐
│ RADIUS │
│ UDP 1812 │
└────────┬────────┘
│
Access-Accept
│
▼
authorization exec default
│
▼
┌─────────────────┐
│ Cisco EXEC │
│ │
│ Router# │
└─────────────────┘
Se o RADIUS não puder ser utilizado, a lista:
group radius local
permite utilizar a base local como alternativa, conforme o comportamento do método AAA e a disponibilidade do servidor.
Comando : Função
aaa new-model : Habilita AAA
aaa authentication login default group radius local : Autenticação RADIUS com fallback local
aaa authorization exec default group radius local : Autoriza a criação da sessão EXEC
username admin privilege 15 secret ... : Cria administrador local
enable secret ... : Define senha local do modo privilegiado
radius-server host ... : Define o servidor RADIUS
auth-port 1812 : Porta de autenticação RADIUS
acct-port 1813 : Porta de Accounting
radius-server key ... : Shared Secret entre Cisco e RADIUS
line vty 0 4 : Seleciona as linhas de acesso remoto
login authentication default : Usa a lista AAA default nas VTY
transport input telnet ssh : Permite Telnet e SSH
ip domain-name ... : Define domínio utilizado na geração das chaves
crypto key generate rsa : Gera as chaves RSA para SSH
ip ssh version 2 : Habilita/força SSH versão 2
show ip ssh : Verifica o SSH
show ssh : Verifica sessões SSH
show privilege : Mostra o nível de privilégio atual
debug radius : Ativa diagnóstico RADIUS
undebug all : Desativa todos os debugs
write : Salva a configuração
Se o objetivo for guardar uma versão curta para consulta:
aaa new-model
aaa authentication login default group radius local
aaa authorization exec default group radius local
enable secret cisco
username admin privilege 15 secret admin
radius-server host 100.66.0.1 auth-port 1812 acct-port 1813
radius-server key CiscoRadius123
ip domain-name omegait-telecom.local
crypto key generate rsa
ip ssh version 2
line vty 0 4
login authentication default
transport input telnet ssh
end
write
Essa é a configuração que foi efetivamente validada no laboratório, incluindo autenticação RADIUS, fallback local, privilégio 15 e acesso SSH em dois roteadores Cisco 1710(Dynamips) C1710-bk9no3r2sy-mz.124-23.image no EVE-NG version: 6.2.0-4 e QEMU version: 2.4.0.