Hace unos días tuve un inconveniente con una red LAN de oficinas con aproximadamente 500 usuarios. Uno de ellos compro un modem/router con switch y wireless para extender la red en su oficina sin consultar al sector técnico, la cuestión es que instalo todo “OK” pero no se dio cuenta de que dejo el servidor DHCP de su router activo y en modo autoritativo. Luego de unas horas muchos clientes no tenían conexión me puse a investigar y encontré de que no tenían las direcciones de IP y DNS correctas entonces pensé, se encabrono mi servidor DHCP porque en la configuración del cliente decía que el Servidor DHCP que había entregado los datos era el autorizado.
Revise por todos lados y no encontré anomalías en el servidor, entonces con la notebook de testeo me fui pasando por cada uno de los switchs principales para ver en donde estaba la falla, mandando señales DISCOVERY a la red y analizando las respuestas con WIRESHARK hasta que llegue al causante del problema, lo apague y se normalizo el servicio.
Ahora les traigo un detector de servidores DHCP que se llama (dhcpdetector). Lo modifique muy precariamente (por cuestiones de tiempo) para que se quede monitoreando la red y si encuentra algo raro me lo guarde en una base de datos y me mande un mail.
Se lo puede automatizar mucho mas, mejorarlo y hacerlo más sencillo de instalar y usar. En esta ocasión les dejo lo que tengo, por ahí a alguien le sirve para algo.
Requisitos:
Sistema operativo GNU/LINUX
Servidor web con php5 y mysql
PHPMailerv5.1
Cron
Codigos fuente y base de datos: http://www.isuncaus.com.ar/codigos.txt
Pasos para instalar:
*Una carpeta en ella tienen que estar las clases de phpmailer y el send.php (el código de send.php está abajo junto a make.sh, dhcpdetector.c y la base de datos). Para usar el dhcpdetector.c tienen que modificarlo agregando las ips de sus servidores dhcp en la función get_raw_packet, mas específicamente estas líneas:
//Aquí irían las IPs de sus servidores DHCP, los autorizados
//Las IPs las tomo como la tuma de sus rangos ej: 10.10.17.178 => 10+10+17+178
//En este caso tengo dos, ustedes pueden aregar mas
int dhcpauth1 = 449; //10.10.17.178 => 10+10+17+178
int dhcpauth2 = 449; //10.10.40.3 => 10+10+40+3
Luego compilarlo usando el archivo make.sh (alojan make.sh y dhcpdetector en una carpeta (en carpeta en donde se encuentra el send.php) y ejecutan “./make.sh” entonces eso va a compilar el código y les va a generar un archivo “dhcpdetector” sin ninguna extensión. Para ejecutar el dhcpdetector teclean “./dhcpdetector suinteface” ejemplo “./dhcpdetector eth0”
*En la parte de la base de datos la exportan y generan un usuario con contraseña, luego ponen esos datos en el send.php para que pueda conectarse a ella.
*El php (send.php) tiene que estar con permisos 777 y el phpmailer configurado con los datos de alguna cuenta gmail
*Tienen que dejar programado un cron para que ejecute “./dhcpdetector suinteface” cada tanto.
Esto ocasionara que si detecta un servidor dhcp extraño, lo guarde en la base de datos (dirección de ip y mac) y les de un aviso a su mail
Codigos fuente y base de datos: http://www.isuncaus.com.ar/codigos.txt
Saludos