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:
- 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.
- 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.
- 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.