Guia passo a passo: Instalando NFDUMP, NFSEN e NFSEN-NG para Análise de Fluxo de Rede no Debian 12 Bookworm

Neste tutorial você adquirirá conhecimentos e habilidades relacionadas à análise de fluxo de rede bem como a área de segurança. Você poderá examinar os dados de fluxo de rede capturados e identificar padrões, tendências e anomalias no tráfego de rede. Isso pode ajudar a detectar atividades suspeitas, como ataques cibernéticos, tráfego malicioso ou congestionamentos.

Distribuição Utilizada

Debian 12 bookworm (Instalação Limpa)

Requisitos de hardware

Para o que vamos utilizar aqui não precisamos nada tão agressivo, porém o armazenamento vai depender muito de quanto tempo você for deixar salvo, em média você pode colocar 2GB a 4GB (por source) de dados por dias (mas isso é bem relativo), em questão de CPU e memoria 2 CPU e 2GB de memória já da conta, mas se puder coloca mais melhor para processar os dados.

Pacotes Requeridos

Crie o diretório onde iremos baixar nossos arquivos extras

NFDUMP

NFDUMP é um conjunto de ferramentas para coletar e processar dados netflow/ipfix e sflow, enviados de dispositivos compatíveis com netflow/sflow.

O conjunto de ferramentas contém vários coletores para coletar dados de fluxo:

  • nfcapd suporta netflow v1, v5/v7, v9 e IPFIX
  • sfcapd suporta sflow.
  • nfpcapd converte dados pcap lidos de uma interface de host ou de arquivos pcap.

O nfdump possui um filtro de fluxo muito poderoso para processar fluxos. A sintaxe do filtro é muito semelhante ao tcpdump, mas adaptada e estendida para filtragem de fluxo. Um filtro de fluxo também pode conter matrizes de muitos milhares de endereços IP, etc., para pesquisar registros específicos.

O nfdump pode agregar fluxos de acordo com um número de elementos definido pelo usuário. Isso mascara certos elementos e permite somar registros de fluxo correspondentes aos mesmos valores.

A combinação de filtragem e agregação de fluxo como entrada para qualquer estatística de fluxo permite processamento de fluxo complexo. Os dados de fluxo pré-filtrados e agregados também podem ser gravados de volta em um arquivo de fluxo binário, que novamente pode ser processado com nfdump

O nfdump pode enriquecer a listagem de fluxos com informações de localização geográfica e informações de AS, a menos que as informações de AS já estejam disponíveis nos registros de fluxo. Os endereços IP podem ser marcados com um código de país de duas letras ou com uma etiqueta de localização mais longa contendo a região geográfica, o país e a cidade. A localização geográfica e as informações AS são recuperadas do banco de dados geoDB opcional, criado pelo programa geolookup das ferramentas nfdump. geolookup usa o banco de dados Maxmind GeoDB ou GeoLite2 para criar um banco de dados de pesquisa binária para nfdump.

Instalação:
O nfdump até se encontra no repositório do Debian 12 (na versão 1.7.1) como um serviço de coleta, como a ideia é mais voltada a depois utilizar o nfsen, irei baixar a ultima versão que inclusive tem alguns recursos interessantes que você pode se aprofundar posteriormente.

Na compilação podemos ativar algumas features adicionais, para ver mais sobre use o comando:

Estarei instalando as seguintes: (–enable-influxdb –enable-maxmind opcional)

Atualize o cache das bibliotecas dinâmicas.

Iremos ter uma lista de novos binários em /usr/local/bin/

Configure seu roteador para enviar dados de netflow para porta 2055, e com o comando a baixo vamos analisar se os mesmo estão chegando em nosso servidor e capturados pelo nfcap.

Ctrl+C Para cancelar (Não precisa deixar em execução, deixe apenas alguns segundos para ver se esta chegando os flows)

Se tudo ocorreu bem você ira ter uma arquivo da captura com o nome nfcapd.AAAAMMDDHHMM [ANO MÊS DIA HORA MINUTO]

Nfdump é muito poderoso, para dar apenas uma provinha do que estamos falando testes os comandos a baixo para visualizar as saídas. O ultimo comando você vai gostar!

Para mais informações de como utiliza-lo use comando man para ver o manual do nfdump.

Mas não se preocupe ainda em aprender todas as possibilidades, para isso vamos aprender agora utilizar duas ferramentar que poderão ser uteis para você. Mas ler esse manual não vai cair o braço. 😂

NFSEN

O NfSen é uma ferramenta de código aberto para análise e visualização de dados de fluxo de rede. Com uma interface web intuitiva (estilo anos 90 😂), ele coleta registros de fluxo de diferentes dispositivos e os apresenta de forma compreensível. Além disso, oferece recursos avançados, como detecção de ataques e armazenamento de dados de fluxo histórico, tornando-o uma opção popular para monitoramento e solução de problemas em redes de grande porte.

Vamos definir nosso enviadores de fluxos (sim você pode enviar de vários locais)

Procure pela seguintes linhas:

No exemplo acima estarei incluindo analise do meu Cgnat para fins de investigação de problemas (Mas se prepare que os arquivos capturados serão gigantes). Vale lembrar que para cada source a porta não pode ser a mesma!

Caso você queira adicionar ou remover um novo source edite o arquivo /data/nfsen/etc/nfsen.conf e rode o comando /data/nfsen/bin/nfsen reconfig

Vamos criar o diretório /data/nfsen onde ficarão nossos dados do sistema.

De um ENTER ao perguntar: Perl to use: [/usr/bin/perl]

Vamos ajustar o timezone do PHP

Localize e altere: (remova “;” do início para descomentar)

Localize e altere:

Reinicie p apache

Agora vamos criar um serviço no systemd para nosso amigo nfsen

Crie o arquivo:

Adicione:

Recarregue o daemon e vamos por para rodar

Verificar logs

Vamos ver se as portas estão na escuta

Se quiser testar se algo esta chegando o tcpdump pode ser uma boa escolha também.

Vamos entender como os dados vão ser armazenados
Em /data/nfsen/profiles-data/live/ todos nossos sources terão uma pasta, outra pasta com ano, mes, dia. Cada arquivos criado tem um intervalo de 5 minutos. Aguarde uns 15min e rode o seguinte comando:

Iremos ver que alguns arquivos e diretórios já foram criados.

Projeto não tem uma index então para não precisar informar na url nfsen.php crie um atalho apontando para index.php

Agora acesse: http://__endereco_servidor/nfsen/
E temos nossa bela interface anos 90! Não me preocupo com isso, a ferramenta é o que importa. Recomendo você dar uma olha na documentação.

NFSEN-NG

O projeto NfSen-NG é uma implementação melhorada do NfSen, que oferece recursos avançados para coleta, análise e visualização de dados de tráfego de rede. Com sua interface web intuitiva e poderosa, o “nfsen-ng” permite aos usuários monitorar e analisar o tráfego em tempo real, realizar pesquisas detalhadas em dados históricos e criar relatórios personalizados, facilitando a detecção de problemas, a análise de desempenho e a tomada de decisões relacionadas à rede.

Vamos fazer alguns ajustes para ler nossa mesma base de dados do nfsen.

Localize os sources.

Informe os seus:

Se desejar incluir algumas porta para analisar os gráficos.

No meu vou alterar para:

Localize e altere:

Por

Enable apache modules

Configure a biblioteca RRD para o PHP

Configure virtual host para ler o .htaccess

Deve ficar assim:

Reinicie o serviço web

Vamos criar um “serviço” no systemd para iniciar o /var/www/html/nfsen-ng/backend/cli.php.

Adicione?

Recarregue o daemon e vamos por para rodar

Acesse agora: http://__endereco__/nfsen-ng/

Utilizando um filtro Ex: “dst as 15169 OR dst as 2906 OR dst as 32934” obtém um informações com destino aos 3 AS.

Se notar na parte verde temos o comando executado no terminal


Pode ser um bom “meio de você aprender os comandos”.

Algo legal do NfSen-Ng é que ele tem uma API: http://__endereco__//nfsen-ng/api/config de uma lida em https://github.com/mbolli/nfsen-ng/blob/master/README.md como utiliza, com um pouco de imaginação você pode fazer algumas coisas bem legais.

Script para ir apagando arquivos mais antigos

Adicione (ajuste os dias para realidade do seu disco)

Agende o script para roda todos os dias as 4h da manhã

Adcione

Reinicie o cron

Para verificar o tamanho do diretório use o comando

E para ver o disco use:

Gostou e quer me ajudar manter o blog? 🙂

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/phaag/nfdump
https://github.com/phaag/nfsen
https://nfsen.sourceforge.net/
https://github.com/mbolli/nfsen-ng
https://github.com/phaag/nfinflux
https://github.com/phaag/nfexporter
https://github.com/phaag/go-nfdump

Rudimar Remontti

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

Você pode gostar...

17 Resultados

  1. Benjamim disse:

    No nfsen-ng depois de toda configuração, ao subir o serviço, apresentou o ERRO:

    × nfsen-ng.service – nfsen-ng
    Loaded: loaded (/lib/systemd/system/nfsen-ng.service; enabled; preset: enabled)
    Active: failed (Result: exit-code) since Thu 2024-04-18 13:52:37 -03; 7s ago
    Duration: 494ms
    Process: 25247 ExecStart=su – www-data –shell=/bin/bash -c /var/www/html/nfsen-ng/backend/cli.php start (code=exited, status=255/EXCEPTION)
    Main PID: 25247 (code=exited, status=255/EXCEPTION)
    CPU: 14ms

    Apr 18 13:52:36 srv0900072 systemd[1]: Started nfsen-ng.service – nfsen-ng.
    Apr 18 13:52:36 srv0900072 su[25247]: (to www-data) root on none
    Apr 18 13:52:36 srv0900072 su[25247]: pam_unix(su-l:session): session opened for user www-data(uid=33) by (uid=0)
    Apr 18 13:52:37 srv0900072 su[25247]: pam_unix(su-l:session): session closed for user www-data
    Apr 18 13:52:37 srv0900072 systemd[1]: nfsen-ng.service: Main process exited, code=exited, status=255/EXCEPTION
    Apr 18 13:52:37 srv0900072 systemd[1]: nfsen-ng.service: Failed with result ‘exit-code’.

    Rodando o comando manualmente:

    PHP Warning: include_once(/var/www/html/nfsen-ng/backend/../vendor/autoload.php): Failed to open stream: No such file or directory in /var/www/html/nfsen-ng/backend/cli.php on line 3
    PHP Warning: include_once(): Failed opening ‘/var/www/html/nfsen-ng/backend/../vendor/autoload.php’ for inclusion (include_path=’.:/usr/share/php’) in /var/www/html/nfsen-ng/backend/cli.php on line 3
    PHP Fatal error: Uncaught Error: Class “mbolli\nfsen_ng\common\Debug” not found in /var/www/html/nfsen-ng/backend/cli.php:9
    Stack trace:
    #0 {main}
    thrown in /var/www/html/nfsen-ng/backend/cli.php on line 9

  2. deivid disse:

    fiz todo o processo e ao final deu esses 2
    1 -Daemon is running, graph is reloading each minute.
    2 -Got 400 – Bad Request. rrd_xport failed. opening ‘/var/www/html/nfsen-ng/backend/datasources/data/mikrotik.rrd’: No such file or directory
    revisei mas não consegui achar o que pode ter dado errado

  3. Matheus disse:

    Estou tendo esse erro no script de faxina, algum sabe arrumar?

    rm: remover arquivo comum ‘/data/nfsen/profiles-data/live/Borda/2023/11/09/nfcapd.202311091740’? date: iles-data/live/Borda/2023/11/09/nfcapd.202311090105: Arquivo ou diretório inexistente

  4. Daniel disse:

    Ola, Ele analisa trafego v4/v6 tbm?

  5. Renato disse:

    (quando cheguei na parte de digitar: ldconfig
    não deu certo. deu msg de comando não encontrado.)

    Estou com esse mesmo problema.

  6. Pedro Jr disse:

    ao fazer o teste deu esse erro: root@nfsen:~/nf/nfdump-1.7.2# nfcapd -E -p 2055 -w /tmp/
    nfcapd: error while loading shared libraries: libnfdump-1.7.2.so: cannot open shared object file: No such file or directory
    root@nfsen:~/nf/nfdump-1.7.2#

    • Ricardo Merlo disse:

      Boa tarde amigo, um erro que ocorreu comigo e estava dando o mesmo que o seu aí foi que estava fazendo este comando junto “#./configure –enable-nfprofile –enable-nftrack –enable-jnat –enable-influxdb –enable-maxmind
      # make ; make install”

      Depois de um tempo que eu vi que primeiro devia passar o comando “#./configure –enable-nfprofile –enable-nftrack –enable-jnat –enable-influxdb –enable-maxmind ”

      Depois o “# make ; make install””

      Fazendo isso deu certo aqui para mim.

      Espero ter ajudado.

    • Benjamim disse:

      Tem q rodar o /sbin/ldconfig

  7. Pedro Jr disse:

    quando cheguei na parte de digitar: ldconfig
    não deu certo. deu msg de comando não encontrado.

  8. Alessandro Schneider disse:

    Top, sempre trazendo conteúdo de qualidade!!!!
    Parabéns!!!

Deixe um comentário

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