
Minecraft-XDP-eBPF: Proteção DDoS em Nível do Kernel para Se
Outfluencer/Minecraft-XDP-eBPF
O primeiro e único Filtro XDP Minecraft disponível publicamente, protegendo seu servidor contra ataques DDoS da camada 7
Ver no GitHub ↗Se você já executou um servidor Minecraft público, conhece aquele sentimento: alguém envia um fluxo de tráfego de lixo em sua direção e de repente todos estão fazendo rubber-banding. Ataques DDoS da Camada 7 (do nível da aplicação) são baratos, fáceis de lançar e incrivelmente chatos de defender com firewalls tradicionais. Minecraft-XDP-eBPF resolve isso descartando pacotes maliciosos antes de chegarem ao seu software servidor - direto no nível do kernel.
O Que Este Projeto Faz
Minecraft-XDP-eBPF é um firewall XDP (eXpress Data Path) escrito em C que usa eBPF (extended Berkeley Packet Filter) para inspecionar tráfego Minecraft no nível do driver de rede. Se isso soa intimidador, pense assim: em vez de deixar pacotes de lixo viajar até seu servidor Java, essa ferramenta os intercepta na placa de rede e grita "não" antes que consumam recursos do servidor.
O projeto lida com o que muitas pessoas não percebem que ataques exploram: pacotes do protocolo Minecraft malformados. Ele analisa handshakes, pings de status e requisições de login, depois descarta qualquer coisa que viole a especificação do protocolo Minecraft ou pareça suspeita. Está tudo bem, VarInts inválidos, sequências de pacotes sem sentido, tentativas de conexão malformadas - todos desaparecem.
Atualmente suporta Minecraft 1.8 a 26.1.2 em IPv4, sendo 25565 a porta padrão (obviamente). Também há limitação de taxa SYN integrada, limitando conexões a 10 SYNs por 3 segundos por endereço IP por padrão. Todo esse filtro acontece sem seu código de servidor nem saber que os pacotes existiram.
Por Que Você Gostaria Disso
Você precisa disso se estiver executando um servidor público e quiser parar de ser absolutamente martelado por ataques aleatórios. DDoS da Camada 7 é muito mais comum do que as pessoas pensam, e é o tipo de coisa difícil de defender com apenas seu ISP upstream. Eles olham para a largura de banda; você está procurando manter seu servidor responsivo.
Imagine isto: alguém (ou uma botnet) descobre o IP do seu servidor e começa a enviar milhares de tentativas falsas de login Minecraft por segundo. Seu servidor agora tem que gastar ciclos de CPU analisando esses pacotes, rejeitando-os e limpando. Seus jogadores reais travam porque o servidor está ocupado se afogando em lixo. Com essa ferramenta, esses pacotes falsos nunca chegam ao seu servidor.
O grande ganho aqui é descarte com cópia zero. Tráfego malicioso é descartado na camada XDP (XDP_DROP) antes do kernel nem alocar memória para ele. Isso não é apenas rápido, isso é "estamos falando de microssegundos" rápido.
Se você está executando um pequeno servidor de sobrevivência com amigos, você provavelmente não precisa disso. Se você está executando algo público ou competitivo - especialmente um servidor PvP onde as pessoas podem querer assediá-lo - vale a pena pensar sobre.
Deixando Funcionar
A instalação tem algumas partes móveis, mas não é loucura. Você precisará de um sistema Linux (a ferramenta é apenas para Linux) com acesso root.
Primeiro, instale os pré-requisitos. Se você estiver no Ubuntu ou Debian:
sudo apt update
sudo apt install -y gcc-multilib wget gnupg software-properties-common git libbpf-dev
Depois pegue LLVM/Clang. O projeto precisa de uma versão recente (CI testa com LLVM 21):
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 21 all
Você também precisará da cadeia de ferramentas Rust instalada. Quando tiver tudo, clone o repositório e execute o script de build:
git clone https://github.com/Outfluencer/Minecraft-XDP-eBPF.git
cd Minecraft-XDP-eBPF./build.sh
Depois que isso compilar com sucesso, você tem um binário em `target/release/xdp-loader`. Para realmente carregar o firewall na sua interface de rede:
sudo./target/release/xdp-loader eth0
(Substitua eth0 pela sua interface de rede real. Se você não souber, `ip link show` dirá para você.)
E é isso. O firewall está ativo e filtrando tráfego. Quer monitorar o que está fazendo? Adicione um endpoint de métricas Prometheus:
sudo./target/release/xdp-loader eth0 --metrics-addr 0.0.0.0:1999
Depois acesse `http://seu-ip-servidor:1999/metrics` para ver contagens de pacotes, quedas e outras estatísticas divertidas.
Recursos Que Importam
Inspeção Profunda de Pacotes
A ferramenta não apenas olha para cabeçalhos de pacotes, ela cava no protocolo real do Minecraft. Ela valida codificação VarInt (que muitas ferramentas de ataque usam mal), verifica estrutura de pacotes e aplica regras de sequência. Pacotes sintaticamente inválidos para o protocolo Minecraft são descartados imediatamente.
Limitação de Conexão
Por padrão, limita novas conexões TCP a 10 SYNs por 3 segundos por IP de origem. Você pode ajustar isso no arquivo `build.rs` se seu tráfego legítimo real ficar martelado (talvez você esteja migrando servidores e tenha um pico), mas o padrão é razoável para a maioria das configurações.
Descarte com Cópia Zero
A parte mais legal, honestamente. XDP opera no nível do driver antes da pilha de rede normal do kernel nem se envolver. Pacotes maliciosos são descartados sem nunca serem copiados para memória do kernel. Seu servidor não acorda por causa disso. Essa é melhoria de desempenho real, não apenas teórica.
Pegadinhas e Como Evitá-las
Você precisa executar isso como root ou com permissões eBPF apropriadas. Se você receber erros de permissão, verifique se está usando `sudo`. Sem surpresa, mas é a questão mais comum.
Se você estiver alterando a configuração em `build.rs` (alterando portas, taxas de limitação, etc.), lembre-se que você tem que recompilar após editar. Não apenas execute novamente o binário e espere que ele pegue suas mudanças. Ele não vai. Cometi esse erro uma vez e passei dez minutos me perguntando por que minha configuração de porta não teve efeito (na verdade, não fui eu, apenas falando hipoteticamente).
A outra pegadinha: se sua configuração de mapa mudar - digamos que você habilite mapas Per-CPU ou mexer com tamanhos de estrutura de dados - às vezes o sistema de arquivos BPF fica confuso na reinicialização. A solução é nuclear, mas funciona:
sudo rm -r /sys/fs/bpf
Isso limpa o sistema de arquivos BPF. Quando você reinicia o carregador, ele criará mapas frescos. Apenas faça isso se estiver recebendo erros sobre criação de mapa, não é algo que você precisa fazer regularmente.
Também lembre-se que o programa de espaço de usuário tem que continuar funcionando para gerenciar os mapas eBPF. Se você matar o processo do carregador, o firewall descarrega imediatamente. Você provavelmente gostaria de executá-lo sob systemd ou outro supervisor para que reinicie se travar.
E Quanto às Alternativas?
Não há muitas ferramentas fazendo exatamente o que isso faz. A maioria das pessoas confia na proteção DDoS de seu ISP, usa um serviço comercial como Cloudflare, ou apenas aceita que ocasionalmente será atingida.
Cloudflare tem um serviço específico para Minecraft que faz proxy do seu tráfego, mas você está pagando por isso e o IP do seu servidor está escondido atrás de um proxy. Essa ferramenta é auto-hospedada e gratuita (licenciada BSD, então código aberto). Trade-offs diferentes.
Algumas pessoas usam limitação de taxa básica em seu software servidor ou firewall, mas isso acontece depois que pacotes chegam ao seu servidor. Essa ferramenta os para no nível do driver, que é mais rápido e eficiente.
Se você está apenas começando com hospedagem de servidor, verifique a proteção DDoS integrada do seu host primeiro. Mas se você estiver executando em metal nu ou precisar de mais controle, Minecraft-XDP-eBPF é genuinamente único no que oferece.
Antes de Implantar
Teste em um ambiente de preparação se puder. Execute em um servidor de não-produção ou um teste VPS para certificar-se de que não filtra acidentalmente tráfego legítimo (não deveria, mas erros de configuração acontecem). Também verifique se funciona com sua versão específica de servidor Minecraft antes de ativar para jogadores reais.
Se você está protegendo um servidor de sobrevivência, é baixo risco. Se você estiver executando um servidor competitivo PvP ou de facção onde jogadores legítimos já estão frustrados, uma configuração incorreta que bloqueia seus pacotes de login poderia ser um desastre.
O projeto tem 169 stars no GitHub e é mantido ativamente. Esse lançamento mais recente melhorou o método de leitura varint, que é exatamente o tipo de coisa chata-mas-crítica que você quer ver em uma ferramenta de segurança. Esse é trabalho sólido.
Configure essa exportação de métricas Prometheus. Monitore-a. Fique de olho nas taxas de queda de pacotes - se algo parecer estranho, você o detectará cedo. E se você está genuinamente preocupado com DDoS e executando um servidor público legítimo, essa ferramenta vale seu tempo.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.


