Blog

Jueves, 26 Abril 2018 17:40

Bloquear IPs de Rusia y China

Written by 
Rate this item
(0 votes)

He aquí 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, …

#!/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

Read 2705 times Last modified on Jueves, 26 Abril 2018 19:25

Leave a comment

Make sure you enter the (*) required information where indicated. HTML code is not allowed.