domingo, 22 de abril de 2012

Iptables com módulo GEOIP para bloqueio de Países

Neste artigo irei demonstrar como adicionar o módulo GeoIP para trabalhar em conjunto com Iptables.

Através dele você pode estar bloqueando ranges de ip por origem.

Efetue o Download dos Builds:

http://download.sourceforge.net/xtables-addons/xtables-addons-1.39.tar.xz

http://slackbuilds.org/slackbuilds/13.37/network/xtables-addons.tar.gz

Com o comando whereis vamos localizar o diretório que se encontra os scripts necessários para o términa da configuração:

root@boot-v1:~# whereis xtables-addons
xtables-addons: /usr/libexec/xtables-addons /usr/man/man8/xtables-addons.8.gz /usr/share/man/man8/xtables-addons.8.gz /usr/X11/man/man8/xtables-addons.8.gz

O diretório que vamos localizar os scripts é o /usr/libexec/xtables-addons

root@boot-v1:/usr/libexec/xtables-addons# ls
xt_geoip_build*  xt_geoip_dl*

O script xt_geoip_dl é responsavel pelo download das listas que o iptables vai utilizar para o bloqueio de países.

root@boot-v1:/usr/libexec/xtables-addons# ./xt_geoip_dl

Agora vamos a conversão desta lista para que o iptables consiga utilizá-la corretamente:

root@boot-v1:/usr/libexec/xtables-addons# ls
GeoIPCountryCSV.zip  GeoIPCountryWhois.csv  GeoIPv6.csv  xt_geoip_build*  xt_geoip_dl*

root@boot-v1:/usr/libexec/xtables-addons# ./xt_geoip_build GeoIPCountryWhois.csv

Vamos utilizar também os blocos em IPV6:

root@boot-v1:/usr/libexec/xtables-addons# ./xt_geoip_build GeoIPv6.csv

Após a execução vamos criar um diretório para onde vamos mover a Database que acabamos de gerar:

mkdir -p /usr/share/xt_geoip/

cp -r {BE,LE} /usr/share/xt_geoip/

Agora já pode visualizar o módulo funcionando com o comando:

root@boot-v1:~# iptables -m geoip --help | more
iptables v1.4.10

Usage: iptables -[AD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)
Em IPV6 também pode ser utilizado:

root@boot-v1:~# ip6tables -m geoip --help | more
ip6tables v1.4.10

Usage: ip6tables -[AD] chain rule-specification [options]
       ip6tables -I chain [rulenum] rule-specification [options]
       ip6tables -R chain rulenum rule-specification [options]
       ip6tables -D chain rulenum [options]
       ip6tables -[LS] [chain [rulenum]] [options]
       ip6tables -[FZ] [chain] [options]
       ip6tables -[NX] chain
       ip6tables -E old-chain-name new-chain-name
       ip6tables -P chain target [options]
       ip6tables -h (print this help information)

Segue exemplo:

O exemplo abaixo estou bloqueando qualquer range da China com o rigem ao meu servidor no protocolo IPV4:

iptables -I INPUT -m geoip --src-cc CN -j DROP


Nenhum comentário:

Postar um comentário

Arquivo do blog