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.

Aparentemente na ultima versão 7.4.x a “coisa” não parece funcionar corretamente, então vou deixar como opção a instalação da v.7.3.x

Adicione o repositório elastic. (Para versão 7.3 não é necessário adicionar repositório)

Faremos a instalação individual dos pacotes elasticsearch, kibana e logstash.

:: Elasticsearch ::

Elasticsearch é um mecanismo de pesquisa baseado em texto completo.

Para Versão 7.3.x

Ou Versão do repositório (Possível problema com a 7.4 quem sabe na data que você esteja fazendo não tenha mais)

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.

Para Versão 7.3.x

Ou Versão do repositório (Possível problema com a 7.4 quem sabe na data que você esteja fazendo não tenha mais)

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 Versão 7.3.x

Ou Versão do repositório (Possível problema com a 7.4 quem sabe na data que você esteja fazendo não tenha mais)

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.

Acesse https://github.com/robcowart/elastiflow/tree/master/kibana e faça download do arquivo.json da versão instalada para seu PC: (Na data que publiquei este tutorial o arquivo era 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.

Se tiver alguma dificuldade verifique os logs do logstash:

Use também o tcpdum para verificar se seu roteador está enviando os flows.

Se você instalou a versão 7.3 e não quer atualizar recomendo você desativar o repositório do elastic:

Comente “# deb https://artifacts.elastic.co/packages/7.x/apt stable main”

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

20 Resultados

  1. gaspar poletto disse:

    Muito TOP!!! Tudo Funcionou perfeitamente!
    Saberia me onde posso configurar para só aguardar os dados por 1 ou 2 dias?

  2. Peterson disse:

    Boa tarde, Rudimar.

    Estou com uma dúvida.

    Neste comando apliquei o IP do servidor que estou configurando.
    # sed -i ‘s/#network.host: xxx.xxx.xxx.xxxx/network.host: 127.0.0.1/’ /etc/elasticsearch/elasticsearch.yml

    E tudo rodou perfeitamente.

    Quando apliquei o comando:
    curl -X GET 127.0.0.1:9200

    Deu o seguinte retorno:
    curl: (7) Failed to connect to 127.0.0.1 port 9200: Conexão recusada

    Pode dar uma ajuda

  3. Junior disse:

    Ótimo tutorial, já tinha tentado fazer essa instalação diversas vezes mas sem sucesso, mas com seu tutorial correu tudo em orde, obrigado por compartilhar.
    Dúvida, como coloca senha no kibana, pois ele está sem senha para o acesso.

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

  5. gilmar disse:

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

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

  7. Rafael disse:

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

  8. Adeilton Junior disse:

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

  9. 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?

  10. Max disse:

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

  11. Paulo Jr Andrade disse:

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

  12. 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 *