•
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: