Alerta de intrusos WIFI

alerta

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
ARV752DPW TarjSonidoUsb 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:

  1. Instalación de tarjeta de sonido.
  2. Instalar aplicación de texto a voz y  reproducción de locución.
  3. Creación del script.
  4. Creación de lista blanca.
  5. Poner script como un servicio.
  6. Configuración de envío de correos de alerta.
  7. 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

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.

Deja un comentario

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