Script para notificar intrusiones en tu red con Ubuntu.

Imagen de utopianegra
Este es un script que  detecta quien se esta conectandoa tu red, y como comenta su autor Franklin Aliaga, es muy util si usas un Modem Router Inalambrico para detectar personas que se pueden estar conectando a tu red, hoy en dia existen infinidades de metodos para entrar a una red inalambrica asi que hay que estar monitoreando siempre la red, en este caso el script funciona de la siguiente manera, mientras tu estas haciendo tus trabajos hay un demonio que cada 3 min. ejecutara el script y mostrara en una alerta en el panel de notificaciones de tu Ubuntu.
 
Requisitos:
sudo apt-get install libnotify-bin nmap
 
Para crear el script sigue los siguientes pasos:
 
Abre una consola y en tu /home, teclea:
sudo gedit alertared

Copia y pega el siguiente codigo:

 

#!/bin/bash
#script creado por: franklin aliaga

#si no tienes nmap digita sudo apt-get install nmap
#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en un archivo *.txt

#script mejorado y actualizado por: microstudi (lector de tuxapuntes)

# Modificica esta linea a tu gusto si deseas guardar los temporales en otra ruta.

ARCHIVOS="$HOME/bin/hosts"

/usr/bin/nmap -sP 192.168.2.1/24 -oG $ARCHIVOS/hosts_ip.txt

#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
#y mandarlo a otro archivo *.txt
cat $ARCHIVOS/hosts_ip.txt | grep Host | cut -c 7-20 | tr -d "\()" > $ARCHIVOS/host_ip1.txt

#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo
contador=$(wc -l $ARCHIVOS/host_ip1.txt | cut -c 1-2)

#aqui obtenemos la nuestra ip
ip=$(/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -c 6-)
echo "Mi ip: $ip"
total=$(expr $contador - 1)

var=0

while [ $var -le $total ]; do
let var=$var+1
#capturamos la ip por linea
linea=$(cat $ARCHIVOS/host_ip1.txt | sed -n "$var p")
if [ $linea != "192.168.2.1" ]; then
if [ $linea != $ip ]; then
/usr/bin/notify-send "Conectado $linea"
#Para enterar-se por la consola también:
echo "Conectado $linea"
fi
fi
done

 

 Guarda el fichero que acabas de crear y en consola teclea:

sudo chmod +x alertared

Despues creamos el demonio:

crontab -e

Y añadimos la linea:

*/3 * * * * /home/tu nombre de usuario/alertared

*Con esto el sistema ejecutara cada 3 minutos el script y nos notificara los intrusos.

Imagen de ratakruel

muy bueno, genial

muy bueno, genial

Imagen de anonimo

Tengo una duda, soy muy

Tengo una duda, soy muy novato en esto de linux. He seguido paso a paso todo lo dicho pero llego a algo que no se hacer. Al llegar a teclear en el terminal crontab -e como añado la siguiente linea?, no me deja escribir nada. A partir de aquí ya no se seguir.
Un saludo y gracias de antemano.

Imagen de thedarkman

cuando ejecutas crontab -e te

cuando ejecutas crontab -e

te sale lo siguiente?

# m h dom mon

debajo de esa linea es donde has de escribir la tarea.

Imagen de Gerardo Vaquerizo

Ivan (microstudi) ¿podrías

Ivan (microstudi) ¿podrías añadir una opcion para que se pudiera guardar en log la salida de notify-send y asi poder hacer un seguimiento cuando el PC está desatendido? Se podría pasar como un parametro en la línea de comandos del Script ($1).
Enhorabuena por la mejora!

Imagen de microstudi

Eso es muy fácil! no hace

Eso es muy fácil! no hace falta añadir nada al script,

cambia la linea de crontab asi:

*/3 * * * * /home/tu nombre de usuario/alertared 2>&1 >> /home/tu nombre de usuario/algun sitio/alertared.log

Esto te irá añadiendo la salida a un log.

De todas maneras podria poner-se un log un poco mejor modificando el script para que salga la fecha, ya lo haré y lo postearé. Pero en la nueva bitácora que he hecho: http://www.tuxapuntes.com/drupal/node/1710

Imagen de nes

la belleza del código libre!

la belleza del código libre!

Imagen de microstudi

Posteo aqui un nuevo script

Posteo aqui un nuevo script completament reescrito que funciona mejor.
Notas:
1. no usa archivos, asi que hay que preocuparse por los directorios
2. comprueba si tienes los programas nmap i notify-send instalados
3. permite poner una serie de ip's conocidas para que no incordie con los equipos propios, tambien hay una variable para poner el interfaz de red que queremos usar
4. arregla un fallo con el notify-send (almenos en mi caso), ya que el programa se ejecuta en un usuario desde crontab que no tiene acceso directo al escritorio

#!/bin/bash
#script creado por: franklin aliaga
#script mejorado y actualizado por: Ivan Vergés (microstudi)
declare -a IPS_CONOCIDAS

####################
#Configuracion:
####################

#Array de ip's conocidas, la primera debe ser la del router, no hace falta poner la propia
#separar por espacios las ips
IPS_CONOCIDAS=( "192.168.2.1" "192.168.2.3" )
#Interfaz de red (eth0, wlan0, etc)
DEVICE="eth0"

#####################

#aqui obtenemos la nuestra ip
ip=$(/sbin/ifconfig "$DEVICE" | grep "inet addr" | awk '{print $2}' | cut -c 6-)
echo "Mi ip: $ip"
#añadimos nuestra IP al array
IPS_CONOCIDAS[${#IPS_CONOCIDAS[*]}]=$ip
echo "No se controlan los equipos siguientes: "${IPS_CONOCIDAS[*]}

#Comprovar si existen los programas que usaremos:
if [ ! -x /usr/bin/nmap ]; then
echo "El programa nmap no está instalado!"
exit
fi
if [ ! -x /usr/bin/notify-send ]; then
echo "El programa notify-send no está instalado!"
exit
fi

#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en el fichero "-" que es la salida standard
#redireccionada a la variable variable HOST_IPS
echo "Buscando equipos..."
HOST_IPS=$(/usr/bin/nmap -sP ${IPS_CONOCIDAS[0]}/24 -oG -)

#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
IPS=$(echo "$HOST_IPS" | grep Host | cut -c 7-20 | tr -d "\()")

#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo "-" (entrada standard)
contador=$(echo "$IPS" | wc -l - | cut -c 1-2)
total=$(expr $contador - 1)

#esto es para que el script tenga acceso a las X des de crontab
export DISPLAY=:0
export XAUTHORITY="$HOME/.Xauthority"

#Bucle de búsqueda entre las ip's encontradas
var=0
while [ $var -le $total ]; do
SALTA_BUCLE=0
let var=$var+1
#capturamos la ip por linea
linea=$(echo "$IPS" | sed -n "$var p")
for i in ${IPS_CONOCIDAS[*]}
do
if [ $i == $linea ]; then
echo "$linea está en la red conocida"
SALTA_BUCLE=1
break
fi
done
if [ "$SALTA_BUCLE" == "1" ]; then
continue
fi
/usr/bin/notify-send "Conectado $linea"
#Para enterar-se por la consola también:
echo "Conectado $linea"
done

Imagen de utopianegra

Pero si esto es ya un nuevo

Pero si esto es ya un nuevo script, ja ja ja , te creas una bitacora, lo publicas con tu nomobre y te lo promociono a los feeds, creo que merece la pena, te importa ?

Imagen de microstudi

Ok, ya te lo he hecho,

Ok, ya te lo he hecho, modifica lo que te parezca si quieres!
Saludos!

Imagen de Anónimo

En mi caso tuve que cambiar

En mi caso tuve que cambiar eth0 por wlan0, y como los comandos están en castellano tuve que cambiar "inet addr" por "Direc. inet", y anda perfecto.

Imagen de utopianegra

Se podría meter el interface

Se podría meter el interface en una variable y lo automatizamos tambien, asi como las direcciones de red, que se podrian sacar de un modo sencillo y el script quedaría totalmente funcional, sin tener que modificar parametros a mano, ;), pero la verddad es que ya esta super currado, si alguno lo ha puesto que lo pase y lo actualizamos.

Imagen de microstudi

Como aporte, yo sustituiria

Como aporte, yo sustituiria las linias de obtención de IP:

ifconfig > $HOME/bin/hosts/ip.txt
ip=$(cat $HOME/bin/hosts/ip.txt | grep 192 | cut -c 23-36)

por esta:

ip=$(/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -c 6-)

es mas fiable si cambia la configuracion del fichero que genera ifconfig

Por cierto que el comando "notify-send" no viene instalado por defecto en karmic:

sudo apt-get install libnotify-bin

Saludos y muy buena idea este script!

Imagen de utopianegra

Como dejarias el script

Como dejarias el script entonces ? ponlo aqui y te lo posteo..

Imagen de microstudi

Mi script queda asi (de

Mi script queda asi (de momento),
se puede cambiar la linia ARCHIVOS="$HOME/bin/hosts" para que cada cual ponga el directorio que quiera para guardar los archivos temporales.

#!/bin/bash
#script creado por: franklin aliaga
#si no tienes nmap digita sudo apt-get install nmap
#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en un archivo *.txt

ARCHIVOS="$HOME/bin/hosts"

/usr/bin/nmap -sP 192.168.2.1/24 -oG $ARCHIVOS/hosts_ip.txt

#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
#y mandarlo a otro archivo *.txt
cat $ARCHIVOS/hosts_ip.txt | grep Host | cut -c 7-20 | tr -d "\()" > $ARCHIVOS/host_ip1.txt

#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo
contador=$(wc -l $ARCHIVOS/host_ip1.txt | cut -c 1-2)

#aqui obtenemos la nuestra ip
ip=$(/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -c 6-)
echo "Mi ip: $ip"
total=$(expr $contador - 1)

var=0

while [ $var -le $total ]; do
let var=$var+1
#capturamos la ip por linea
linea=$(cat $ARCHIVOS/host_ip1.txt | sed -n "$var p")
if [ $linea != "192.168.2.1" ]; then
if [ $linea != $ip ]; then
/usr/bin/notify-send "Conectado $linea"
#Para enterar-se por la consola también:
echo "Conectado $linea"
fi
fi
done

Imagen de thedarkman

muy bueno .. me funciona

muy bueno .. me funciona perfecto ...
habría manera de sacar también la MAC del equipo intruso por el terminal sin tener que acudir al router ???

salu2.

Imagen de microstudi

Nueva versión del script

Nueva versión del script en:
http://www.tuxapuntes.com/drupal/node/1710

Con detection de MAC y opciones por parámetros, creo que ya queda fino fino...

Salut!

Imagen de thedarkman

jugoooooooooonnnnnnnn

jugoooooooooonnnnnnnn ............
jugooooooooooooooonnnnnnnnn ............

thx.

Imagen de Mukenio

Hay que retocarlo como

Hay que retocarlo como dijeron antes. Para hacerlo mas general hay que reemplazar
/home/fal/.... por $HOME/...

Imagen de utopianegra

Llevas toda la razón,

Llevas toda la razón, retocado esta, si alguno tiene mas suguerencias, las añadimos.

Imagen de templix

Yo, sin que se entere la

Yo, sin que se entere la cuadrilla templix que ultimamente está en otra constalación, mandaria el post a “redes y seguridad” ... tiene categoria más que suficiente.. ja ja ja... y si se mosquean... que se chinchen!! ja ja ja

Imagen de charly

Al executarlo me da un error

Al executarlo me da un error repetido asta que decido pararlo Alguien tiene una posible solucion?. Las carpetas estan creadas i con los permisos correspondientes. El error es el siguiente:

ed: -e expresión #1, carácter 3: uso inválido de la dirección de línea 0
[: 34: !=: unexpected operator
alertared: 34: let: not found
sed: -e expresión #1, carácter 3: uso inválido de la dirección de línea 0
[: 34: !=: unexpected operator
alertared: 34: let: not found
sed: -e expresión #1, carácter 3: uso inválido de la dirección de línea 0
^C

Y al archivo le he añadido los cambios correspondientes a mi red:

#!/bin/bash
#script creado por: franklin aliaga
#si no tienes nmap digita sudo apt-get install nmap
#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en un archivo *.txt
nmap -sP 172.26.0.1/24 -oG /home/fal/hosts/hosts_ip.txt

#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
#y mandarlo a otro archivo *.txt
cat /home/fal/hosts/hosts_ip.txt | grep Host | cut -c 7-20 | tr -d "\()" > /home/fal/hosts/host_ip1.txt

#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo
contador=$(wc -l /home/fal/hosts/host_ip1.txt | tr -d "\/home/fal/hosts/host_ip1.txt")

#aqui obtenemos la nuestra ip
ifconfig > /home/fal/hosts/ip.txt
ip=$(cat /home/fal/hosts/ip.txt | grep 172 | cut -c 23-36)

total=$(expr $contador - 1)

var=0

while [ $var -le $total ];do
let var=$var+1
#capturamos la ip por linea
linea=$(cat /home/fal/hosts/host_ip1.txt | sed -n "$var p")
if [ $linea != "172.26.0.1" ];then

if [ $linea != $ip ];then
notify-send "Conectado" $linea
fi
fi
done

Imagen de fal

/home/fal/hosts/hosts_ip.txt

/home/fal/hosts/hosts_ip.txt

para esto tienes que crear el directorio hosts en tu carpeta personal

fal es el nonmbre del usuario con que estas logeado

172.26.0.1 tiene que ser la puerta de enlace predeterminada

Imagen de charly

ja cree los directorios

ja cree los directorios /home/fal/hosts i les di los permisos 777 pero lo pondre en /home/ aver si funciona.
Si, la puerta de enlace es 172.26.0.1/24.

Imagen de utopianegra

ejecutalo antes, fuera del

ejecutalo antes, fuera del crontab, asegurate de tener instalada la suite nmap

sudo apt-get isntall nmap

... ejecutalo con bash alertared ...

¿ le has dado los permisos de ejecucion de forma correcta ?

Imagen de charly

Si, tiene los permisos

Si, tiene los permisos correctos,seguire haciendo pruevas aver que tal va.

Imagen de Gerardo Vaquerizo

Me da la impresion de que el

Me da la impresion de que el Script necesita mas modificaciones.
Por ejemplo: 192.168.xx.1
O
/fal/
/tu nombre de usuario/

Faltaria esta linea:
#listamos la configuracion de los interfaces de red
ifconfig > /home/tu nombre de usuario/hosts/ip.txt

Y esto si que funciona
contador=$(wc -l /home/tu nombre de usuario/hosts/host_ip1.txt | cut -c 1-2)

Enhorabuena por el trabajo que has hecho

Imagen de Anónimo

Simplemente genial!!!

Simplemente genial!!!

Enviar un comentario nuevo

Google Friend Connect (leave a quick comment)
Loading
El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <strike> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <pre> <address> <sub> <sup> <p> <table> <tbody> <div> <hr> <tr> <th> <td>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para comprobar que eres un visitante y no un robot de spam.
Image CAPTCHA
Enter the characters shown in the image.

Inicio de sesión

Login
Sign in using Facebook

Navegación

Encuesta

¿Que te parece Lucid?:

Comentarios recientes

Quién está en línea

Actualmente hay 0 usuarios y 36 invitados en línea.

Usuarios nuevos

  • r2dtux
  • mercita2003
  • gackk
  • jcportero
  • carchca