Control de acceso al puerto 80 (Web) y advertencia via Email

Iniciado por ANTRAX, Octubre 04, 2016, 02:41:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 04, 2016, 02:41:25 PM Ultima modificación: Febrero 20, 2017, 07:28:49 AM por HATI


Este script permite mediante la lectura de conexiones hacia el puerto 80, conocer si desde alguna IP o IP's existen multiplicidad de accesos.

De esa manera podemos determinar si el servidor esta bajo algún tipo de ataque o si algún sitio puede estar siendo vulnerado o con intentos de denegación de servicio.

Es importante aclarar que el script funciona escaneando los reportes del netstat, y lo que hace es enviar una advertencia cuando cierta IP supera el límite de conxiones que colocamos dentro del script. En el correo que envia ya detalla el whois de la IP informada, para tener una idea del país de origen del atacante.

El sistema esta dividido en 2 secciones que detallaremos:
Crear un archivo donde se van a colocar las direcciones de correo (Ej: Emails)

Código: bash
mauro@soyadmin:# vi emails
# Lista de destinatarios para las alertas
#
# Formato: direccion[,direccion] [cc|bcc]
#
# Se pueden indicar varias direcciones en distintas lineas o separadas por comas
# Las opciones "cc" y "bcc" marcan la direccion(es) de destino como "Cc:" or
# "Bcc:", respectivamente.
#
# Es importante que la ultima linea del fichero sea una linea en blanco
[email protected]
[email protected] bcc


Ahora crearemos el script que se ejecutará cada hora (cron.hourly) y que se utilizará para realizar el escaneo en si:

Código: bash
mauro@soyadmin:# vi /etc/cron.hourly/chequeoconexiones.sh
#!/bin/sh# Comando que realiza el reastreo
nroconn=`netstat -nap |grep ":80" | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | awk '{print $1}' | tail -1`# Comando que nos devolverá la ip
ip=`netstat -nap |grep ":80" | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | awk '{print $2}' | tail -1`

# Limite a superar para informar, esto se puede variar según las necesidades de cada server
limite=100
if [ $nroconn -gt $limite ]; then
mensaje="Atencion! la IP $ip tiene $nroconn conexiones activas"

# Realizamos el whois sobre la IP
infor=`whois $ip | grep country`
whois=`whois $ip`

# Generamos el correo
mailto=""
cc_to=""
bcc_to=""
while read direccion mode
do
if [ -z "$direccion" -o "${direccion:0:1}" = "#" ] ; then continue; fi
if [ "x$mode" = "xcc" -o "x$mode" = "xCC" ] ; then
cc_to=${cc_to:+${cc_to},}$direccion
else
if [ "x$mode" = "xbcc" -o "x$mode" = "xBCC" ] ; then
bcc_to=${bcc_to:+${bcc_to},}$direccion
else
mailto=${mailto:+${mailto},}$direccion
fi
fi

# Llamamos al archivo donde guardamos las direcciones de correo
done <~/emails
mailto=${mailto:-operator}
cc_to=${cc_to:+"-c $cc_to"}
bcc_to=${bcc_to:+"-b $bcc_to"}
mail ${cc_to} ${bcc_to} -s "Alerta OJO Muchas conexiones SERVER: (nombre de servidor)" ${mailto} >&2 <<-EOM
$mensaje
Dicha IP es de: $infor
WHOIS de $ip
$whois
EOM
fi


Conclusión: Este Script chequeará el puerto 80, en caso de encontrar una IP que tenga más de 100 conexiones simultaneas, nos enviará un correo advirtiéndonos. En el cuerpo del correo detallará un Whois de dicha IP a fin de saber de donde proviene.

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta