systemadmin.es > Seguridad > Bloqueo automático por demasiado tráfico

Bloqueo automático por demasiado tráfico

Si recibimos mucho tráfico desde una cierta IP, mediante tshark vimos que podíamos obtener muestras del tráfico de una cierta duración y obtener estadísticas para identificar el tráfico. Vamos a ver un script para filtrar este tráfico entrante no deseado automáticamente:

Mediante un sencillo script en bash podemos parsear la salida del tshark y banear mediante iptables las IPs que superen una cierta cantidad de paquetes:

#!/bin/bash

TSHARKTMP=$(mktemp /tmp/tshark.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)

/usr/sbin/tshark -i bond0 -q -z 'ip_hosts,tree' -a duration:30  2>/dev/null > $TSHARKTMP

for i in $(cat $TSHARKTMP | grep -E "^  [0-9]" | sort -nk2 | grep -v "^  192\.168" | awk '$2 > 10000 { print $1 }'); 
do 
  /sbin/iptables -L -n | grep $i >/dev/null 2>&1
  if [ $? -ne 0 ];
  then
    (grep $i $TSHARKTMP; echo ""; whois $i 2>/dev/null) | mail -s "DROP $i $(hostname -s)" jordi@systemadmin.es
    /sbin/iptables -A INPUT -s $i -j DROP; 
  fi
done

rm -f $TSHARKTMP

En el caso que tengamos IPs que no queramos que se baneen podemos filtrarlas en el script o incluir un ACCEPT en las reglas por defecto de iptables:

# iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT
# iptables -L -nv
Chain INPUT (policy ACCEPT 53581 packets, 3683K bytes)
 pkts bytes target     prot opt in     out     source               destination               
    0     0 ACCEPT     all  --  *      *       192.168.0.0/16       0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 65567 packets, 16M bytes)
 pkts bytes target     prot opt in     out     source               destination         

A continuación simplemente deberemos ejecutar periódicamente el script y si lo creemos conveniente, limpiar las reglas para evitar que se acumulen.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>