Bloquear IPs de Rusia y China

O de cualquier otro país. Es un buen script creado por nixCraft que permite rápidamente bloquear la mayoría de IPs de los proveedores de servicio de un país concreto. En este caso Rusia y China.

Para cambiar a china solo borramos de ISO=”ru cn” ru. Si queremos añadir España pues añadimos es, fr para Francia, …

Algunas veces te ves obligado a bloquear un país entero. Con este script puedes hacerlo y mitigar los ataques cuando vienen de IPs de países en los que por algún motivo no es tan importante si te visitan o dejan de visitar.

Si están atacando una frutería de barrio lo mismo a esta frutería le da un poco lo mismo si temporalmente bloqueas las posibles visitas legitimas desde china.

#!/bin/bash
# El objetivo de este script es bloquear todo el tráfico de AFGHANISTAN (af) y CHINA (CN). Se puede usar la variable ISO para fijar qué países queremos bloquear.
# See url for more info - http://www.cyberciti.biz/faq/?p=3402
# Author: nixCraft  under GPL v.2.0+
# -------------------------------------------------------------------------------
ISO="ru cn"

# Rusia y china

### Variables para facilitar el uso del script que apuntan a iptables (cortafuegos), wget para coger los archivos de la base de datos y egrep para seleccionar la IP sin ningún símbolo que iptables no pueda interpretar ###
IPT=/sbin/iptables
WGET=/usr/bin/wget
EGREP=/bin/egrep
 
#Nueva tabla en iptables sobre el baneo por región
SPAMLIST="countrydrop"
#Ubicacion donde se guarda la base de datos de
ZONEROOT="/root/iptables"
#URL de la base de datos de paises
DLROOT="http://www.ipdeny.com/ipblocks/data/countries"
 
#Funcion para limpiar todas las reglas del firewall y lo ponemos por defecto.

cleanOldRules(){
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
}
 
#Creamos el directorio para almacenar la base de datos
[ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT
 
#Ejecutamos la funcion
cleanOldRules
 
#Creamos la nueva tabla de iptables con el nombre de la variable SPAMLIST
$IPT -N $SPAMLIST
 
for c  in $ISO
do
    # Base de datos local
    tDB=$ZONEROOT/$c.zone
 
    # Descargamos y actualizamos la base de datos
    $WGET -O $tDB $DLROOT/$c.zone
 
    # Mensaje del pais baneado que aparecerá en el log de iptables
    SPAMDROPMSG="$c Country Drop"
 
    # Filtramos la base de datos para que iptables interprete correctamente la base de datos y vamos anadiendo cada bloque de IP.
    BADIPS=$(egrep -v "^#|^$" $tDB)
    for ipblock in $BADIPS
    do
       $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
       $IPT -A $SPAMLIST -s $ipblock -j DROP
    done
done
 
# Drop todo
$IPT -I INPUT -j $SPAMLIST
$IPT -I OUTPUT -j $SPAMLIST
$IPT -I FORWARD -j $SPAMLIST
 
exit 0

Con iptables -L podemos ir viendo las reglas que se van añadiendo (los bloqueos) y con iptables -F realizamos flush.

1 thought on “Bloquear IPs de Rusia y China”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *