Objetivo:
Cuando un dispositivo se conecte a nuestro router wifi lanzará una locución diciéndonos la dirección IP del mismo. En un archivo tendremos una lista blanca de dispositivos que no queremos que nos informe ya que se consideran seguros.
Además para cualquier dispositivo que se conecte a nuestra red wifi nos enviará un correo electrónico con la fecha, hora, MAC y dirección IP. Todo el funcionamiento reside en la ejecución de un script de Linux que monitoriza el archivo de logs y activa la alerta cuando alguien se valida en la red.
Necesitamos:
Router con openwrt y conector usb | Tarjeta de sonido usb | Altavoces |
En nuestro caso hemos elegido el router ARV752DPW con la versión de openwrt Chaos Calmer 15.05.
Este script sólo funciona si: Tenemos cifrado Wifi WPA2 activado en nuestro router con una WAN asignada.
Pasos:
- Instalación de tarjeta de sonido.
- Instalar aplicación de texto a voz y reproducción de locución.
- Creación del script.
- Creación de lista blanca.
- Poner script como un servicio.
- Configuración de envío de correos de alerta.
- Reinicio del router.
1. Instalación de tarjeta de sonido.
Para instalar la tarjeta de sonido debemos hacer que el router nos reconozca los dispositivos USB y tarjeta de sonido:
opkg update opkg install kmod-usb-core kmod-usb-ohci kmod-usb-uhci kmod-usb2 kmod-usb-audio
2. Instalar aplicación de texto a voz y reproducción de locución.
opkg update opkg install svox madplay alsa-utils nano
3. Creación del script.
Crearemos el archivo en /usr/bin lo hacemos ejecutable y lo abrimos con el editor
touch /usr/bin/wifilook chmod +x /usr/bin/wifilook nano /usr/bin/wifilook
Añadimos lo siguiente:
#!/bin/sh source /etc/wifilook/wifilook.conf TEXTO_LOG="pairwise key handshake completed" testea() { CABECERA="To: $CORREO\nFrom: $CORREO\nSubject:NEW CONECTION\n\nNew Conection:\nDATE\ttime\tIP\t\tMAC\n" MAC=$(echo $line | awk '{ print $10 }') IP=$(cat /proc/net/arp | grep $MAC | awk '{print $1}') IP_MAC=$(cat /proc/net/arp | grep $MAC | awk '{print $1 " " $4}') echo $IP_MAC >> /tmp/autenticaciones.txt echo -e $CABECERA $(date) $IP_MAC > /tmp/info.txt ssmtp $CORREO_ENVIO < /tmp/info.txt cat /etc/wifilook/whitelist.dat | grep $MAC if [ $? -ne 0 ] then cadena=$(echo $IP | sed 's/\./punto/g') pico2wave -l es-ES -w /tmp/text.wav $cadena aplay -f S16_LE -D plughw:0,0 /etc/wifilook/conectado.wav /tmp/text.wav > /dev/null fi } logread -f | while read line do echo $line | grep -q -e "$TEXTO_LOG" [ $? -ne 0 ] || testea done exit
4. Creación de lista blanca y archivo de configuración.
mkdir /etc/wifilook nano /etc/wifilook/whitelist.dat
En el archivo introduciremos las direcciones mac de los dispositivos para los que no queremos que nos avise. En él podemos poner la MAC wifi de todos los dispositivos de confianza.
aa:aa:cc:bb:cc:dd:dd bb:bb:cc:aa:cc:cc:bb...
A continuación creamos la voz de aviso. Podemos elegir el mensaje que queramos sabiendo que en nuestro script al final dirá la dirección IP.
Ejemplo de frases que puedes poner son (No utilices tildes ya que no las interpreta el sistema):
- Se ha conectado la siguiente IP:
- Nueva conexion:
- Alerta de conexion con la siguiente IP:
pico2wave -l es-ES -w /etc/wifilook/conectado.wav "Se ha conectado la siguiente IP:"
El archivo de configuración será /etc/wifilook/wifilook.conf
nano /etc/wifilook/wifilook.conf
introduciremos lo siguiente cambiando el correo a donde queramos que nos informe:
#!/bin/sh
# Dirección de envio de correo
CORREO_ENVIO="usuario@tucorreo.com"
5. Poner script como un servicio.
Vamos a crear una entrada en /etc/init.d
nano /etc/init.d/wifilook
Introduciremos lo siguiente:
#!/bin/sh /etc/rc.common # Example script # Copyright (C) 2007 OpenWrt.org START=10 STOP=15 start() { /usr/bin/wifilook & } stop() { killall wifilook
}
Convertimos el archivo en ejecutable:
chmod +x /etc/init.d/wifilook
Y haremos que arranque al encender el router con lo siguiente:
/etc/init.d/wifilook enable
6. Configuración de envío de correos de alerta.
opkg install ssmtp
Editamos el fichero de configuración:
nano /etc/ssmtp/ssmtp.conf
Eliminamos el contenido y ponemos lo siguiente sustituyendo lo que se ha puesto en rojo:
root=miusuariogmail@gmail.com mailhub=smtp.gmail.com:587 hostname=MIROUTER UseSTARTTLS=YES AuthUser=miusuariogmail@gmail.com AuthPass=passwordCorreoGmail FromLineOverride=YES UseTLS=YES
Utilizando una cuenta de correo de gmail, debes habilitar lo siguiente para poder enviar correos con ella en el siguiente sitio: https://www.google.com/settings/security/lesssecureapps.
7. Reinicio del router.
Comprobamos que nuestro router tiene cifrado WIFI con WPA2 activado y lo reiniciamos.