
Olá!
Seguindo a linha de hardening que venho abordando nos últimos artigos, hoje vamos falar de uma abordagem simples, porém extremamente eficiente: bloqueio por GEOIP direto no sistema operacional.
Esse é um tipo de configuração que, inclusive, costumo compartilhar nos treinamentos de Zimbra que aplico, principalmente quando falamos de proteção de borda em ambientes sem firewall dedicado.
Em muitos cenários, acabamos ficando limitados nas camadas de proteção.
E é aqui que entra uma pergunta prática:
Faz sentido permitir conexões SMTP do mundo inteiro?
Na maioria dos ambientes que administro, a resposta é não.
Grande parte das tentativas de abuso (spam, brute force, relay abuse) vem de regiões bem específicas — e bloquear isso na borda já reduz bastante o ruído antes mesmo de chegar no Postfix/Zimbra.
Instalando o ipset
O ipset permite trabalhar com listas de IP de forma performática, sem degradar o iptables.
yum install ipset
ou
apt-get install ipset
Baixando as listas de países (GEOIP)
cd /root
mkdir geoip
cd geoipwget --no-check-certificate http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
tar zxvf all-zones.tar.gz
Aqui você terá arquivos por país (ex: cn.zone, ru.zone, etc).
Criando a lista no ipset
ipset create countryblock nethash
Adicionando países na blacklist
Exemplo prático (ajuste conforme sua realidade):
for i in `cat cn.zone`;do ipset add countryblock $i;done
for i in `cat in.zone`;do ipset add countryblock $i;done
for i in `cat ru.zone`;do ipset add countryblock $i;done
for i in `cat ni.zone`;do ipset add countryblock $i;done
Aqui não existe certo ou errado — o ideal é você observar seus logs e entender de onde vêm as tentativas.
Criando a regra no iptables
iptables -A INPUT -m set --match-set countryblock src -j DROP
A partir daqui, qualquer IP desses ranges nem chega a conversar com seu servidor.
Removendo a regra (caso necessário)
iptables -D INPUT -m set --match-set countryblock src -j DROP
Tornando persistente
Debian/Ubuntu
ipset save > /etc/ipset.up.rules
iptables-save > /etc/iptables/rules.v4
RHEL/CentOS
ipset save > /etc/ipset.up.rules
iptables-save > /etc/sysconfig/iptables
Considerações finais
Esse tipo de bloqueio não substitui outras camadas (postscreen, RBL, SPF, etc), mas funciona muito bem como primeira linha de defesa.
Na prática, você reduz:
- volume de conexões
- carga no Postfix
- superfície de ataque
E tudo isso com uma implementação simples e sem depender de ferramentas externas.
Se você ainda não utiliza esse tipo de abordagem, vale testar, principalmente em ambientes mais expostos.

Deixe um comentário