Aprenda a instalar e configurar um servidor TACACS+ para Linux, ao mesmo tempo em que você aprende a configurar o AAA em roteadores Cisco.
Instalando e configurando o TACACS+ para Linux
Existem diversos softwares comerciais que permitem um computador atuar como "host" para as contas e senhas de usuários, entre os demais parâmetros (como "authorization" e "accouting"). Um ótimo produto é o Cisco Secure Access Control Server (Cisco ACS). Acontece que muitos administradores de redes não dispõem de uma solução comercial e de alta performance para servidores TACACS+ ou RADIUS. Sendo assim, indicaremos uma solução open source para este serviço. Neste artigo, estaremos utilizando o nosso servidor TACACS+ para Linux, o "tac_plus". Ele poderá ser baixado clicando aqui! Já o source para o tac_plus poderá ser baixado aqui. O nosso tac_plus foi configurado no Red Hat 9, portanto adapte a instalação de seu tac_plus de acordo com a sua distribuição Linux.
Instalando o RPM
Bem simples: rpm -ivh tac_plus-F4.0.3.alpha-7.i386.rpm ou rpm -Uvh tac_plus-F4.0.3.alpha-7.i386.rpm, caso você esteja efetuando o upgrade do tac_plus.
O binário do tac_plus será instalado em /usr/sbin/tac_plus, e um diretório para o arquivo de configuração será criado conforme: /etc/tacacs, arquivo tac_plus.cfg. Em seguida faremos a configuração no arquivo tac_plus.cfg.
Configurando o tac_plus
Aqui mostraremos um exemplo bem simples, uma vez que o artigo anterior está repleto de muitos detalhes técnicos. Com o editor de sua preferência (vi, etc), edite o arquivo tac_plus para inserir os parâmetros necessários. Os comentários em vermelho indicam o que foi alterado no arquivo original do tac_plus. Por favor, ignore os trechos que começam com "|", quando você for efetuar a configuração do tac_plus ... :-)
key = chavedotacacsplus | aqui informamos a chave que deverá ser consistente (idêntica) entre o(s) roteador(es) e o TACACS+ server
# Use /etc/passwd file to perform authentication
default authentication = file /etc/shadow | Aqui informamos ao tac_plus que o método de autenticação default (das contas de usuários) deverá ocorrer no shadow. Você poderá manter o default (passwd)
# Starting at this current version, tacacs+ also uses the default PAM authentication
#default authentication = pam pap
#If you would like to use DB authentication
#default authentication = db "db_type://db_user:db_pass@db_hostname/db_name/db_table?name_field&pass_field
# db_type: mysql or null
# db_user: Database connect username
# db_pass: Database connection password
# db_hostname : Database hostname
# db_name : Database name
# db_table : authentication table name
# name_field and pass_field: Username and password field name at the db_table
# Accounting records log file
accounting file = /var/log/tac_acc.log | Este é o arquivo onde todos os eventos do accouting serão armazenados. É o padrão do tac_plus.
# Would you like to store accounting records in a database?
# db_accounting = "db_type://db_user:db_pass@db_hostname/db_name/db_table"
# Same as above..
#All services are alowed..
user = DEFAULT {
service = ppp protocol = ip {}
}
user = ciscostudent { | Este é um usuário que deverá ser autenticado fora do shadow.
login = cleartext teste | A senha do referido usuário. Note que ela é "cleartext", portanto visível dentro do arquivo tac_plus.cfg. Obviamente, isto não é um método seguro :-)
cmd = show { | Comando "show" será permitido para este usuário
permit "interface*" | O parâmetro "interface", abaixo de "show", será permitido
permit "ip interface*" | O parâmetro "ip interface", abaixo de "show", será permitido
}
cmd = ping { | O mesmo com relação ao comando "show"
permit .*
}
cmd = traceroute { | O mesmo com relação ao comando "show"
permit .*
}
}
user = rsilva {
login = cleartext teste
cmd = show {
permit "interface*"
permit "ip interface*"
}
cmd = ping {
permit .*
}
cmd = traceroute {
permit .*
}
}
Iniciando o tac_plus
No Red Hat, /etc/rc.d/init.d/tac_plus start (opções: start|stop|status|restart|reload|test). Para verificar se o tac_plus está rodando, use o "status" ou então ps -ax | grep -in tac. Exemplo de output para este comando: 55:21312 ? S 0:00 tac_plus -C /etc/tacacs/tac_plus.cfg . Certifique-se de que a porta TCP 49 está disponível para que seus roteadores possam acessar o seu TACACS+ server, ou seja, configure o seu iptables corretamente de forma a permitir o acesso ao tac_plus.
Configurando o AAA no roteador Cisco
O nosso cenário será um simples esquema de autenticação de usuários para o gerenciamento dos equipamentos Cisco(leia-se: acesso à console do roteador). Vamos aos procedimentos:
Router-A#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#aaa new-model
Router-A(config)#aaa authentication login default group tacacs+
Router-A(config)#aaa authentication login no_enable group tacacs+
Router-A(config)#aaa authentication enable default enable
Router-A(config)#aaa authentication ppp default group tacacs+
Router-A(config)#aaa accounting commands 15 default start-stop group tacacs+
Router-A(config)#aaa session-id common
Router-A(config)#tacacs-server host 192.168.168.1 single-connection
Router-A(config)#tacacs-server key chavedotacacsplus
Router-A(config)#aaa authentication banner # Este e o Router-A #
Router-A(config)#aaa authentication fail-message # Autenticacao recusada #
Opcionalmente, faremos algo de forma a evitar que percamos o acesso ao equipamento, ao mesmo tempo sem utilizar o método "None", conforme citado no nosso primeiro artigo sobre o AAA. O que faremos aqui é muito simples: não colocaremos o LINE CON 0 para o processo de autenticação via TACACS+.
Router-A(config)#line con 0
Router-A(config-line)# login authentication no_tacacs
Router-A(config-line)#exit
Note que neste modelo de configuração estamos informando o servidor TACACS+, chave para o serviço, autenticação PPP, banners, entre outros, tudo isto com poucas linhas de configuração. Além disto, temos o accouting configurado para qualquer comando "privilege 15" digitado no roteador. Volto a lembrar que o AAA é bem extenso, e a sua implementação deverá seguir conforme as suas necessidades.
Para checarmos a nossa configuração, os seguintes comandos serão utilizados (além do "show run"):
Router-A#show tacacs
Server: 192.168.168.1/49: opens=7 closes=6 aborts=0 errors=0
packets in=7 packets out=13 timeout=0 connection_fails=0 expected replie
s=0
connection 46C038 state=CLOSEWAIT
Testando o AAA e tac_plus
Chegou a hora da verdade. Veremos se o esquema funciona realmente... em nossa estação Linux (podendo ser Windows, ou qualquer outra que suporte Telnet..):
[ciscostudent@portal-srv ciscostudent]$ telnet 172.16.4.10
User Access Verification
Username: ciscostudent
Password:
Router-A>enable
Password:
Router-A#
Agora digitaremos alguns comandos no terminal e, em seguida, uma consulta ao nosso /var/log/tac_plus.log ...
Router-A#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router-A(config)#interface e0
Router-A(config-if)#description eth0
Router-A(config-if)#exit
Router-A(config)#exit
[root@portal-srv log]# tail /var/log/tac_acc.log
Mon Aug 11 00:36:14 2003 172.16.4.10 ciscostudent tty2 172.16.4.3 stop task_id=24 timezone=EST service=shell priv-lvl=15 cmd=configure terminal
Mon Aug 11 00:36:17 2003 172.16.4.10 ciscostudent tty2 172.16.4.3 stop task_id=25 timezone=EST service=shell priv-lvl=15 cmd=interface Ethernet 0
Mon Aug 11 00:36:40 2003 172.16.4.10 ciscostudent tty2 172.16.4.3 stop task_id=26 timezone=EST service=shell priv-lvl=15 cmd=description eth0
Como pudemos notar, o TACACS+ server está 100% funcional, e o usuário foi capaz de efetuar a autenticação sem problemas. Ah, o accouting vai bem por sinal! :-)
Mais exemplos de TACACS+ e AAA
Para não perdermos a bola por aqui, estaremos incluindo mais alguns exemplos para a configuração do tacacs e AAA.
TACACS+ e PPP
Neste exemplo, estaremos informando os comandos para utilizarmos o TACACS+ como protocolo de segurança para as autenticações PPP.
aaa new-model
aaa authentication ppp teste group tacacs+ local
interface ethernet 0
ppp authentication chap pap teste
tacacs-server host 192.168.168.1
tacacs-server key chavedotacacs
aaa authentication ppp MIS-access if-needed group tacacs+ local
interface ethernet 0
ppp authentication pap MIS-access
AAA Packet of Disconnect
Neste exemplo, estaremos configurando o PoD, que termina as sessões que coincidirem com os atributos definidos pelo administrador da rede.
aaa new-model
aaa authentication ppp default tacacs+
aaa accounting network default start-stop tacacs+
aaa accounting delay-start
aaa pod server server-key chavedotacacs
tacacs-server host 192.168.168.1 non-standard
tacacs-server key chavedotacacs
Configuração com o MS-CHAP
Caso você possua necessidade de autenticar usuários em estações Windows para os seus equipamentos Cisco, eis um exemplo de configuração que poderá ser utilizado:
aaa new-model
aaa authentication login admins local
aaa authentication ppp dialins group tacacs+ local
aaa authorization network default group tacacs+ local
aaa accounting network default start-stop group tacacs+
username ciscostudent password welcome
tacacs-server host 192.168.168.1
tacacs-server key chavedotacacs
interface group-async 1
group-range 1 16
encapsulation ppp
ppp authentication ms-chap dialins
line 1 16
autoselect ppp
autoselect during-login
login authentication admins
modem dialin
Exemplos para a configuração do "Authorization"
Após termos mostrado alguns exemplos sobre a configuração do AAA e TACACS+, mostraremos alguns exemplos para a configuração otimizada do "segundo A" do AAA.
Authorization para serviços de rede (PPP, ARA, etc)
Os seguintes comandos oferecem o mínimo necessário:
aaa authorization network default group tacacs+
ip address-pool local
ip local-pool velox 200.158.19.1 200.158.19.255
ip local-pool virtua 200.159.20.1 200.159.20.255
Note que se o servidor TACACS+ estiver indisponível, a autenticação falhará. Talvez seja prudente incluir o método "none" como medida de garantir a autenticação em eventos de indisponibilidade do servidor TACACS+. Exemplo: aaa authorization network default group tacacs+ none .
No arquivo /etc/tacacs/tac_plus.cfg, as seguintes alterações farão com que o esquema funcione sem problemas:
user = cliente_velox {
login = cleartext "senhavelox"
service = ppp protocol = ip {
addr-pool=velox
}
}
user = cliente_virtua {
login = cleartext "senhavirtua"
service = ppp protocol = ip {
addr-pool=virtua
Reverse Telnet
O reverse telnet é muito utilizado pelas redes corporativas, como uma forma de garantir o acesso aos roteadores para os administradores da rede. Em muitos casos, a disposição lógica deste processo obedece o esquema "OOB" (out-of-band). É sempre muito útil conhecer todas as possibilidades de configuração do AAA, inclusive para reverse telnet! O Reverse Telnet, assim como o gerenciamento OOB, será discutido em um outro artigo. Fique atento!
aaa new-model
aaa authentication login default group tacacs+
aaa authorization reverse-access default group tacacs+
!
tacacs-server host 192.168.168.1
tacacs-server timeout 90
tacacs-server key chavedotacacs
No /etc/tacacs/tac_plus.cfg
user = ciscostudent
login = cleartext welcome
service = raccess {
port#1 = accessserver1/tty1
port#2 = accessserver2/tty4
A configuração acima indica que o usuário "ciscostudent" poderá efetuar o reverse telnet para os servidores de acesso "accessserver1" e "accessserver2", nas portas tty1 e tty4, respectivamente.