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 ipsetuna 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.shcreamos 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 DROPlo 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 DROPcomo 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