Visão Geral:

O BGP FlowSpec (Border Gateway Protocol Flow Specification) é uma extensão do protocolo BGP usado para definir regras de filtragem de tráfego em roteadores. Ao contrário do BGP convencional, que roteia com base em informações de IPv4/IPv6 e prefixo, o BGP FlowSpec permite que os administradores de rede especifiquem critérios mais granulares para o encaminhamento de pacotes, incluindo informações sobre camada 4 (portas TCP/UDP) e até mesmo padrões de pacotes.

O Flowspec simplificando permite aos administradores da rede criar regras de firewall dinamicamente através de anúncios BGP, podendo utilizar critérios de camada 4 como protocolo e portas de aplicação e aplicar ações que seja de descartar o tráfego ou somente aplicar um controle de banda.

Se você quiser saber mais sobre o funcionamento do FlowSpec confira esse artigo explicando o que é Flowspec

Funcionamento:

O BGP FlowSpec funciona adicionando novos tipos de atributos ao BGP, permitindo aos administradores de rede especificar regras de filtragem (ou de firewall dinamico) detalhadas. Essas regras podem incluir critérios como:

  • Endereços IPv4/IPv6 de origem e destino
  • Portas TCP/UDP
  • ICMP Type
  • Protocolos
  • Máscaras de bits
  • Valores de campo de pacotes

As seguintes ações podem ser tomadas com o BGP FlowSpec:

  • deny: Bloqueia o tráfego correspondente à regra.
  • rate-limit: Limita a taxa de tráfego correspondente à regra.
  • redirect: Redireciona o tráfego correspondente à regra.
  • sample: Cria amostras do tráfego correspondente à regra.
  • mark: Marca pacotes correspondentes à regra com uma marca específica.
  • redirect-to-ip: Redireciona o tráfego correspondente à regra para um endereço IP específico.
  • traffic-rate: Limita a taxa de tráfego correspondente à regra para um valor específico.
  • traffic-action: Define ação para o tráfego correspondente, como aceitar, descartar ou encaminhar.
  • redirect-to-blackhole: Descarta silenciosamente todo o tráfego correspondente à regra.

Quando essas regras são propagadas através da rede BGP, os roteadores podem usar essas informações para filtrar ou manipular o tráfego de acordo com as políticas definidas.,

Funcionamento – Mais Detalhes:

No contexto do BGP FlowSpec, as ações são especificadas como parte das regras de filtro. Cada regra de filtro contém três partes principais:

  • Campos de Correspondência (Matching Fields): Especificam os critérios de correspondência, como endereços IPv4/IPv6 de origem e destino, portas TCP/UDP, protocolos, Tipo de ICMP, máscaras de bits e valores de campo de pacotes.
  • Campos de Ação (Action Fields): Especificam as ações a serem tomadas para o tráfego que corresponde à regra.
  • Campos de Protocolo (Protocol Fields): Especificam o protocolo que a regra de filtro deve aplicar.

As ações no BGP FlowSpec são codificadas usando comunidades BGP. Cada ação é mapeada para uma comunidade BGP específica:

  • A ação deny (bloquear) pode ser representada por uma comunidade BGP específica, como 65535:666.
  • A ação rate-limit (limitar taxa) pode ser representada por outra comunidade BGP específica, como 65535:777.
  • A ação redirect (redirecionar) pode ser representada por uma comunidade BGP diferente, como 65535:888.

Ao criar uma regra BGP FlowSpec, você especifica os campos de correspondência, a ação desejada e, opcionalmente, campos de protocolo. Esta regra é então codificada como uma comunidade BGP e incluída em uma mensagem de atualização BGP que é enviada para os roteadores vizinhos. Os roteadores que recebem essa regra aplicam as ações especificadas aos pacotes que correspondem aos critérios de correspondência.

Por favor, note que as comunidades BGP específicas para cada ação podem variar de acordo com a implementação do BGP FlowSpec em seu roteador. Recomendo consultar a documentação do seu equipamento para obter informações detalhadas sobre as comunidades BGP associadas a cada ação no BGP FlowSpec.

Casos de Uso:

  1. Mitigação de Ataques DDoS:

O BGP FlowSpec pode ser utilizado para bloquear ou redirecionar tráfego malicioso durante ataques de negação de serviço distribuídos (DDoS). As regras precisas podem ser aplicadas para filtrar o tráfego indesejado e manter os serviços online.

  1. Políticas de QoS (Qualidade de Serviço):

Administradores de rede podem utilizar o BGP FlowSpec para garantir a qualidade de serviço, priorizando determinados tipos de tráfego com base em portas ou protocolos específicos.

  1. Implementação de Políticas de Segurança:

O BGP FlowSpec pode ser usado para implementar políticas de segurança granulares, bloqueando tráfego associado a malware ou atividades suspeitas.

Exemplos de Configuração:

Agora que você já sabe o que é FlowSpec e o que ele pode fazer, vamos demonstrar como configurar o FlowSpec em Roteadores Huawei, essa configuração vale para os Roteadores Huawei NE20, Huawei NE40, Huawei NE8000-M4, Huawei NE8000-M8, Huawei NE8000-M12, Huawei NE8000-F1A ou qualquer Huawei que utilize o sistema Operacional VRP da Huawei.

Exemplo de configuração da especificação de fluxo BGP dinâmico:

Se as características do tráfego de ataque DoS ou DDoS forem desconhecidas, um servidor de análise de tráfego, como o Made4Flow com Anti-DDoS, pode ajudar a implementar a especificação de fluxo BGP para garantir a segurança da rede.

#Requisitos de rede:

Conforme mostrado na Topologia abaixo, o Dispositivo A pertence ao AS 100, enquanto o Dispositivo B, o Dispositivo C e o Servidor pertencem ao AS 200. O Dispositivo B é uma entrada do AS 200. O AS 200 se comunica com o AS 100 através do Dispositivo B.

A origem do ataque no AS 100 pode fluir para o AS 200 através do Dispositivo B, representando uma ameaça ao AS 200. Nessa situação, configure a especificação de fluxo BGP dinâmica para garantir a segurança da rede. O processo de operação é o seguinte:

  • Implante um servidor de análise de tráfego como o Made4Flow com Anti-DDoS;
  • e estabeleça uma sessão BGP de FlowSpec entre o Servidor de Análise de Tráfego Made4Flow e o dispositivo B.
  • O dispositivo B coleta amostras de tráfego periodicamente e envia a amostra de tráfego para o Made4Flow.
  • O Made4Flow gera uma rota BGP de FlowSpec com base nas características do tráfego de ataque amostrado;
  • e envia a rota para o dispositivo B.
  • O dispositivo B converte a rota em uma política de tráfego (como uma regra de firewall) para filtrar e controlar o tráfego de ataque, garantindo a transição adequada dos serviços no AS 200.

Observação: As interfaces 1 a 3 neste exemplo representam GE 1/0/0, GE 2/0/0 e GE 3/0/0, respectivamente.

O roteiro de configuração segue o seguinte fluxo:

  • Configure um endereço IP para cada interface.
  • Estabeleça uma sessão BGP FlowSpec entre o dispositivo B e o Made4Flow para permitir que as rotas de BGP FlowSpec geradas sejam enviadas ao dispositivo B. Em seguida, uma política de tráfego é gerada.

Preparação de dados:

Para concluir a configuração, você precisa dos seguintes dados:

  • ID do roteador do dispositivo A (1.1.1.1) e ID do roteador do dispositivo B (2.2.2.2).
  • Número AS do Dispositivo A (100) e Número AS do Dispositivo B, Dispositivo C e Made4Flow (Servidor) (200).

Procedimento:

  • Configure um endereço IP para cada interface.
  • Para configurações detalhadas, consulte os arquivos de configuração neste exemplo (abaixo).
  • Configure um peer de BGP Flowspec e desabilite a autenticação de rota.

Vamos demonstrar os comandos utilizados, em nosso laboratorio estsamos utilizando um simulador como o PNETLAB/EVE-NG.

#Configure o dispositivo B:

[~DeviceB] bgp 200 
[*DeviceB-bgp] peer 10.2.1.2 as-number 200 
[*DeviceB-bgp] ipv4-family flow 
[*DeviceB-bgp-af-ipv4-flow] peer 10.2.1.2 enable 
[*DeviceB-bgp-af-ipv4-flow] peer 10.2.1.2 validation-disable 
[*DeviceB-bgp-af-ipv4-flow] commit 
[~DeviceB-bgp-af-ipv4-flow] quit 
[~DeviceB-bgp] quit 

#Verifique o status da conexão de peer da sessão de FlowSpec no dispositivo B, se caso a sessão tenha o status “Established” a sessão está correta e funcional.

<DeviceB> display bgp flow peer 
BGP local router ID : 2.2.2.2 
Local AS number : 200 

Total number of peers : 1                 Peers in established state : 1 

  Peer       V       AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv 

  10.2.1.2   4      200        9       10     0 00:00:35 Established        1 

#Verifique as rotas recebidas via BGP Flowspec pelo dispositivo B:

<DeviceB> display bgp flow routing-table 
BGP Local router ID is 2.2.2.2 
Status codes: * - valid, > - best, d - damped, x - best external, a - add path, 
               h - history,  i - internal, s - suppressed, S - Stale 
               Origin : i - IGP, e - EGP, ? - incomplete 
RPKI validation codes: V - valid, I - invalid, N - not-found 
Total Number of Routes: 1 
* >  ReIndex : 97 
      Dissemination Rules: 
       FragmentType   : match (Don't fragment) 
       MED      : 0                   PrefVal  : 0 
       LocalPref: 100 
       Path/Ogn :  i

#Verifique a política de tráfego (Regra de firewall dinamica) em cada rota de BGP Flowspec com base no ReIndex mostrado na saída anterior:

<DeviceB> display bgp flow routing-table 97 

BGP local router ID : 2.2.2.2 

Local AS number : 200 

ReIndex : 97 

Order   : 2147483647 

Dissemination Rules : 

   FragmentType   : match (Don't fragment) 



BGP flow-ipv4 routing table entry information of 97: 

Match action : 

   apply deny 

From: 10.2.1.2 (10.2.1.2) 

Route Duration: 0d00h02m26s 

AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, internal, pre 255 

Not advertised to any peers yet

Arquivos de configuração completos do cenário:

Arquivo de configuração do dispositivo A:

# 

sysname DeviceA 

# 

interface GigabitEthernet0/1/0 

undo shutdown 

ip address 10.10.1.1 255.255.255.0 

# 

bgp 100 

peer 10.10.1.2 as-number 200 

# 

ipv4-family unicast 

  undo synchronization  

  peer 10.10.1.2 enable 

# 

return 

Arquivo de configuração do dispositivo B:

# 

sysname DeviceB 

# 

interface GigabitEthernet0/1/0 

undo shutdown 

ip address 10.10.1.2 255.255.255.0 

# 

interface GigabitEthernet0/2/0 

undo shutdown 

ip address 10.2.1.1 255.255.255.0 

# 

interface GigabitEthernet0/3/0 

undo shutdown 

ip address 10.1.1.1 255.255.255.0 

# 

interface LoopBack1 

ip address 2.2.2.2 255.255.255.255 

# 

bgp 200 

peer 10.2.1.2 as-number 200 

peer 10.10.1.1 as-number 100 

# 

ipv4-family unicast 

  undo synchronization  

  peer 10.2.1.2 enable  

  peer 10.10.1.1 enable 

# 

ipv4-family flow 

  peer 10.2.1.2 enable 

  peer 10.2.1.2 validation-disable 

# 

return 

- - - 

Abaixo mais um exemplo básico de uma regra BGP FlowSpec para bloquear tráfego de uma determinada porta:

Validar rotas BGP Flowspec recebidas:

display bgp flow routing-table 

Validar detalhes da rota recebida:

display bgp flow routing-table 532481 

Para checar se as rotas BGP Flowspec estão sendo efetivas, você pode usar os comandos abaixo:

Validar estatísticas da rota:

display flowspec statistics $REINDEX 
system-view 
diagnose 
display fe slot 9 fe-id 0 table flowspec action $REINDEX 

Mais comandos para validações:

system-view 
diagnose 
display fe slot 9 fe-id 1 table flowspec action $REINDEX 
display fe slot 9 fe-id 1 table flowspec relation $REINDEX 
display fe slot 9 fe-id 1 table flowspec rule $REINDEX 

Exemplo de rota Flowspec com rate-limit:

RFCs:

Para informações detalhadas sobre BGP FlowSpec, consulte as seguintes RFCs:

  • RFC Editor
    O RFC Editor é o recurso oficial para as RFCs (Request for Comments) que definem os padrões da Internet, incluindo o BGP FlowSpec.
  • RFC 8955: Dissemination of Flow Specification Rules
    Esta RFC descreve as regras de especificação de fluxo no contexto do BGP FlowSpec.
  • RFC 8956: Dissemination of Flow Specification Rules for IPv6
    Esta RFC estende o suporte do BGP FlowSpec para o IPv6, permitindo a especificação de regras de fluxo para tráfego IPv6.

Certifique-se de consultar estas RFCs para obter informações detalhadas sobre o BGP FlowSpec e suas extensões.


Voce sabia que agora o Made4Flow possui BGP Flowspec automatizado em suas configurações e você pode proteger sua rede e seus clientes usando esta tecnologia?

Você pode automatizar os anuncios BGP FlowSpec de discard, rate limit e com as regras flexíveis.