Banear rangos de IP
lunes, 10 de octubre de 2011Actualmente hay baneadas en este servidor web unas 3749 ips que en algún momento ha tratado de colar spam en el blog (si quereis ver la lista está aquí). La lista está preparada para insertar en un archivo de configuración Apache haciendo algo como:
Include /ruta/servidor/banbots.txt
Con esto, cada una de las ips de la lista recibirá un Error 403 Forbiden (no autorizado) para cualquier tipo de acceso.
Consultando dicha lista podemos obtener desde que rangos de ip se recibe mayor cantidad de basura:
cat banbots.txt | cut -d " " -f3 | sed -r 's/([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})/\1\2/' | uniq -c | sort -nr | head -n 20
nos daría los 20 rangos de ips y el número de veces que se repite este en la lista anterior:
104 94.60.
es decir hay 104 ips que empiezan por 94.60 (Rumania), 40 que empiezan por 173.234 (EEUU), etc…
40 173.234.
32 76.107.
28 69.162.
25 64.120.
23 94.63.
16 23.19.
15 91.121.
15 71.205.
14 109.230.
12 50.31.
12 108.62.
11 24.125.
11 173.208.
10 98.142.
10 68.68.
9 88.191.
9 72.8.
9 68.234.
9 38.109.
Ahora podemos completar la linea anterior con cat banbots.txt | cut -d " " -f3 | sed -r 's/([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})/\1\2/' | uniq -c | sort -nr | head -n 20 | sed -r 's/ *([0-9]{1,3}) (.*)/-A INPUT -s \20.0\/16 -j DROP/' > archivo.txt; echo "COMMIT" >> archivo.txt
Que produciría un archivo de texto con-A INPUT -s 94.60.0.0/16 -j DROP
esta lista puedes insertarla rápidamente en el firewall con iptables-restore
-A INPUT -s 173.234.0.0/16 -j DROP
-A INPUT -s 76.107.0.0/16 -j DROP
-A INPUT -s 69.162.0.0/16 -j DROP
-A INPUT -s 64.120.0.0/16 -j DROP
-A INPUT -s 94.63.0.0/16 -j DROP
-A INPUT -s 23.19.0.0/16 -j DROP
-A INPUT -s 91.121.0.0/16 -j DROP
-A INPUT -s 71.205.0.0/16 -j DROP
-A INPUT -s 109.230.0.0/16 -j DROP
-A INPUT -s 50.31.0.0/16 -j DROP
-A INPUT -s 108.62.0.0/16 -j DROP
-A INPUT -s 24.125.0.0/16 -j DROP
-A INPUT -s 173.208.0.0/16 -j DROP
-A INPUT -s 98.142.0.0/16 -j DROP
-A INPUT -s 68.68.0.0/16 -j DROP
-A INPUT -s 88.191.0.0/16 -j DROP
-A INPUT -s 72.8.0.0/16 -j DROP
-A INPUT -s 68.234.0.0/16 -j DROP
-A INPUT -s 38.109.0.0/16 -j DROP
COMMIT
echo "*filter" | cat - archivo.txt | iptables-restore --noflush
22 de November, 2024 @ 09:02