sexta-feira, 16 de outubro de 2015

TACACS+ na Autenticação Centralizada de Dispositivos Cisco

Olá Pessoal.

A autenticação de usuários em dispositivos Cisco pode ser realizada através de uma base local de usuários que fica distribuída em cada uma das caixas ou através de uma base centralizada na rede via servidor TACACS+ (Terminal Access Controller Access Control System Plus). O TACACS+ é um protocolo de segurança utilizado para controlar os usuários que tentam se autenticar em roteadores ou switches da Cisco (e de outros fabricantes). Ao acessar uma caixa da rede, o usuário é conectado previamente a um servidor centralizado para fins de identificação e autorização das credenciais. Se autorizado, então o servidor TACACS+ encaminha as informações de login para a caixa remota que solicitou a autenticação.

A solução comercial oficialmente recomendada pela Cisco que implementa as funcionalidades de um servidor TACACS+ é o Cisco Secure Access Control System (ACS). Uma alternativa gratuita e que pode ser instalada no Linux é a ferramenta TAC_Plus (pacote tacacs+ no Debian). Neste artigo irei detalhar os passos necessários para configurar um servidor TACACS+ no Linux Debian e também como configurar as caixas Cisco para que o processo de autenticação seja centralizado através da comunicação com o servidor. A topologia proposta é bastante simples e pode ser observada na figura abaixo, sendo que o laboratório pode ser reproduzido no GNS3 em conjunto com o VirtualBox.


A primeira etapa consiste na instalação do pacote tacacs+ para que o Linux Debian possa ser posteriormente configurado como servidor TACACS+ na rede. Essa tarefa é simples através do APT.

root@tacacs:/# apt-get install tacacs+

Depois de instalado o pacote tacacs+, o arquivo de configuração principal do servidor TACACS+ fica armazenado em /etc/tacacs+/tac_plus.conf. Nas configurações abaixo definiremos uma chave de verificação do servidor denominada "CHAVE" e criaremos dois perfis, sendo um com privilégio administrativo de nível 15 (grupo "admin") e outro com privilégio de execução de nível 7 (grupo "user"). Na sequência, criaremos o usuário "shbbrito" no grupo "admin" e definiremos sua senha que deve ser informada de maneira cifrada. 

###--- em /etc/tacacs+/tac_plus.conf

accounting file = /var/log/tac_plus.acct

key = "CHAVE"

group = "admin"
{
  default service = permit
service = exec
{
priv-lvl = 15
idletime = 10
timeout  = 60
}
}

group = "user"
{
default service = deny
service = exec
{
priv-lvl = 7
idletime = 10
timeout  = 30
}
}

user = "shbbrito"
{
name = "Samuel Henrique Bucke Brito"
member = "admin"
login = des "1oV3QcqhpSN2w"
}


Obs.: Para gerar a senha cifrada pode ser utilizado o aplicativo tac_pwd. Ao digitar tac_pwd no shell, será necessário informar a senha para que o aplicativo possa fazer a cifragem e trazer seu resultado na tela. Neste exemplo, utilizamos a senha "SENHA" que equivale a "1oV3QcqhpSN2w".

Feito isso o servidor TACACS+ já está devidamente configurado no Linux Debian.
Para inicializar o serviço, basta digitar:

root@tacacs:/# service tacacs_plus start
[ OK ] tacacs_plus.service: TACACS+ authentication daemon

Agora que o servidor TACACS+ está operacional na rede, as caixas Cisco (roteadores e switches) devem ser configuradas para fazer a autenticação via TACACS+. Essa configuração é rápida e os comandos necessários para fazê-lo são listados abaixo, com destaque em amarelo para as informações do IP do servidor e a respectiva key que configuramos anteriormente.

Roteador(config)# aaa new-model
Roteador(config)# aaa authentication login default group tacacs+ local
Roteador(config)# aaa authorization exec default group tacacs+ local
Roteador(config)# tacacs-server host 192.168.221.1
Roteador(config)# tacacs-server key CHAVE

Façam seus testes...

Samuel.

14 comentários:

  1. Uma opção menos segura para informar a senha:

    login = cleartext "SENHA"

    ResponderExcluir
  2. Uma opção mais segura para informar a senha é utilizar a base local de usuários do servidor Linux, o que pode ser feito linkando o arquivo /etc/passwd:

    login = file /etc/passwd

    ResponderExcluir
  3. Qual a diferença básica entre usar Tacacs e Radius?

    ResponderExcluir
    Respostas
    1. O TACACS+ é um protocolo proprietário da Cisco que teve seu código-fonte publicado. O RADIUS é um padrão aberto publicado em RFC que é amplamente utilizado em ambientes heterogêneos. Do ponto de vista técnico, o TACACS+ é mais completo porque permite mais configurações específicas para caixas da Cisco.

      Excluir
  4. Dá para configurar o TACACS+ no UBUNTU da mesma maneira?

    ResponderExcluir
  5. Bom dia

    Gostaria de configurar essa autenticação com AD ou LDAP, você já fez isso? Sabe se é possível?

    ResponderExcluir
  6. Olá mestre!!
    nao consegui subir meu tacacs+. Editei o arquivo como foi mostrado, porém esta dando falha quando estarto o serviço. preciso fazer alteraçao em mais algum arquivo?
    Obrigado!!
    sou fã do blog!!

    ResponderExcluir
  7. Gostaria de saber se esta configuração se aplica ao acesso SSH no Router?

    ResponderExcluir
  8. Com syslog você consegue coletar todas as mensagens das ações resultantes de configurações que foram realizadas na caixa.

    ResponderExcluir
    Respostas
    1. Opa, qual o nivel do syslog deve estar, e pega nesse nivel mesmo de sho running config por exemple ? Que tenho um graylog no meu ambiente porem nao estou conseguindo pegar esse nivel ..so qdo salva uma nova config.

      Excluir
  9. pa Samuel , bom dia, minha duvida é que se consigo pegar armazenar todos os comandos "dados" em um elemento de rede ?
    Ex: loguei(autenticado pelo tacacs)
    #show running-config
    ethernet-if#no shutdown

    Se esse comando "impudatos" são armazenados/podem pelo tacacs ?

    Att,
    Marcelo

    ResponderExcluir