Continuando o post sobre o EEM – Embedded Event Manager, vamos ver os scripts. Como já dito no post anterior, o script é feito usando o TCL – Tool Command Language e permite a criação de EEM Policies mais elaboradas.
No exemplo escolhido para ilustrar este post, usando um script EEM o roteador passará a enviar e-mails sempre que uma mensagem syslog SYS-5-CONFIG for gerada.
Repositório
A Cisco mantém um repositório onde podemos encontrar scripts criados pela comunidade. Qualquer um pode criar um script e enviar para que outras pessoas possam utilizar.
Neste repositório temos um template com a programação TCL pronta para que o roteador envie e-mail. Vamos fazer o download deste arquivo, e usá-lo como base neste exemplo.
Editando o Sendmail.tcl
Descompacte o arquivo e abra o sendmail.tcl em um editor de texto.
O autor deste script deixou ele pronto para ser executado manualmente (sem gatilho), mas os códigos para detecção de eventos já estão no arquivo. Assim, precisamos habilitar a linha para detectar syslog e indicar o tipo de mensagem que queremos verificar (*SYS-5-CONFIG.*). Você pode mudar isso de acordo com suas necessidades.
Depois vamos configurar para que o show running-config seja enviado no e-mail (o arquivo original envia o show version). Veja no vídeo abaixo.
Usando o Script EEM
1) Agora, usando um tftp server, pegue o arquivo editado e envie para a flash do roteador.
BrainRT01#copy tftp: flash:
Address or name of remote host [10.10.8.66]? 10.10.8.3
Source filename [brainwork_sendmail.tcl]?
Destination filename [brainwork_sendmail.tcl]?
Accessing tftp://10.10.8.3/brainwork_sendmail.tcl…
Loading brainwork_sendmail.tcl from 10.10.8.3 (via FastEthernet0/0): !
[OK – 5265 bytes]5265 bytes copied in 0.588 secs (8954 bytes/sec)
BrainRT01#
2) Configure as variáveis utilizadas no script (ip do servidor de email, mail from e mail to).
BrainRT01# conf t
BrainRT01(config)#event manager environment _email_server 10.10.10.4
BrainRT01(config)#event manager environment _email_from BrainRT01@brainwork.com.br
BrainRT01(config)#event manager environment _email_to destinatario@brainwork.com.br
BrainRT01(config)#
Observe que o servidor deve estar configurado de forma aceitar que o roteador envie o e-mail.
3) Defina o diretório de uso e registre o Script.
BrainRT01(config)#event manager directory user policy "flash:/"
BrainRT01(config)#event manager policy brainwork_sendmail.tcl
BrainRT01(config)#
4) Pronto. Quando você sair do modo de configuração global será gerada uma mensagem syslog, notificando das configurações realizadas, o que iniciará a execução do Script.
BrainRT01(config)#exit
BrainRT01#
May 13 18:57:42.533: %SYS-5-CONFIG_I: Configured from console by admin on vty0 (10.10.8.3)
May 13 18:57:44.453: %HA_EM-6-LOG: brainwork_sendmail.tcl: Creating mail header…
May 13 18:57:49.441: %HA_EM-6-LOG: brainwork_sendmail.tcl: E-mail sent!
BrainRT01#
Não esqueça de usar o Terminal Monitor, se você estiver acessando o equipamento por Telnet/SSH. E se o e-mail demorar verifique se não foi classificado como SPAM.
O lado negro da força
Como toda ferramenta, o EEM pode ser usado para o bem e para o mal.
Tome cuidado ao baixar scripts da Internet. Scripts baixados de outros lugares que não o repositório Cisco, podem conter backdoor/trojan, permitindo acesso ao seu equipamento.
Aliás, recentemente no Web Security Forum, o Adilson Florentino, do Netfinders, fez uma apresentação chamada IOS Trojan – Quem é o dono do seu roteador? Nela o Adilson alertava justamente para o risco de alguém ter acesso ao seu equipamento e plantar um trojan, que permitiria acesso a sua rede.
É possível, por exemplo, criar um túnel GRE entre seu equipamento e um roteador qualquer, por onde o acesso passaria a ser realizado. Além disso o cracker pode manipular os comandos (show run, show ip int bri, dir) de forma que você não veja as alterações realizadas.
Parece difícil? Saiba que esse script já foi criado, e basta procurar no Google para encontrar o código, comentado inclusive.
Links
Criando scritps
http://www.cisco.com/en/US/docs/ios/netmgmt/configuration/guide/nm_eem_policy_tcl.html
Repositório
http://forums.cisco.com/eforum/servlet/EEM
Até a próxima.
Ortega, muito bom esse post. Certamente vou dar uma brincada com ele.
Agora, tenho uma duvida! é Possivel o envio de email, para eventos de portas? Tipo quando ocorre a mudança de Blocking para Forwarding.
Abs e parabens pelo blog.
Obrigado Cleber,
Veja que tipo de mensagem é gerada quando este evento ocorre e substitua no corpo do sendmail.tcl onde está “SYS-5-CONFIG”.
Lembro que além de mensagens syslog outros eventos podem ser o gatilho. Leia mais no link que está no post.
Não se esqueça de votar no brainwork no Top Blog.
O post é muito bom mesmo.
Já estou aqui brincando.
abs,
Valeu Pessoal.
E não esqueçam de compartilhar os scripts criados.
Parabéns pelo blog André, sempre com matérias muito interessantes, já fui salvo uma vez fazendo uma “gambiarra” com EEM, um certo cliente tinha um firewall que monitorava a interface FastEthernet do roteador, porém quando a WAN ficava down, a interface FastEthernet continuava UP e pingando, fazendo a contingência falhar, ele não podia monitorar a WAN por algum motivo que não me lembro, e para piorar, por algum outro motivo desconhecido, acho que era IOS, o roteador não mostrava o syslog do track down quando IP SLA parava de pingar a WAN remota, (sim, o syslog estava configurado com os levels corretamente), percebi que com o comando “debug track” ligado, o roteador mostrava as mensagens, com isso surgiu um novo problema, quando você reinicia o roteador, o debug é desligado, eu resolvi analisando as mensagens de syslog quando o roteador liga, e percebi que ele sempre da a mensagem “SYS-5-RESTART”, resolvi criando um EEM para ligar o debug track sempre que o roteador for ligado, estou compartilhando as configurações:
ip sla monitor 99
type echo protocol ipIcmpEcho source-interface FastEthernet0/0
frequency 10
ip sla monitor schedule 99 life forever start-time now
track 100 rtr 99 reachability
delay down 10 up 60
event manager applet track-down
event syslog pattern “rtr 99, reachability Up->Down”
action 1.0 cli command “enable”
action 1.1 cli command “configure term”
action 1.2 cli command “interface FastEthernet0/1”
action 1.3 cli command “shut”
event manager applet track-up
event syslog pattern “rtr 99, reachability Down->Up”
action 1.0 cli command “enable”
action 1.1 cli command “configure term”
action 1.2 cli command “interface FastEthernet0/1”
action 1.3 cli command “no shut”
event manager applet Ligar_Debugging
event syslog pattern “%SYS-5-RESTART”
action 1.0 cli command “enable”
action 2.0 cli command “debug track”
!
end
Abraços!
É Cledir, o EEM sempre pode ajudar…
Estou pensando em criar uma área para compartilharmos os scripts/applets.