O netfilter oferece, nativamente, uma gama de extensões poderosas. Mas, é possível incluir também o suporte a extensões adicionais (não oficiais), como: geoip (filtragem por geo referência), ipp2p (detecção de aplicativos peer-to-peer) e/ou TARPIT (inviabiliza uma conexão – descarta manipulando o tamanho da janela TCP), por exemplo.
Ao contrário do que costuma ser dito, não é preciso recompilar kernel. No entanto, como as extensões são módulos de kernel, será necessária a existência de bibliotecas essenciais de desenvolvimento e pacote linux-headers – durante a instalação, os módulos (apenas) serão compilados automaticamente.
Não é um processo manual! 😉
– Em “distribuições Debian“, a instalação básica pode ser feita com os seguintes comandos:
sudo apt-get install build-essential sudo apt-get install linux-headers-generic# Suporte no *Debian* sudo apt-get -y install module-assistant sudo module-assistant auto-install xtables-addons# Suporte no *Ubuntu* sudo apt-get -y install unzip geoip-bin sudo apt-get -y install xtables-addons-common
– Por fim, é preciso instalar e configurar o suporte ao GEOIP (bibliotecas e base de dados).
sudo aptitude install libtext-csv-xs-perl sudo /usr/lib/xtables-addons/xt_geoip_dl sudo mkdir /usr/share/xt_geoip sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
Este último passo pode ser refeito, periodicamente, para manter a base de dados atualizada.
Concluída a instalação, a utilização das extensões será transparente (como no suporte nativo). Em alguns casos, se houver incompatibilidade com a versão de kernel do sistema, será necessário buscar uma atualização/correção específica no site de sua distribuição (é raro acontecer).
O processo descrito é feito apenas uma vez e, nas próximas atualizações de sistema (upgrade ou dist-upgrade), será refeito automaticamente pelos scripts de instalação. O risco de incompatibilidade de kernel só existe quando o administrador força a instalação de um kernel que não é instalado, por padrão e automaticamente, na distribuição.
Para saber quais são os módulos ou extensões suportados liste o conteúdo do diretório /lib/xtables.
O número de recursos é grande…
A utilização do TARPIT, por exemplo, segue a mesma lógica do DROP ou REJECT. A diferença principal está na forma como o pacote é bloqueado. Ao invés de descartar ou rejeitar, o sistema manipula o tamanho da janela TCP (para 0), fazendo com que a conexão fique “pendurada”. Assim, o endereço de origem não encerra a conexão e o recurso permanece alocado. É uma alternativa interessante para reagir a diferentes tipos de ataque, mas não utilize em substituição ao DROP ou REJECT. Mais adiante abordarei este assunto com maiores detalhes.
Caso você tenha alguma dúvida em relação a sintaxe de configuração das extensões, utilize as opções de ajuda do próprio comando iptables (–help):
root@fips:/usr/share/xt_geoip# iptables -m ipp2p --help root@fips:/usr/share/xt_geoip# iptables -m geoip --help geoip match options: [!] --src-cc, --source-country country[,country...] Match packet coming from (one of) the specified country(ies) [!] --dst-cc, --destination-country country[,country...] Match packet going to (one of) the specified country(ies)
Podemos testar a detecção geoip através da ferramenta geoiplookup:
root@fips:/usr/share/xt_geoip# geoiplookup 8.8.8.8 GeoIP Country Edition: US, United Statesou
root@fips:/usr/share/xt_geoip# geoiplookup 200.147.3.199 GeoIP Country Edition: BR, Brazil
Exemplo de filtro:
Suponhamos que você tenha configurado um bridge-firewall/IPS (interface física de entrada eth0) e deseja liberar o acesso aos servidores apenas para endereços do Brasil, ignorando requisições de DNS ou email.
/sbin/iptables -t filter -N dropgeo 2>/dev/null /sbin/iptables -t filter -A dropgeo -p udp --dport 53 -j RETURN /sbin/iptables -t filter -A dropgeo -m multiport -p tcp --dport 25,587,110 -j RETURN /sbin/iptables -t filter -A dropgeo -m geoip --src-cc BR -j RETURN /sbin/iptables -t filter -A dropgeo -m limit --limit 3/s --limit-burst 3 -j LOG --log-level info --log-prefix "DROP profile dropgeo " /sbin/iptables -t filter -A dropgeo -j DROP /sbin/iptables -t filter -A FORWARD -m physdev --physdev-in eth0 -d 200.200.200.0/24 -j dropgeo
[…] que, para ativar o suporte xt_geoip (netfilter), é preciso fazer download da base atualizada no formato CSV. Sendo assim, refiz o […]