Una indicación mas, el script cuenta con dos partes:
1) blockIP.sh
2) ataques-reading.sh
blockIP.sh: es el script que bloquea a las ips.
ataques-reading.sh: es el script que chequea las conexiones en el momento del ataque y las identifica como atacantes o no.
Lo único que tienen que hacer es subir los scripts a la carpeta root y luego asignarle los permisos.
1) Chmod 777 blockIP.sh
2) Chmod 777 ataques-reading.sh
En el momento del ataque entrar por consola, a la carpeta root donde están plantados los scripts y ejecutar:
./ataques-reading.sh
Y del resto del trabajo se encargan los scripts.
Por otra parte pueden usar el script blockIP.sh para filtrar ips individuales:
./blockIP.sh LAIP
./blockIP.sh 192.168.1.3
Si ustedes son administradores de sistemas y tienen colaboradores que no tienen demasiada noción en el área pueden instalar el script blockIP.sh para facilitarle la tarea, ya que muchas veces es necesario bloquear alguna que otra ip.
blockIP.sh
------------------------------------------------------------------------------------------------
Código:
#!/bin/bash
if [ $# -eq 0 ] ; then
echo -e " Uso: $0 IPs_a_bloquear\n"
exit 1
fi
while [ $# -ne 0 ] ; do
if [ "$1" == "127.0.0.1" -o "`echo $1 | cut -d'.' -f 1-3`" == "170.210.136" -o "`echo $1 | cut -d'.' -f 1-3`" == "170.210.156" ] ; then
echo " No se bloquea $1!!!"
else
IP="$1"
echo -n "Bloqueando $IP..."
iptables -I INPUT -s $IP -j DROP
echo -en "\nRegistrando $IP..."
echo "$IP" >> /root/blockIP.rules
echo
fi
shift
done
exit 0
ataques-reading.sh
------------------------------------------------------------------------------------------------
Código:
#!/bin/bash
cd /root
CONTADOR=0
while true ; do
[ "$1" == "-d" ] && echo -e "\nEntro al while\n"
for IP in $(netstat -napt | grep -E "SYN_RECV|_WAIT" | sort -n -k 5 | awk '{print $5}' | cut -d':' -f 1 | sort -u | grep -vE "170.210.15[2-6]|127.0.0.1|170.210.156") ; do
CANT=$(netstat -napt | grep "$IP" | wc -l)
[ "$1" == "-d" ] && echo "Entro al for - $IP - $CANT"
if [ $CANT -gt 15 ] ; then
(iptables -nL | grep -qw $IP) && continue
CONTADOR=$[CONTADOR+1]
echo "$IP: $CANT conexiones - CONTADOR: $CONTADOR"
/root/blockIP.sh $IP
/etc/init.d/apache2 restart 2>/dev/null
/etc/init.d/postgres restart 2>/dev/null
if [ $CONTADOR -eq 20 ] ; then
CONTADOR=0
fi
echo
fi
done
sleep 5
done
exit
PD: TIENEN QUE MODIFICAR EL SCRIP por ejemplo 170.210.156 es la IP de salida del servidor en donde esta.
/etc/init.d/apache2 restart 2>/dev/null
/etc/init.d/postgres restart 2>/dev/null
yo reinicio apache y la base de datos, ustedes pueden modificar.
blockIP.rules (pueden sacarlo o dejarlo, allí van quedando las ips que se filtran)