Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 46. Usando o xdp-filter para filtragem de tráfego de alto desempenho para evitar ataques DDoS

Comparado aos filtros de pacotes, como nftables, o Express Data Path (XDP) processa e descarrega os pacotes da rede diretamente na interface da rede. Portanto, o XDP determina o próximo passo para o pacote antes que ele chegue a um firewall ou outras aplicações. Como resultado, os filtros XDP requerem menos recursos e podem processar pacotes de rede a uma taxa muito maior do que os filtros de pacotes convencionais para se defender contra ataques de Negação de Serviço Distribuída (DDoS). Por exemplo, durante os testes, a Red Hat caiu 26 milhões de pacotes de rede por segundo em um único núcleo, o que é significativamente maior do que a taxa de queda de nftables no mesmo hardware.

O utilitário xdp-filter permite ou deixa cair os pacotes de rede que chegam usando XDP. Você pode criar regras para filtrar o tráfego de ou para o específico:

  • Endereços IP
  • Endereços MAC
  • Portos

Note que, mesmo que xdp-filter tenha uma taxa significativamente maior de processamento de pacotes, ele não tem as mesmas capacidades que, por exemplo, nftables. Considere xdp-filter uma utilidade conceitual para demonstrar a filtragem de pacotes usando o XDP. Além disso, você pode usar o código do utilitário para uma melhor compreensão de como escrever suas próprias aplicações XDP.

Importante

A Red Hat fornece o utilitário xdp-filter como uma prévia tecnológica não suportada.

46.1. Eliminação de pacotes de rede que correspondem a uma regra do filtro de xdp

Esta seção descreve como usar xdp-filter para soltar pacotes de rede:

  • Para um porto de destino específico
  • A partir de um endereço IP específico
  • A partir de um endereço MAC específico

A política allow de xdp-filter define que todo o tráfego é permitido e o filtro deixa cair apenas os pacotes de rede que correspondem a uma determinada regra. Por exemplo, use este método se você souber os endereços IP de origem dos pacotes que você deseja descartar.

Pré-requisitos

  • O pacote xdp-tools está instalado.
  • Um driver de rede que suporta programas XDP.

Procedimento

  1. Carregar xdp-filter para processar os pacotes recebidos em uma determinada interface, como enp1s0:

    # xdp-filter load enp1s0

    Por padrão, xdp-filter usa a política allow, e a concessionária só deixa cair o tráfego que corresponde a qualquer regra.

    Opcionalmente, use o -f feature opção para ativar apenas características particulares, tais como tcp, ipv4, ou ethernet. O carregamento apenas das características exigidas em vez de todas elas aumenta a velocidade de processamento da embalagem. Para habilitar múltiplas características, separá-las com uma vírgula.

    Se o comando falhar com um erro, o driver da rede não suporta programas XDP.

  2. Acrescentar regras para deixar cair pacotes que correspondam a elas. Por exemplo:

    • Para deixar os pacotes recebidos na porta 22, entre:

      # xdp-filter port 22

      Este comando acrescenta uma regra que combina com o tráfego TCP e UDP. Para corresponder apenas a um determinado protocolo, use o -p protocol opção.

    • Para soltar os pacotes recebidos de 192.0.2.1, entre:

      # xdp-filter ip 192.0.2.1 -m src

      Note que xdp-filter não suporta faixas de IP.

    • Para soltar os pacotes recebidos do endereço MAC 00:53:00:AA:07:BE, entre:

      # xdp-filter ether 00:53:00:AA:07:BE -m src

Etapas de verificação

  • Use o seguinte comando para exibir estatísticas sobre pacotes descartados e permitidos:

    # xdp-filter status

Recursos adicionais

  • Para mais detalhes sobre xdp-filter, consulte a página de manual xdp-filter(8).
  • Se você é um desenvolvedor e está interessado no código de xdp-filter, baixe e instale o RPM (SRPM) de origem correspondente no Portal do Cliente da Red Hat.