Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)

Neste tutorial abordaremos a instalação e configuração do Elastic Stack 7.x, que será usado para alimentar a solução ElastiFlow.

Elastic Stack consiste no Elasticsearch, Logstash e Kibana.
Elasticsearch é um mecanismo de pesquisa baseado em texto completo.
Logstash é um mecanismo de coleta de dados e análise de log.
Kibana é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.
ElastiFlow fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX.

Painéis fornecidos através do ElastiFlow

Visão Global Overview

Top-N
Existem painéis Top-N separados para os principais locutores, serviços, conversas e aplicativos.

Ameaças Threats
O ElastiFlow inclui um dicionário de endereços IP públicos que são conhecidos por terem uma má reputação. Este dicionário é construído a partir de muitas fontes de dados OSINT, normalizadas para uma taxonomia comum. O painel de ameaças usa essas informações de reputação de IP para destacar três tipos de ameaça/risco.
1. Ameaças Públicas – Clientes públicos com baixa reputação de IP que estão atingindo endereços privados.
2. Servidores em Risco – Servidores Privados que estão sendo acessados ​​por clientes com baixa reputação de IP.
3. Clientes de alto risco – Clientes privados que acessam servidores públicos com baixa reputação.

Fluxos Flows
Existem painéis Sankey separados para as perspectivas Cliente/Servidor, Origem/Destino e Sistema Autônomo. As visualizações sankey são construídas usando o novo plugin de visualização Vega.

Geo IP
Existem painéis de Geo localização separados para as perspectivas Cliente/Servidor e Origem/Destino (Dados GeoLite2 criados pela MaxMind, disponíveis em http://www.maxmind.com)

Tráfego por AS AS Traffic
Fornece uma visão do tráfego para e de sistemas autônomos (intervalos de IP públicos)

Exportadores de Fluxo Flow Exporters

Detalhes do Trânsito Traffic Details

Registros de Fluxo Flow Records

Ziften ZFlow
O ElastiFlow adicionou suporte para registros IPFIX do agente ZFlow do ZFlow. Além de estar totalmente integrado aos painéis de controle padrão, os painéis ZFlow independentes exibem o tráfego de rede com base nos dados de usuário e de comando fornecidos pelo ZFlow.

Requisitos de Hardware.

Meus testes foram realizado em meu computador com VM no Virtualbox sendo 4 CPUs (i7) e 8GB de RAM

E o bixinho levou um pau!

Vou utilizar o Debian 10 instalado de forma “limpa”, sem nenhum outro pacote, para isso siga o tutorial:
Instalação Debian 10 Buster LIMPA Passo-a-passo

Com seu Debian 10 instalado acesse o mesmo e vire root!

Instale os pacotes básicos necessários

Recomendo a instalacao dos firmwares binário para vários drivers do kernel Linux, para isso adicione contrib non-free ao seu repositório.

Reinicie para que os novos módulos sejam carregado.

:: Elastic Stack 7 ::

Será necessário ter o Java instalado.

Adicione o repositório elastic.

Faremos a instalação individual dos pacotes elasticsearch, kibana e logstash. (Vale lembrar que eles demoram um pouco para serem instalado, na minha maquina virtual com um hardware 4 CPUs 8GB de RAM chegou a demorar mais de 10min para concluir a instalação de cada pacote)

:: Elasticsearch ::

Elasticsearch é um mecanismo de pesquisa baseado em texto completo.

Após instalação vamos alterar network.host para ouvir apenas localhost, em seguida ativar o serviço e inicia-lo.

Cheque se o mesmo esta funcionando

Retorno algo como….

:: kibana ::

Kibana é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.

Após instalação vamos alterar server.host, em seguida ativar o serviço e inicia-lo.

Aguarde um pouco o serviço iniciar e já será possível acessar Kibana em seu navegador:
http://[IP-SERVIDOR]:5601

:: logstash ::

O Logstash é um mecanismo de coleta de dados e análise de log.

Para aumentar o desempenho o ElastiFlow aproveita os recursos de cache e enfileiramento disponíveis em muitos dos plugins do Logstash. Esses recursos aumentam o consumo do heap da JVM. O espaço de heap da JVM usado pelo Logstash é configurado em jvm.options. Recomenda-se que o Logstash receba pelo menos 2GB de heap da JVM. Se todas as opções, incl. Pesquisas DNS estão habilitadas aumente para 4GB. Defina o tamanho de heap da JVM.

Altere de a cordo com a necessidades. No meu caso vou resolver nomes então vou usar 4gb

Instale e atualize os plugins necessários pelo Logstash. Para usar o ElastiFlow, você precisará instalar o codec sFlow suportado pela comunidade para o Logstash. Também é recomendável que você sempre use a versão mais recente do codec Netflow, a entrada UDP e o filtro DNS. Isso pode ser conseguido executando os seguintes comandos:

:: elastiflow ::

ElastiFlow fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX.

Adicione o pipeline ElastiFlow aos pipelines.yml

Adicione ao final:

Também defino ELASTIFLOW_RESOLVE_IP2HOST como true e defino meu servidor DNS em ELASTIFLOW_NAMESERVER para que os painéis tentem resolver os nomes DNS em vez de exibir apenas o endereço IP. Há um impacto no desempenho por isso será necessário ter RAM sobrando!
Neste exemplo vou aplicar a resolução de nomes.

Se desejar pode editar o arquivo /etc/systemd/system/logstash.service.d/elastiflow.conf
E alterar as opções conforme suas necessidades. Os dois comandos acima alteram:
ELASTIFLOW_RESOLVE_IP2HOST=true
ELASTIFLOW_NAMESERVER=1.1.1.1

Vamos configurar os arquivos init (system-install) em seguida ativar o serviço para inicialização e starta-lo.

Precisamos configurar os índices do elastiflow-*padrão, execute o seguinte comando:

O arquivo JSON contém a configuração do padrão de índice é kibana/elastiflow.index_pattern.json.

Faça donwload do elastiflow.kibana.7.0.x.json para seu PC:
https://raw.githubusercontent.com/robcowart/elastiflow/master/kibana/elastiflow.kibana.7.0.x.json

Para que os painéis possam ser carregados no Kibana, importando o elastiflow.kibana isso é feito a partir do menu Management -> Saved Objects. Abra o kibana




Configurações Avançadas Recomendadas do Kibana

Modificar algumas das configurações avançadas do Kibana produzirá uma experiência mais amigável ao usar o ElastiFlow. Essas configurações são feitas em Kibana, abaixo Management -> Advanced Settings.

doc_table:highlight

Há uma penalidade de desempenho de consulta muito grande que vem com o uso do recurso de destaque. Como não é muito útil para este caso de uso, é melhor simplesmente retirá-lo.

filters:pinnedByDefault

Fixar um filtro permitirá que ele persista quando você está mudando de dashbaords. Isso é muito útil ao detalhar algo interessante e você deseja alterar os painéis para uma perspectiva diferente dos mesmos dados. Este é o primeiro cenário que mudo sempre que estou trabalhando com o Kibana.

state:storeInSessionStorage

Os URLs do Kibana podem ficar muito grandes. Especialmente quando se trabalha com visualizações Vega. Isso provavelmente resultará em mensagens de erro para usuários do Internet Explorer. Usar o armazenamento na sessão corrigirá esse problema para esses usuários.

timepicker:quickRanges

As opções padrão no Seletor de Tempo são menos que ideais, para a maioria dos casos de uso de registro e monitoramento. Felizmente, o Kibana agora permite que você personalize o selecionador de tempo. Nossas configurações recomendadas podem ser encontradas abaixo.


timepicker:

Por padrão, os dados de fluxo serão recebidos nas portas padrão para cada tipo de fluxo. Você pode alterar os IPs e as portas usadas modificando as seguintes variáveis em /etc/systemd/system/logstash.service.d/elastiflow.conf.

Portas Padrões
Netflow – IPv4: 2055
Netflow – IPv6: 52055
sFlow – IPv4: 6343
sFlow – IPv6: 56343
IPFIX – IPv4: 4739
IPFIX – IPv6: 54739
Pode ser alterado

BÔNUS – Enviando dados do RouterOS/Mikrotik


Onde ether1 é a interface que vai ser monitorada, no meu caso estou coletando 4k, isso vai depender muito do hardware da sua máquina, e 200.200.200.200 seria o IP do nosso servidor.

Como não tem restrição ao acesso a porta 5601 é interessante você aplicar um firewall em seu servidor
Modelo simples e funcional de Firewall com iptables

Parabéns! Você concluiu! Gostou?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Fonte:
https://github.com/robcowart/elastiflow/blob/master/INSTALL.md
https://www.elastic.co/guide/en/kibana/current/deb.html

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

13 Resultados

  1. Otimo tutorial … parabens, todos os problemas que eu tive consegui solver com seus tutoriais continue assim … forte abraço …

    Uma duvida, para pegar os logs dos mk’s qual porta eu uso para cadastrar nos mikrotiks?

    Valeu

  2. gilmar disse:

    Adicionar um login e senha para o kibana não ficar acessível para qualquer um. como seria?

  3. Ciro Moniz disse:

    Bom dia,

    Excelente tutorial, ainda não finalizei, mas estou seguindo a risca e está indo sem problemas (como sempre).

    Estou fazendo em uma VM limitada com 2G de ram e percebi que consome muito recurso de hardware, neste caso (RAM).

    Minha dúvida é a seguinte … se eu rodar na nuvem (tbm uma VPS – uma máquina na OVH) daria pra coletar e monitorar dados de minha rede LAN ? dos meus roteadores mikrotik ?

    Acho que seria até mais indicado, pois na nuvem tenho melhor hardware, IP público etc

  4. Rafael disse:

    Após mais de ano tentando fazer o Elasticflow funcionar, finalmente um tutorial exequível! Excelente!
    Ótimo trabalho!

  5. Adeilton Junior disse:

    Cara. Te Amo!
    Show de Bola. Parabéns! Tutorial muito claro.
    Impossível não da da certo.

  6. Jean disse:

    EXcelente Tutorial neste caso tenho que configurar na minha borda ou posso usar no meu CORE? e a porta seria a porta de UPlink ou porta que sai para ElasticFlow?

  7. Max disse:

    Tutorial muito claro. Finalmente consegui fazer funcionar.
    Muito obrigado.

  8. Paulo Jr Andrade disse:

    Parabéns novamente Rudimar, excelente tutorial !!!
    E como fica com o Vyos ? sabes como proceder ???
    Grande abraço.

  9. Junior disse:

    Excelente tutorial como sempre, instalação ocorreu corretamente, só não entendi como adicionar no caso um mikrotik ao mesmo.
    Parabéns!!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *