Logo
You
Code

IPTABLES bloquear paises - Block Country IPTABLES - Debian Squeeze

Autor YouCode - http://www.youcode.com.ar/linux/iptables-bloquear-paises--block-country-iptables--debian-squeeze-394

Veremos como bloquear todo un rango de IP de los paises que necesitemos sea por spam o por ser peligrosos. Block Country IPTABLES

Este tuto esta basado en Debian Squeeze , hay otros dando vueltas por la red, pero como es tipico de YouCode , ponemos lo que hemos probado en nuestros servidores.

Entonces....

Debemos instalar IPSET
# apt-get install ipset
una ves instalado debemos hacer que cargue con el archivo IPTABLES y a medida que carga debera tomar los ip a bloquear, esto lo haremos desde archivos TXT.

Se supone en este tuto que IPTABLES lo estan cargando desde un archivo .SH , en nuestro caso tenemos iptables.sh que se ejecuta al inicio y ya tenemos todo cargado como queremos, entonces en este archivo ponemos al final :
 
tus reglas
..................
..................
..................
..................
#Bloqueo de paises
/tu_path/bloquear.sh
creamos el archivo bloquear.sh y ponemos:
ipset create block-iraq hash:net
while read line; do ipset add block-iraq $line; done < iraq.txt
iptables -I INPUT -m set --match-set block-iraq src -j DROP
lo que decimos a IPSET es que cargue del archivo iraq.txt todos los IP y hace la regla en IPTABLES dropeando ese IP.
Cuando hagamos #iptables -L veremos la regla llamada block-iraq que nos idica que esta cargada, algo asi aparecera:
 
# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             match-set block-iraq src
DROP       all  --  anywhere             anywhere             match-set block-china src
DROP       all  --  anywhere             anywhere             match-set block-korea src
DROP       all  --  anywhere             anywhere             match-set block-romalia src
DROP       all  --  anywhere             anywhere             match-set block-rusia src
DROP       all  --  anywhere             anywhere             match-set block-turkey src
DROP       all  --  anywhere             anywhere             match-set block-india src
....bueno, en mi caso hay varios bloqueados.

Para bajar los IP de cada pais, pueden hacerlo desde :
http://www.ipdeny.com/ipblocks/data/countries/ 

donde bajaremos el pais que nos interese o todos, pero no carguen todos sino nadie podra acceder a su server.

Pueden crear un txt (# vim iraq.txt) y pegan los ip y si quieren bloquear china se hace lo mismo, no olviden en el script de bloquear.sh agregar las lineas que corresponden a este nuevo bloqueo, por ej, yo lo tengo asi :
 
#SCRIPT PARA BLOQUEAR PAISES CON IPSET + IPTABLES

#INDIA
ipset create block-india hash:net
while read line; do ipset add block-india $line; done < india.txt
iptables -I INPUT -m set --match-set block-india src -j DROP

#TURKEY
ipset create block-turkey hash:net
while read line; do ipset add block-turkey $line; done < turkey.txt
iptables -I INPUT -m set --match-set block-turkey src -j DROP

#RUSIA
ipset create block-rusia hash:net
while read line; do ipset add block-rusia $line; done < rusia.txt
iptables -I INPUT -m set --match-set block-rusia src -j DROP

#ROMALIA
ipset create block-romalia hash:net
while read line; do ipset add block-romalia $line; done < romalia.txt
iptables -I INPUT -m set --match-set block-romalia src -j DROP

#KOREA
ipset create block-korea hash:net
while read line; do ipset add block-korea $line; done < korea.txt
iptables -I INPUT -m set --match-set block-korea src -j DROP

#CHINA
ipset create block-china hash:net
while read line; do ipset add block-china $line; done < china.txt
iptables -I INPUT -m set --match-set block-china src -j DROP

#IRAQ
ipset create block-iraq hash:net
while read line; do ipset add block-iraq $line; done < iraq.txt
iptables -I INPUT -m set --match-set block-iraq src -j DROP
como veran, cada pais que me interesa bloquear es un TXT deferente.

Una vez realizado esto, recargamos IPTABLES (va a tomarse un tiempido segun los paises a cargar) y listo! ya esta bloqueado el pais que querramos.
 
http://www.youcode.com.ar/linux/iptables-bloquear-paises--block-country-iptables--debian-squeeze-394