Restrição de acesso TCP para BGP

Entender as opções de segurança para BGP com TCP

Entre os protocolos de roteamento, o BGP é o único a usar o TCP como seu protocolo de transporte. Os peers BGP são estabelecidos por configuração manual entre dispositivos de roteamento para criar uma sessão TCP na porta 179. Um dispositivo habilitado para BGP envia periodicamente mensagens keepalive para manter a conexão.

Com o tempo, o BGP se tornou o protocolo de roteamento entre domínios dominante na Internet. No entanto, tem garantias limitadas de estabilidade e segurança. A configuração de opções de segurança para BGP deve equilibrar medidas de segurança adequadas com custos aceitáveis. Nenhum método emergiu como superior a outros métodos. Cada administrador de rede deve configurar medidas de segurança que atendam às necessidades da rede que está sendo usada.

Para obter informações detalhadas sobre os problemas de segurança associados ao uso do TCP pelo BGP como protocolo de transporte, consulte RFC 4272, Análise de vulnerabilidades de segurança do BGP.

Exemplo: configurar um filtro para bloquear o acesso TCP a uma porta, exceto de pares BGP especificados

Este exemplo mostra como configurar um filtro de firewall sem estado padrão que bloqueia todas as tentativas de conexão TCP para a porta 179 de todos os solicitantes, exceto de pares BGP especificados.

Requerimentos

Nenhuma configuração especial além da inicialização do dispositivo é necessária antes de configurar este exemplo.

Visão geral

Neste exemplo, você cria um filtro de firewall sem estado que bloqueia todas as tentativas de conexão TCP para a porta 179 de todos os solicitantes, exceto os pares BGP especificados.

O filtro de firewall stateless filter_bgp179 combina todos os pacotes das interfaces conectadas diretamente no Dispositivo A e no Dispositivo B com o número de porta de destino 179.

Topologia

A Figura 1 mostra a topologia usada neste exemplo. O dispositivo C tenta fazer uma conexão TCP com o dispositivo E. O dispositivo E bloqueia a tentativa de conexão. Este exemplo mostra a configuração no Dispositivo E.

Figura 1: Rede típica com sessões Typical Network with BGP Peer Sessions de peer BGP

Configuração

Configuração rápida da CLI

Para configurar rapidamente este exemplo, copie os seguintes comandos, cole-os em um arquivo de texto, remova quaisquer quebras de linha, altere todos os detalhes necessários para corresponder à sua configuração de rede e, em seguida, copie e cole os comandos na CLI no nível de [ edit] hierarquia.

Dispositivo C

Dispositivo E

Configurando o dispositivo E

Procedimento passo a passo

O exemplo a seguir requer que você navegue por vários níveis na hierarquia de configuração. Para obter informações sobre como navegar na CLI, consulte Uso do Editor de CLI no Modo de Configuração no Guia do Usuário da CLI do Junos OS.

Para configurar o Dispositivo E com um filtro de firewall stateless que bloqueia todas as tentativas de conexão TCP para a porta 179 de todos os solicitantes, exceto peers BGP especificados:

  1. Configure as interfaces.

  2. Configure BGP.

  3. Configure o número do sistema autônomo.

  4. Defina o termo de filtro que aceita tentativas de conexão TCP para a porta 179 dos pares BGP especificados.

  5. Defina o outro termo de filtro para rejeitar pacotes de outras fontes.

  6. Aplique o filtro de firewall à interface de loopback.

Resultados

No modo de configuração, confirme sua configuração entrando nos comandos show firewall, show interfaces, show protocols e show routing-options . Se a saída não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.

Se você terminar de configurar o dispositivo, entre no commit do modo de configuração.

Verificação

Confirme se a configuração está funcionando corretamente.

Verificando se o filtro está configurado

Finalidade

Certifique-se de que o filtro esteja listado na saída do show firewall filter comando.

Ação

Verificando as conexões TCP

Finalidade

Verifique as conexões TCP.

Ação

Do modo operacional, execute o comando no Dispositivo C e no show system connections extensive Dispositivo E.

A saída no Dispositivo C mostra a tentativa de estabelecer uma conexão TCP. A saída no Dispositivo E mostra que as conexões são estabelecidas apenas com o Dispositivo A e o Dispositivo B.

Monitoramento do tráfego nas interfaces

Finalidade

Use o comando monitor traffic para comparar o tráfego em uma interface que estabelece uma conexão TCP com o tráfego em uma interface que não estabelece uma conexão TCP.

Ação

Do modo operacional, execute o comando monitor traffic na interface do Dispositivo E para o Dispositivo B e na interface do Dispositivo E para o Dispositivo C. A saída de exemplo a seguir verifica se, no primeiro exemplo, as mensagens de confirmação (ack) são recebidas. No segundo exemplo, as mensagens de confirmação não são recebidas.

Exemplo: configurar um filtro para limitar o acesso TCP a uma porta com base em uma lista de prefixos

Este exemplo mostra como configurar um filtro de firewall stateless padrão que limita determinado tráfego TCP e Internet Control Message Protocol (ICMP) destinado ao Mecanismo de Roteamento, especificando uma lista de fontes de prefixo que contêm peers BGP permitidos.

Requerimentos

Nenhuma configuração especial além da inicialização do dispositivo é necessária antes de configurar este exemplo.

Visão geral

Neste exemplo, você cria um filtro de firewall sem estado que bloqueia todas as tentativas de conexão TCP para a porta 179 de todos os solicitantes, exceto os pares BGP que têm um prefixo especificado.

Topologia

É criada uma lista de prefixos de origem, plist_bgp179, que especifica a lista de prefixos de origem que contêm pares de BGP permitidos.

O filtro de firewall stateless filter_bgp179 combina todos os pacotes da lista de prefixos de origem plist_bgp179 com o número de porta de destino 179.

Configuração

Configuração rápida da CLI

Para configurar rapidamente este exemplo, copie os seguintes comandos, cole-os em um arquivo de texto, remova quaisquer quebras de linha, altere todos os detalhes necessários para corresponder à sua configuração de rede e, em seguida, copie e cole os comandos na CLI no nível de [ edit] hierarquia.

Configurar o filtro

Procedimento passo a passo

O exemplo a seguir requer que você navegue por vários níveis na hierarquia de configuração. Para obter informações sobre como navegar na CLI, consulte Uso do Editor de CLI no Modo de Configuração no Guia do Usuário da CLI do Junos OS.

Para configurar o filtro:

  1. Expanda a lista de prefixos bgp179 para incluir todos os prefixos apontados pelo grupo peer BGP definido pelos protocolos bgp group <*> vizinho <*>.

  2. Defina o termo de filtro que rejeita tentativas de conexão TCP para a porta 179 de todos os solicitantes, exceto os pares BGP especificados.

  3. Defina o outro termo de filtro para aceitar todos os pacotes.

  4. Aplique o filtro de firewall à interface de loopback.

Resultados

No modo de configuração, confirme sua configuração entrando nos comandos show firewall, show interfaces e show policy-options . Se a saída não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.

Se você terminar de configurar o dispositivo, entre no commit do modo de configuração.

Verificação

Confirme se a configuração está funcionando corretamente.

Exibindo o filtro de firewall aplicado à interface de loopback

Finalidade

Verifique se a filter_bgp179 de filtro de firewall está aplicada ao tráfego de entrada IPv4 na interface lógica lo0.0.

Ação

Use o comando para a show interfaces statistics operational mode interface lógica lo0.0 e inclua a opção detail . Protocol inet Na seção de saída do comando, o Input Filters campo exibe o nome do filtro de firewall stateless aplicado à interface lógica na direção de entrada.

Exemplo: limitando o tamanho do segmento TCP para BGP

Este exemplo mostra como evitar problemas de vulnerabilidade do ICMP (Internet Control Message Protocol) limitando o tamanho do segmento TCP quando você estiver usando a descoberta da unidade de transmissão máxima (MTU). Usar a descoberta de MTU em caminhos TCP é um método para evitar a fragmentação de pacotes BGP.

Requerimentos

Nenhuma configuração especial além da inicialização do dispositivo é necessária antes de configurar este exemplo.

Visão geral

O TCP negocia um valor de tamanho máximo de segmento (MSS) durante o estabelecimento da conexão de sessão entre dois pares. O valor de MSS negociado é baseado principalmente na unidade máxima de transmissão (MTU) das interfaces às quais os peers de comunicação estão diretamente conectados. No entanto, devido a variações na MTU do link no caminho percorrido pelos pacotes TCP, alguns pacotes na rede que estão bem dentro do valor do MSS podem ser fragmentados quando o tamanho do pacote excede a MTU do link.

Para configurar o valor TCP MSS, inclua a tcp-mss declaração com um tamanho de segmento de 1 a 4096.

Se o roteador receber um pacote TCP com o bit SYN e o conjunto de opções MSS, e a opção MSS especificada no pacote for maior que o tcp-mss valor MSS especificado pela instrução, o roteador substituirá o valor MSS no pacote pelo valor mais baixo especificado pela tcp-mss instrução.

O valor de MSS configurado é usado como o tamanho máximo do segmento para o remetente. A suposição é que o valor TCP MSS usado pelo remetente para se comunicar com o vizinho BGP é o mesmo que o valor TCP MSS que o remetente pode aceitar do vizinho BGP. Se o valor de MSS do vizinho BGP for menor que o valor de MSS configurado, o valor de MSS do vizinho de BGP será usado como o tamanho máximo do segmento para o remetente.

Para vizinhos indiretos sem a mtu-discovery instrução, o valor MSS padrão é 512. Para obter mais informações sobre mtu-discovery a instrução, consulte https://www.juniper.net/documentation/us/en/software/junos/cli-reference/topics/ref/statement/mtu-discovery-edit-protocols-bgp.html#id-13368402__d674375e146.

Esse recurso é compatível com TCP sobre IPv4 e TCP sobre IPv6.

Diagrama de topologia

A Figura 2 mostra a topologia usada neste exemplo.

Figura 2: Tamanho máximo do segmento TCP para BGP Network topology with routers R0 to R3 in sequence shows BGP session. MSS is 2000 at both ends. 2000 and 1000 likely indicate link MTU.

Configuração

Configuração rápida da CLI

Para configurar rapidamente este exemplo, copie os comandos a seguir, cole-os em um arquivo de texto, remova as quebras de linha, altere os detalhes necessários para corresponder à configuração de rede e, em seguida, copie e cole os comandos na CLI no nível de [edit] hierarquia.

R0

Tramitação processual

Procedimento passo a passo

O exemplo a seguir requer que você navegue por vários níveis na hierarquia de configuração. Para obter informações sobre como navegar na CLI, consulte Uso do Editor de CLI no Modo de Configuração no Guia do Usuário da CLI do Junos OS.

Para configurar o Roteador R0:

  1. Configure as interfaces.

  2. Configure um protocolo de gateway interior (IGP), OSPF neste exemplo.

  3. Configure um ou mais grupos BGP.

  4. Configure a descoberta de MTU para evitar a fragmentação de pacotes.

  5. Configure os vizinhos BGP, com o TCP MSS definido globalmente para o grupo ou especificamente para os vários vizinhos.

    Observação:

    A configuração de vizinho TCP MSS substitui a configuração de grupo.

  6. Configure o sistema autônomo local.

Resultados

No modo de configuração, confirme sua configuração inserindo os show interfacescomandos , show protocolse show routing-options . Se a saída não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.

Se você terminar de configurar o dispositivo, entre no commit modo de configuração.

Verificação

Para confirmar se a configuração está funcionando corretamente, execute os seguintes comandos:

  • show system connections extensive | find <neighbor-address>, para verificar o valor TCP MSS negociado.

  • monitor traffic interface, para monitorar o tráfego BGP e garantir que o valor TCP MSS configurado seja usado como a opção MSS no pacote TCP SYN.

Solução de problemas

Cálculo de MSS com descoberta de MTU

Problema

Considere um exemplo em que dois dispositivos de roteamento (R1 e R2) têm uma conexão BGP (IBGP) interna. Em ambos os roteadores, as interfaces conectadas têm 4034 como a MTU IPv4.

Na captura de pacotes a seguir no dispositivo R1, o MSS negociado é 3994. Nas show system connections extensive informações para MSS, é definido como 2048.

Solução

Esse é o comportamento esperado com o Junos OS. O valor de MSS é igual ao valor de MTU menos os cabeçalhos IP ou IPv6 e TCP. Isso significa que o valor do MSS geralmente é 40 bytes menor que a MTU (para IPv4) e 60 bytes menor que a MTU (para IPv6). Esse valor é negociado entre os pares. Neste exemplo, é 4034 - 40 = 3994. O Junos OS então arredonda esse valor para um múltiplo de 2 KB. O valor é 3994 / 2048 * 2048=2048. Portanto, não é necessário ver o show system connections mesmo valor de MSS na saída.

3994 / 2048 = 1,95

1,95 é arredondado para 1.

1 * 2048 = 2048