Arpwatch con seguimiento de hosts específicos
Desde que instalé arpwatch en la red de la empresa donde trabajo, me encontré con una necesidad imperiosa. Nuestra red otorga las IPs de las workstations por DHCP, pero en la misma red existen host importantes que tienen IPs fijas.
Arpwatch no se desempeña demasiado bien en redes con DHCP, dado que con este esquema las IPs de las máquinas suelen cambiar cada tanto, generando reportes sin utilidad para quien revisa los logs de seguridad. Entre tantos reportes sin utilidad pueden quedar escondidos reportes que si nos interesan, como por ejemplo ver que la IP de un proxy, gateway, server, cambió su MAC, algo que es en extremo sospechoso y muy importante para detectar intrusos.
De esta manera tenemos una herramienta muy simple y poderosa, pero que al generar tantos reportes molestos, resulta poco útil en este tipo de redes.

Para obtener lo mejor de esta herramienta contaba con dos opciones:
  1) desarrollar un script que parsee los logs buscando sólo las IPs que me interesan,
  2) agregar al código de arpwatch la funcionalidad necesaria para poder filtrar ciertas IPs.

La primera era más rápida y simple, pero la segunda mucho más interesante. Por fin esta semana conté con tiempo libre, así que puse manos a la obra y actualicé el código de arpwatch para que incluya esta funcionalidad. Esta es una de las grandes ventajas de utilizar software libre, si necesitas más funcionalidad, podes agregarla vos mismo!

Por lo que encontré, arpwatch no se actualiza desde 2006, pero hay parches como el de debian, que agregaron cierta funcionalidad. Como ya sabrán, utilizo debian para todo y es la base de una gran porción de distribuciones, así que decidí partir del paquete de debian. Este paquete incluye opciones como ignorar una red entera, o enviar reportes por mail, y pueden verlas marcadas con el prefijo "(Debian)" en la man page.

Yendo al grano, qué provee el código que desarrolle?
  - la posibilidad de reportar cambios de MAC sólo de IPs específicas
  - una nueva opción en la línea de comandos (-H <filename>) para activar esta funcionalidad e indicar el archivo donde se encuentran los hosts a seguir
  - configuración simple del archivo de hosts a seguir:
    - se puede especificar un host según su IP (ej: 192.168.0.2), hostname (mihost.mired.com), o red entera (192.168.0.0/24),
    - es posible dejar líneas en blanco para separar grupos de host visualmente
    - permite la adición de comentarios utilizando el símbolo # al comienzo de cada línea.
  - man page actualizada explicando la nueva funcionalidad.

Si por ejemplo quisiéramos seguir sólo los hosts 192.168.0.2, www.miempresa.com, y la red 192.168.10.0/24, el archivo de hosts (denominado hosts.dat) podría ser:
  #ip interna
  192.168.0.2

  #web de la empresa
  www.miempresa.com

  #red de compras
  192.168.10.0/24

Luego bastaría con ejecutar arpwatch de la siguiente manera:
  # arpwatch -H hosts.dat

La instalación de esta nueva versión debe hacerse de la siguiente manera:
  1) descargar el código de arpwatch original
  2) descargar el parche de debian
  3) descargar mi parche
  4) desomprimir el código original y los parches:
      $ tar -xzvf arpwatch_2.1a15.orig.tar.gz
      $ tar -xzvf arpwatch_2.1a15-1.1.diff.gz
      $ tar -xzvf arpwatch-2.1a15-2-diff.diff.gz
  5) parchar el código original con el parche de debian, parados en el directorio del código original:
      $ cd arpwatch_2.1a15
      $ patch < ../arpwatch_2.1a15-1.1.diff
  6) parchar lo anterior con la extensión que programé:
      $ patch < ../arpwatch-2.1a15-2-diff.diff
  7) compilar:
      $ ./configure
      $ make
  8) instalar:
      $ make install

Algo a tener en cuenta es que deberán tener las fuentes de pcap para poder compilar arpwatch. En debian el paquete se denomina libpcap-dev.

Si tienen alguna duda o encuentran algún fallo en el programa, por favor reportenmelo. Contacté al maintainer del paquete en debian y espero le interese incorporar este parche para ampliar la funcionalidad de esta excelente herramienta.
Espero les resulte tan útil como a mi!

Que tengan un feliz año nuevo y arranquen el 2012 con todo. Recuerden que, según los mayas, será el último =P

2 comentarios:

Edwin A. Cartagena Hernández. dijo...

Excelente herramienta la que nos compartes, muchas gracias!

Y con respecto a que el 2012 sea el último año, ya tengo listo y enrollado mi calendario 2013 para darles con él en la cabeza a los mayas que encuentre... XD

Saludos!

d3m4s1@d0v1v0 dijo...

jajajaja hay que estar prevenidos.
Me alegra que te sirviera, lástima que el mantainer de debian nunca me contestó para agregarlo al paquete de la distribución.
Saludos!

Publicar un comentario