¿Qué es el administrador de eventos de Cisco?

Spread the love

Cuando hice mis exámenes de CCNP, en los primeros laboratorios que hice aprendí algo muy interesante: ciertas versiones del IOS de Cisco permiten programar en TCL, por ejemplo, en las primeras prácticas de CCNP se configuran unos enrutadores con muchas direcciones IP (en interfaces de Loopback) y luego se configura el enrutamiento. Para comprobar la conectividad hacia todas esas direcciones IP se hace un pequeño guión (script) en el que se enumeran las IP y luego en una línea se hace un ping a cada una de ellas mediante una variable. En éste enlace puede acceder a una publicación de un laboratorio muy similar en GNS3. Recientemente (Dic. de 2010) publicaron en CiscoZine este artículo que voy a traducir para mis lectores que describe cómo enviar email desde un enrutador, y de alguna manera, el marco general de esa característica, su nombre: Administrador embebido de eventos o EEM (por sus siglas en inglés: Embeded Event Manager). Disfrútenlo.

Traducido de Send email from your router using EEM publicado en CiscoZine por Fabio Semperboni

El Administrador embebido de eventos del IOS de Cisco o EEM es un poderoso y flexible subsistema que proporciona detección de eventos de red en tiempo real y automatización. Le da la habilidad de adaptar el comportamiento de los dispositivos de red a sus necesidades. Los clientes pueden usarlo para ejecutar programas o guiones directamente en un enrutador o switch, estos scripts son llamados Políticas EEM y pueden ser programadas mediante el CLI o usando un lenguaje específico de scripting llamado TCL (Tool Command Language).

EEM permite apalancar la inteligencia de los dispositivos Cisco para responder a eventos en tiempo real, automatizar tareas, crear comandos personalizados y tomar acciones automatizadas con base en condiciones detectadas por el mismo IOS.

En este artículo, explicaré cómo enviar email con base en eventos de syslog usando la característica applet EEM, una política simple definida mediante CLI. En el modo de configuración de applet se soportan tres tipos de declaraciones. Los comandos event son aquellos que disparan la ejecución del applet, los comandos action son aquellos con los cuales se ejecuta una acción una vez que el applet es disparado y los comandos set establecen valores de variables en el applet. Use el comando show event manager policy registered para mostrar una lista de applets registrados.

Primero que todo se necesita identificar un mensaje de log, por ejemplo, cuando uno se conecta a un enrutador mediante SSH aparece el siguiente mensaje de log:

Dec 17 16:27:53.993: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: ciscozine] [Source: 172.16.5.2] [localport: 22] at 17:27:53 Rome Fri Dec 17 2010

mientras que si se conecta a la VPN con un cliente VPN, el mensaje es:

Dec 17 13:28:13.227: %LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access3, changed state to up

Entonces, ¿cómo uso el EEM para recibir email?. Primero hay que establecer las variables de email:

Ciscozine(config)#event manager environment _email_to your-to-mail@domain.com
Ciscozine(config)#event manager environment _email_server your.mail.server
Ciscozine(config)#event manager environment _email_from your-from-mail@domain.com

Después de ésto, es posible definir el applet, el evento y la acción:

  • El comando event manager applet <identificador_de_applet> crea y registra un applet con el EEM
  • El comando event syslog pattern <patrón> configura el detector de evento de syslog para que reconozca el patrón del mensaje deseado. Recuerde que es posible usar expresiones regulares.
  • El comando action configura lo que se va a ejecutar cuando se reconozca el evento.

En el primer ejemplo envío correo electrónico, luego creo un mensaje syslog con prioridad 5 .  En el segundo ejemplo yo ejecuto el comando “sh crypto ipsec sa | i local crypto” en modo privilegiado, envío el correo luego creo un mensaje de syslog con prioridad 5. Recuerde: el comando action del cli retorna la salida generada por el comando ejecutado en la variable $_cli_result

Ejemplo #1: Enviar email cuando se conectan vía ssh

Ciscozine(config)#event manager applet login-ssh-ok
Ciscozine(config-applet)#event syslog pattern "SEC_LOGIN-5-LOGIN_SUCCESS: Login Success.*[localport: 22]"
Ciscozine(config-applet)#action 1.0 mail server "$_email_server" to "$_email_to" from "$_email_from" subject "$_event_pub_time: Login via SSH" body "$_syslog_msg"
Ciscozine(config-applet)#action 1.5 syslog msg priority 5 "LOGIN SUCCESS - Mail Sent"

El correo recibido sería algo como:

subject: Dec 17 19:22:36.203: Login via SSH
body: Dec 17 19:22:36.195: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user:ciscozine ] [Source: 192.168.10.12] [localport: 22] at 20:22:36 Rome Fri Dec 17 2010

Ejemplo #2: Enviar email cuando se conectan mediante sesión IPSEC

Ciscozine(config)#event manager applet CheckVPN
Ciscozine(config-applet)#event syslog pattern "LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access.*up"
Ciscozine(config-applet)#action 1.0 cli command "enable"
Ciscozine(config-applet)#action 1.5 cli command "sh crypto ipsec sa | i local crypto"
Ciscozine(config-applet)#action 2.0 mail server "$_email_server" to "$_email_to" from "$_email_from" subject "$_event_pub_time: VPN User connected" body "Connection:\n$_cli_result"
Ciscozine(config-applet)#action 2.5 syslog priority 5 msg "VPN UP - Mail Sent"

Recuerde: En el EEM 3.0 para Cisco IOS Release 12.4(22)T, el argumento server-address incluye un nombre de usuario y contraseña opcional mediante el nombre de dominio cualificado para enviar el correo. El nombre del servidor de correo puede ser en cualquiera de las siguientes formas:

  • username:password@host
  • username@host
  • host

Recuerde: EEM tiene variables predefinidas:

  • $_event_type: El tipo de evento que disparó el applet
  • $_event_pub_time: El momento en que el tipo de evento fué publicado
  • $_syslog_msg: El mensaje de syslog que causó que el evento se disparara

Referencias:

FIN DE ARTÍCULO ORIGINAL

Conclusiones




A veces me parece que los enrutadores Cisco son subutilizados: tienen tantas posibilidades que no se necesitan muchos otros dispositivos. Por ejemplo, las capacidades de IPS/IDS y firewall de ciertos IOS son tan potentes que incluso se pueden programar nuestras propias firmas de comportamientos sospechosos. La flexibilidad de administración de dispositivos Cisco es tal, que prácticamente no hay excusa para implementar tecnologías con requerimientos exactos que se pueden ejecutar de varias maneras distintas, éste es sólo un ejemplo, pero cosas como los mapas de ruta (route maps), las vlan privadas, el enrutamiento basado en políticas, VRF, entre otros, son tecnologías sofisticadas que se pueden aprender y ejecutar en plataformas tan simples como enrutadores 2800. Hay que estudiar mucho más 🙂

1 comentario en “¿Qué es el administrador de eventos de Cisco?”

  1. Hola, estoy utilizando gns3 para simular una red, y administrarla mediante EEM 3.0 desde uno de los routers. Quiero utilizar EEM 3.0 en el router 7200 ya que es el único que lo soporata, con la ios 12.4(24)T, pero me he dado cuenta que dicho router no me deja entrar en la memoria flash, ni crear un archivo en esta, con lo que no sé cómo podría guardar en el las políticas de tcl de EEM. ¿Cómo podría solucionar el problema?
    Muchas gracias!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.