
Firewall Leve e Rápido Baseado em XDP
Siper é um firewall de lista negra IP de alto desempenho baseado em XDP, construído com Go e C (eBPF). Ele permite descartar tráfego malicioso no estágio mais inicial possível da pilha de rede do Linux—no nível do driver de rede. Ao utilizar o XDP (Express Data Path), o Siper processa pacotes antes mesmo de eles atingirem o subsistema de rede pesado do kernel, proporcionando desempenho extremo mesmo sob condições intensas de DDoS.
Desempenho Impulsionado por XDP: A filtragem de pacotes ocorre no nível do driver de NIC usando XDP_DROP, resultando em uma sobrecarga de CPU significativamente menor em comparação com iptables ou nftables.
LPM (Longest Prefix Match): Suporta bloqueio baseado em CIDR (ex.: 192.168.1.0/24) usando mapas BPF LPM Trie especializados para consultas eficientes de intervalos IP.
Configuração Persistente: As regras são gerenciadas por meio de uma lista negra local baseada em JSON, permitindo fácil auditoria e versionamento de endereços bloqueados.
Observabilidade em Tempo Real: Métricas integradas para rastrear contadores de pacotes e bytes para tráfego descartado e permitido.
Arquitetura Minimalista: Um objeto BPF compilado lida com o plano de dados, enquanto uma CLI baseada em Go gerencia o plano de controle.
O Siper opera no princípio de separar o Plano de Controle (Espaço do Usuário) do Plano de Dados (Espaço do Kernel).
siper run é executado, a aplicação Go analisa o JSON, compila/carrega o objeto eBPF e preenche o Mapa BPF com os prefixos IP.Ingresso: Um pacote chega na interface de rede.
Consulta: O programa XDP intercepta o pacote e realiza uma consulta no mapa block_list.
Veredito:
Pré-requisitos
make
Vá para o diretório build/
Adicione ou remova intervalos IP do seu arquivo de configuração local:
# Adicionar um CIDR à lista
sudo ./siper add --cidr 1.2.3.0/24 --comment "Known botnet"
# Excluir uma regra
sudo ./siper del --cidr 1.2.3.0/24
Anexe o firewall a uma interface de rede específica:
# Iniciar o firewall
sudo ./siper run --iface eth0 --path ./blacklist.json
# Parar e desanexar o firewall
sudo ./siper stop --iface eth0
Veja o que está acontecendo dentro do kernel:
# Ver chaves atualmente ativas no mapa BPF
sudo ./siper dump-keys
# Monitorar estatísticas de descarte/passagem
sudo ./siper dump-metrics
Pull requests são bem-vindos. Para correções de bugs e pequenas melhorias, envie um pull request. Para mudanças significativas, abra uma issue primeiro para discutir o que você gostaria de alterar.
Este projeto é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da licença GPLv3. Veja LICENSE para detalhes.