A proposito dell'autore

Laureato in Ing. Informatica al Politecnico di Milano, si occupa di Networking dal 2005. Appassionato della tecnologia e sicurezza, ha lavorato per importanti enti internazionali quali NASA ed ESA dando supporto tecnico alle missioni Nodo2 (STS-120) e Columbus (STS-122). Attualmente lavora come Network/Security Engineer presso una importante Banca Italiana e, da alcuni anni, gestisce il sito web www.ciscozine.com

Forse non tutti sanno che i router Cisco, oltre essere caratterizzati da una grande stabilità e infinite potenzialità (routing, ACL, route-map, tuning, …), permettono anche l’invio di email in base a determinati eventi.

Si avete capito bene, i router Cisco inviano le mail!

Introdotto dalla versione 12.3(4)T, l’ Embedded Event Manager (EEM) è un fantastico e potente strumento integrato nell’IOS, che permette di definire azioni a seconda di eventi (in real time). In particolare, in questo tutorial cercherò di spiegarvi come spedire email e creare un messaggio syslog customizzato (severity 5):

  • quando un utente si è collegato in ssh (esempio 1)
  • quando attivo una vpn tramite un vpn client (esempio 2)

Prima di tutto definite il logging buffered a severity 5 (notifications); successivamente eseguite una connessione ssh e alzate una vpn.

Ora eseguite il comando “show log”; subito noterete che la sessione ssh che quella ipsec è stata salvata nel buffer locale con 2 messaggi distinti:

Apr 27 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 Wed Apr 27 2010
Apr 27 13:28:13.227: %LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access3, changed state to up

Fatto ciò, iniziamo ad addentrarci nel mondo EEM, definendo prima di tutto le variabili (campo email from, email to e smtp server):

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

Ora passiamo a configurare l’applet. Questa fase è molto semplice e si basa su 3 step:

  • Creare l’applet: ‘event manager applet [nome-applet]’
  • Definire quali sono gli eventi di log interessanti: ‘event syslog pattern “[messaggio-di-log]”‘
  • Definire le azioni:
    • Per spedire una mail: ‘action 1.0 mail server [variabili della mail]’
    • Per creare un messaggio syslog: ‘action 1.5 syslog msg priority [severity]”[messaggio]”‘

Nota1: Ricordati che il pattern dell’evento syslog può essere basato anche su espressioni regolari!
Nota2:
Dalla versione 3 di EEM è possibile inviare mail utilizando smtp server che richiedono autenticazione. In tal caso la sintassi sarà la seguente:

event manager environment _email_server username:password@your.mail.server


Esempio 1: Spedire una mail una volta connessi al router via 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"

La mail sarà ricevuta nel seguente modo:

  • object: Apr 27 19:22:36.203: Login success via SSH
  • body: Apr 27 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 Wed Apr 27 2010

Il messaggio salvato nel buffer locale sarà:

Apr 27 19:22:36.203: %HA_EM-5-LOG: login-ssh-ok: LOGIN SUCCESS - Mail Sent

Esempio 2: Spedire una mail una volta connessi tramite VPN client

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"

La mail sarà ricevuta nel seguente modo:

  • object: Apr 27 19:23:27.055: VPN User connected
  • body: Connection:
    local crypto endpt.: 85.237.142.204, remote crypto endpt.: 171.81.234.211
    Ciscozine#

Il messaggio salvato nel buffer locale sarà:

Apr 27 19:23:27.055: %HA_EM-5-LOG: CheckVPN: VPN UP - Mail Sent

Come avrete notato, l’action per l’invio di mail utilizza anche le variabili predefinite ‘$_cli_result variable’. e ‘$_event_pub_time’. Esse contengono rispettivamente l’output di ‘sh crypto ipsec sa | i local crypto” e il tempo in cui l’evento è stato eseguito.

Ovviamente questi sono solo 2 esempi, ma come potete immaginare le applicazioni sono molteplici.

Close
Entra in contatto con altri professionisti ICT, seguici su Facebook e Twitter: