XDP & eBPF Block DoS

Segue um teste para aplicar os conceitos de eBPF! É um esboço de uma solução que espera ser funcional e que combina um programa XDP/eBPF em C com um script em Bash(antes de usar Go) para monitorar o tráfego e atualizar dinamicamente um map eBPF com sources IPs que devem ser bloqueados quando idenficado um possível ataque DoS.

  • Nesse cenário, o programa XDP/eBPF já está instalado na interface de rede e bloqueia pacotes provenientes de IPs listados no map.
  • O script em Bash monitora o arquivo de subsistema de rastreamento conntrack do Netfilter /proc/net/nf_conntrack para determinar se o número de conexões ativas ultrapassou o threshold configurado, e que ao ser atingido:
    • um log gerado por regras específicas nftables é analisado para identificar com base em uma "janela" de tempo, qual source IP ultrapassou o limite de conexões: indicando ser um possível ataque DoS:
      • que então é inserido no map eBPF, fazendo com que o programa XDP passe a descartar os pacotes desses endereços.

Como a publicação ultrapassou o limite do TabNews! Acesse aqui a postagem original...o/