One place for hosting & domains

      protocolo

      Como monitorar comunicados e rotas via protocolo BGP usando o BGPalerter no Ubuntu 18.04


      O autor selecionou a COVID-19 Relief Fund​​​​​ para receber uma doação como parte do programa Write for DOnations.

      Introdução

      O BGP (Border Gateway Protocol) é um dos protocolos mais importantes, responsável pelo roteamento de pacotes pela Internet. Assim, quando ele apresenta problemas, falhas significativas podem ocorrer. Por exemplo, em 2019, um pequeno ISP fez uma configuração de BGP erroneamente e isso, infelizmente, se propagou em ramificação ascendente e fez com que grandes porções do Cloudflare e AWS ficassem off-line por mais de uma hora. Além disso, um ano antes, um sequestro BGP foi executado para interceptar tráfego para um provedor de carteira de criptomoedas e roubar os fundos de clientes de clientes desavisados.

      O BGPalerter é um instrumento de monitoramento de rede BGP de código aberto que pode fornecer alertas em tempo real sobre a atividade BGP, incluindo a visibilidade de rota e novos comunicados de rota, bem como atividades potencialmente danosas, como o sequestro ou vazamento de rota. O BGPalerter absorve automaticamente informações de roteamento de rede disponíveis publicamente, o que significa que ele não precisa ter nenhum nível de acesso privilegiado ou integração na(s) rede(s) que você deseja monitorar.

      Nota: o BGPalerter absorve automaticamente informações de roteamento de rede disponíveis publicamente, o que significa que ele não precisa ter nenhum nível de acesso privilegiado ou integração na(s) rede(s) que você deseja monitorar. Todo o monitoramento está em total conformidade com a Lei de uso indevido de computadores, a Lei de fraude e abuso de computador, além de outras leis semelhantes. No entanto, é recomendável divulgar de maneira responsável quaisquer achados relevantes para o operador de rede afetado.

      Neste tutorial, você instalará e configurará o BGPalerter para monitorar suas redes importantes, buscando por qualquer atividade potencialmente suspeita.

      Pré-requisitos

      Para completar este tutorial, você precisará de:

      • Um servidor Ubuntu 18.04 configurado seguindo a Configuração inicial de servidor com o Ubuntu 18.04, incluindo um usuário sudo não raiz.

      • Um ou mais redes ou dispositivos que você deseja monitorar, como por exemplo:

        • Um servidor que você mantenha
        • A rede de sua empresa
        • Seu provedor de internet (ISP) local

      Para cada dispositivo ou rede, você precisará identificar o endereço IP individual, o intervalo de endereços IP, ou o número do sistema autônomo que esse item faz parte. O processo é abordado no Passo 1.

      Assim que tiver tudo pronto, faça login no seu servidor como usuário não raiz para começar.

      Passo 1 — Identificando as redes para monitorar

      Neste passo, você identificará os detalhes relevantes das redes que deseja monitorar.

      O BGPalerter pode monitorar com base em endereços IP individuais ou prefixes de rede. Ele também pode monitorar redes inteiras ba com base em seu número autônomo de sistema (AS, do inglês Autonomous System), que é um identificador global único para uma rede de propriedade de uma entidade administrativa em particular.

      Para encontrar essas informações, utilize o serviço de procura IP-to-ASN WHOIS fornecido pelo serviço de inteligência de ameaças Team Cymru. Ele é um servidor WHOIS personalizado, projetado para procurar endereços IP e informações de roteamento de rede.

      Caso ainda não tenha o whois instalado, instale-o usando os seguintes comandos:

      • sudo apt update
      • sudo apt install whois

      Assim que você tiver confirmado que o whois está instalado, comece o processo executando uma pesquisa pelo endereço IP do seu próprio servidor, usando o argumento -h para especificar um servidor personalizado:

      • whois -h whois.cymru.com your-ip-address

      Isso gerará um resultado parecido com este abaixo, que mostra o nome e o número AS do qual seu servidor faz parte. Geralmente, esse será o AS do seu provedor de hospedagem de servidor, como por exemplo, a DigitalOcean.

      Output

      AS | IP | AS Name 14061 | your-ip-address | DIGITALOCEAN-ASN, US

      Em seguida, execute uma pesquisa para identificar o prefixo/intervalo da rede de que seu servidor faz parte. Faça isso adicionando o argumento -p ao seu pedido:

      • whois -h whois.cymru.com " -p your-ip-address"

      O resultado será muito parecido com o comando anterior, mas agora exibirá o prefixo de endereço IP ao qual o endereço IP do seu servidor pertence:

      Output

      AS | IP | BGP Prefix | AS Name 14061 | your-ip-address | 157.230.80.0/20 | DIGITALOCEAN-ASN, US

      Por fim, você pode pesquisar mais detalhes do AS que seu servidor faz parte, incluindo a região geográfica e a data de alocação.

      Substitua o número AS acima por aquele que você identificou usando os comandos anteriores. Use o argumento -v para habilitar o resultado detalhado, que garante que todos os detalhes relevantes sejam mostrados:

      • whois -h whois.cymru.com " -v as14061"

      O resultado mostrará mais informações sobre o AS:

      Output

      AS | CC | Registry | Allocated | AS Name 14061 | US | arin | 2012-09-25 | DIGITALOCEAN-ASN, US

      Você identificou detalhes fundamentais sobre a(s) rede(s) que deseja monitorar. Anote esses detalhes em algum lugar, pois você precisará deles mais tarde. Em seguida, você iniciará a configuração do BGPalerter.

      Passo 2 — Criando um usuário não privilegiado para o BGPalerter

      Neste passo, você criará uma nova conta de usuário não privilegiado para o BGPalerter, pois o programa não precisa ser executado com privilégios sudo/raiz.

      Primeiro, crie um novo usuário com uma senha desativada:

      • sudo adduser --disabled-password bgpalerter

      Você não precisa configurar uma senha ou chaves SSH, pois usará esse usuário apenas como uma conta de serviço para executar/manter o BGPalerter.

      Faça login no novo usuário usando su:

      Agora, você estará logado com o novo usuário:

      bgpalerter@droplet:/home/user$
      

      Use o comando cd para ir para o diretório home do seu novo usuário:

      bgpalerter@droplet:/home/user$ cd
      bgpalerter@droplet:~$
      

      Você criou um novo usuário não privilegiado para o BGPalerter. Em seguida, instalará e configurará o BGPalerter em seu sistema.

      Passo 3 — Instalando e configurando o BGPalerter

      Neste passo, você instalará e configurará o BGPalerter. Certifique-se de que você ainda esteja logado com seu novo usuário sem privilégios.

      Primeiro, você precisa identificar a versão mais recente do BGPalerter, para garantir que você baixe a versão mais atual. Navegue até a página das Versões do BGPalerter e pegue uma cópia do link de download da versão mais recente para o Linux x64.

      Agora, baixe uma cópia do BGPalerter usando o wget, certificando-se de colocar o link de download correto:

      • wget https://github.com/nttgin/BGPalerter/releases/download/v1.24.0/bgpalerter-linux-x64

      Assim que o arquivo terminar de ser baixado, marque-o como executável:

      • chmod +x bgpalerter-linux-x64

      Em seguida, verifique se o BGPalerter foi baixado e instalado com sucesso verificando o número da versão:

      • ./bgpalerter-linux-x64 --version

      Isso gerará como saída o número da versão atual:

      Output

      1.24.0

      Antes de executar o BGPalerter corretamente, você precisará definir as redes que você deseja monitorar dentro de um arquivo de configuração. Crie e abra o arquivo prefixes.yml em seu editor de texto favorito:

      Neste arquivo de configuração, você especificará cada um dos endereços IP individuais, intervalos de endereços IP e números AS que você deseja monitorar.

      Adicione o exemplo a seguir e ajuste os valores de configuração conforme necessário. Faça isso utilizando as informações de rede que você identificou no Passo 1:

      ~/prefixes.yml

      your-ip-address/32:
        description: My Server
        asn:
          - 14061
        ignoreMorespecifics: false
      
      157.230.80.0/20:
        description: IP range for my Server
        asn:
          - 14061
        ignoreMorespecifics: false
      
      options:
        monitorASns:
          '14061':
            group: default
      

      Você pode monitorar quantos intervalos de endereços IP ou números AS quiser. Para monitorar endereços IP individuais, represente-os usando /32 para IPv4, e /128 para IPv6.

      O valor ignoreMorespecifics é usado para controlar se o BGPalerter deve ignorar a atividade para rotas mais específicas (menores) do que as que você está monitorando. Por exemplo, se você estiver monitorando uma /20 e uma alteração de roteamento for detectada para uma /24 dentro dela, isso é considerado como sendo mais específico. Na maioria dos casos, não ignore esses dados. No entanto, se você estiver monitorando uma rede grande com vários prefixos do clientes delegados, isso pode ajudar a reduzir o ruído de fundo.

      Agora, execute o BGPalerter pela primeira vez para começar a monitorar suas redes:

      Se o BGPalerter for iniciado com sucesso, você verá um resultado parecido com este: Observe que pode levar alguns minutos para que o monitoramento comece:

      Output

      Impossible to load config.yml. A default configuration file has been generated. BGPalerter, version: 1.24.0 environment: production Loaded config: /home/bgpalerter/config.yml Monitoring 157.230.80.0/20 Monitoring your-ip-address/32 Monitoring AS 14061

      O BGPalerter continuará sendo executado até que você interrompa-o usando Ctrl+C.

      No próximo passo, você interpretará alguns dos alertas que o BGPalerter pode gerar.

      Passo 4 — Interpretando os alertas do BGPalerter

      Neste passo, você revisará alguns exemplos de alerta do BGPalerter. O BGPalerter gerará alertas no feed de resultados principal e, de maneira opcional, para qualquer ponto de extremidade de relatório adicional que possa ser configurado dentro do config.yml, como descrito na documentação do BGPalerter.

      Por padrão, o BGPalerter monitora e alerta sobre o seguinte:

      • Sequestro de rota: ocorre quando um AS anuncia um prefixo no qual ele não é permitido, fazendo com que o tráfego seja direcionado incorretamente. Ele pode ser um ataque deliberado, ou um erro acidental de configuração.

      • Perda de visibilidade de rota: uma rota é considerada visível quando a maioria dos roteadores BGP na Internet é capaz de roteá-la com segurança. A perda de visibilidade diz respeito à sua rede estar possivelmente indisponível, como, por exemplo, se o peering de BGP tenha parado de funcionar.

      • Novos comunicados sub-prefixo: é quando um AS começa a anunciar um prefixo que é menor que o esperado. Isso pode indicar uma alteração de configuração prevista, uma configuração acidental, ou, em alguns casos, um ataque.

      • Atividade dentro do seu AS: geralmente diz respeito a novos comunicados de rota. Uma rota é considerada “nova” se o BGPalerter ainda não sabe nada sobre ela.

      Em seguida, há alguns exemplos de alerta, junto com uma descrição curta do seu significado:

      Alert #1

      The prefix 203.0.113.0/24 is announced by AS64496 instead of AS65540
      

      Este alerta mostra evidências de um sequestro de rota, onde o AS64496 anunciou 203.0.113.0/24, quando na verdade espera-se que essa rota seja anunciada pelo AS65540. Isso é um indicador forte de que existe uma configuração errada levando a um vazamento de rota, ou de um sequestro deliberado por um agressor.

      Alert #2

      The prefix 203.0.113.0/24 has been withdrawn. It is no longer visible from 6 peers
      

      Este alerta mostra que a rede 203.0.113.0/24 não está mais visível. Isso pode ser devido a um problema de roteamento de ramificação ascendente, ou por um roteador ter sofrido uma falha de energia.

      Alert #3

      A new prefix 203.0.113.0/25 is announced by AS64496. It should be instead 203.0.113.0/24 announced by AS64496
      

      Este alerta mostra que um prefixo mais específico foi anunciado onde ele não está previsto. Por exemplo, anunciar um /25 quando apenas um /24 é esperado. É bastante provável que isso seja um erro de configuração. No entanto, em alguns casos, pode ser uma evidência de um sequestro de rota.

      Alert #4

      AS64496 is announcing 192.0.2.0/24 but this prefix is not in the configured list of announced prefixes
      

      Por fim, esse alerta mostra que o AS64496 anunciou um prefixo sobre o qual o BGPalerter ainda não sabe. Isso pode ser porque você está anunciando legitimamente um novo prefixo, ou pode ser um indicativo de uma configuração errada que está fazendo com que você anuncie um prefixo de propriedade de outra pessoa acidentalmente.

      Neste passo, você revisou alguns exemplos de alertas do BGPalerter. Em seguida, você configurará o BGPalerter para ser executado automaticamente na inicialização do sistema.

      Passo 5 — Iniciando o BGPalerter na inicialização do sistema

      Neste passo final, você configurará o BGPalerter para ser executado na inicialização.

      Certifique-se de que você ainda está logado com seu novo usuário não privilegiado e abra o editor crontab:

      Em seguida, adicione a seguinte linha ao final do arquivo crontab:

      crontab

      @reboot sleep 10; screen -dmS bgpalerter "./bgpalerter-linux-x64"
      

      Toda vez que seu sistema for inicializado, isso criará uma sessão screen (de tela) separada chamada ‘bgpalerter’, e iniciará o BGPalerter dentro dela.

      Salve e saia do editor crontab. Agora, você pode querer reinicializar seu sistema para garantir que o BGPalerter seja iniciado corretamente na inicialização.

      Primeiro, você precisará desconectar-se do seu usuário do BGPalerter:

      Em seguida, prossiga com uma reinicialização normal do sistema:normal

      Assim que seu sistema for reinicializado, faça login novamente no seu servidor e use o su para acessar seu usuário do BGPalerter novamente:

      Em seguida, você pode anexar-se à sessão a qualquer momento para visualizar o resultado do BGPalerter:

      Neste passo final, você configurou o BGPalerter para ser executado na inicialização.

      Conclusão

      Neste artigo, você configurou o BGPalerter e o usou para monitorar redes para mudanças de roteamento BGP.

      Se quiser tornar o BGPalerter mais fácil de usar, você pode configurá-lo para enviar alertas para um canal Slack através de um webhook:

      Se quiser aprender mais sobre o BGP em si, mas não tem acesso a um ambiente de produção BGP, você pode apreciar utilizar o DN42 para testar o BGP em um ambiente seguro e isolado:



      Source link