Como bloquear o Ultrasurf - solução definitiva (iptables + Fail2ban)
Neste artigo eu descrevo como fazer o bloqueio do Ultrasurf utilizando iptables e Fail2ban.
O problema
Em um primeiro momento, eu acreditei que seria fácil bloquear o Ultrasurf, porém o uso de proxy transparente obriga que a porta
443 (HTTPS) fique liberada, o 'BitTorrent' foi bloqueado sem dificuldades.
Com o uso do tcpdump, eu identifiquei que todo o acesso do Ultrasurf sai pela porta 443, logo a solução mais obvia seria bloqueá-la, porém não é possível. Bloquear o IP ou 'range' de IP do servidor de destino seria outra opção.
Quando fiz o bloqueio pelo 'range' de IP, descobri que o Ultrasurf tenta uma centena de IPs diferentes até conseguir o acesso que ele precisa, e certamente devem existir novos IPs a cada nova versão.
Pesquisei pelo Google e não encontrei nenhuma forma eficiente de bloquear o Ultrasurf, foi então que pensei o seguinte:
- Criar uma regra no iptables e fazer Log dos acesso ao IP do Ultrasurf, depois criar um "Daemon" para ler esse log e fazer um bloqueio em tempo real.
Bem, vamos por a mão na massa.
Acredito que esta solução possa ser utilizada por todos, para Firewall simples e até o mais complexo.
Eu estou usando Debian 5.0.3, iptables 1.4.2 e Fail2ban 0.8.3.
Qualquer dúvida, problema ou sugestão, podem deixar um comentário.
No final você encontra os arquivos de configuração para download.
A rede 65.49.14.0/24 é a primeira a ser contactada pelo Ultrasurf quando ele é aberto, a regra acima apenas gera um Log, não existe bloqueio do acesso, em um primeiro momento o usuário vai até pensar que está funcionando.
ATENÇÃO: Coloque esta regra antes da regra com o módulo state (-m state --state ESTABLISHED,RELATED).
Se colocar depois, os pacotes das conexões já estabelecidas, não irão para o Log e pode gerar falhas no bloqueio.
Com o uso do tcpdump, eu identifiquei que todo o acesso do Ultrasurf sai pela porta 443, logo a solução mais obvia seria bloqueá-la, porém não é possível. Bloquear o IP ou 'range' de IP do servidor de destino seria outra opção.
Quando fiz o bloqueio pelo 'range' de IP, descobri que o Ultrasurf tenta uma centena de IPs diferentes até conseguir o acesso que ele precisa, e certamente devem existir novos IPs a cada nova versão.
Pesquisei pelo Google e não encontrei nenhuma forma eficiente de bloquear o Ultrasurf, foi então que pensei o seguinte:
- Criar uma regra no iptables e fazer Log dos acesso ao IP do Ultrasurf, depois criar um "Daemon" para ler esse log e fazer um bloqueio em tempo real.
Bem, vamos por a mão na massa.
Começando
Vamos lá, este pequeno tutorial é para tratar um problema especifico, sendo assim, eu suponho que você já sabe usar o iptables, afinal já está aqui buscando uma forma de fazer um bloqueio mais avançado. rsAcredito que esta solução possa ser utilizada por todos, para Firewall simples e até o mais complexo.
Eu estou usando Debian 5.0.3, iptables 1.4.2 e Fail2ban 0.8.3.
Qualquer dúvida, problema ou sugestão, podem deixar um comentário.
No final você encontra os arquivos de configuração para download.
iptables
Esta parte é bem simples, no seu script de firewall, adicione a seguinte linha:
iptables -A FORWARD -d 65.49.14.0/24 -j LOG --log-prefix "=UltraSurf= "
A rede 65.49.14.0/24 é a primeira a ser contactada pelo Ultrasurf quando ele é aberto, a regra acima apenas gera um Log, não existe bloqueio do acesso, em um primeiro momento o usuário vai até pensar que está funcionando.
ATENÇÃO: Coloque esta regra antes da regra com o módulo state (-m state --state ESTABLISHED,RELATED).
Se colocar depois, os pacotes das conexões já estabelecidas, não irão para o Log e pode gerar falhas no bloqueio.
a regra state (-m state --state ESTABLISHED,RELATED) -bash: syntax error near unexpected token `-m'