Coder Social home page Coder Social logo

elk-tshark-docker's Introduction

Overview

L'objectif de ce projet est de proposer une une architecture permettant d'effectuer des analyses de fichier .pcap grâce à Kibana.

Qu'est ce qu'un fichier .pcap ?

C'est un type de fichier généré par des logiciels d'enregistrement de trafic réseau comme Wireshark. Ils contiennent des enregistrement de paquet réseau sur une période donnée.

Analyser ces données fichiers peut permettre de faire des reviews du trafic réseau passé, de backtester des algorithmes d'analyse automatique de réseau, etc.. Afin de faciliter leur analyse nous avons décidé de créer une architecture de traitement de ces données, d'indexation et de visualisation grâce à FileBeat, Logstash, ElasticSearch et Kibana.

Architecture & Workflow

Architecture

Toute l'architecture est encapsulée dans des conteneurs docker et orchestrée via docker compose. Cela nous permet d'abstraire facilement les connections réseaux entre les différents composants. L'architecture se présente comme suit: drawing

Workflow

À la racine de ce projet se trouve un dossier data qui contiendra nos fichiers .pcap et .json. Après avoir copié les fichiers .pcap dans ce dossier, il suffit de lancer la création de l'architecture grâce à docker compose. Le workflow contient deux principales étapes:

  • Le conteneur Wireshark lit et transcrit tous les fichiers présents dans le dossier data/pcaps. Il génère ensuite plusieurs fichiers .json qu'il stocke dans le dossier data/json.
  • Le conteneur Filebeat se charge de lire et de transmettre les fichiers à Logstash.
  • Le conteneur Logstash se charge d'effectuer des transformations sur les données chargées. En effet, le problème de Filebeat est qu'il ne parse pas automatiquement les dates des fichiers .json et par conséquent le timestamp par défaut est celui de l'enregistrement des fichiers par FileBeat. Logstash nous permet de parser ces dates et de les utiliser comme index dans notre base de données Elasticsearch.
  • Les conteneurs ElasticSearch et Kibana se lancent en parallèle et se connectent entre eux. Kibana permet de communiquer avec ElasticSearch afin de visualiser les données que Logstash aura stocké à l'intérieur.

Requirements

Setup

Afin de lancer la stack, veuillez suivre les étapes suivantes:

  • copiez les fichiers .pcap dans le dossier data/pcaps.
  • lancez la stack localement grâce à Docker Compose:
    $ docker-compose up

Attendez quelques minutes que l'architecture se lance et que les fichiers soient transcris. Vous pouvez accéder à l'interface de Kibana à l'adresse suivante: http://127.0.0.1:5601.

Une fois que vous avez terminé vous pouvez stopper les conteneurs:

    $ docker-compose down -v

Note: vous pouvez utiliser l'option -v si vous souhaitez supprimer les données persistantes créées par les volumes de Docker.

Exemple

Données utilisées

Pour faire notre démonstration nous avons utilisé le fichier .pca suivant: https://download.netresec.com/pcap/4sics-2015/4SICS-GeekLounge-151020.pcap

Ces données représentent des enregistrement qui ont été effectués le 20/10/2015.

Ces données sont assez volumineuse donc leur traitement par Wireshark peut prendre du temps. Attendez quelques minutes après le lancement pour effectuer les étapes ci-dessous.

Création de l'index pattern

Une fois que les données sont chargées dans ElasticSearch, vous devriez pouvoir créer un Index Pattern depuis l'interface de Kibana (ou en ligne de commande). Cherchez l'onget Index patterns puis cliquez sur Create index pattern: drawing

Sélectionnez ensuite la source packets-webserver01-2015-10-20 (dans le cas de mon exemple) puis utilisez layers.frame.frame.frame_time comme index temporel (ATTENTION: @timestamp correspond au timestamp d'envoie des fichiers par FileBeat). Une fois l'index créé, vous pouvez visualiser les données avec un Dashboard personannalisé.

Note: un index est l'équivalent d'une table dans une base de données relationelles (cf. Mapping SQL/ElasticSearch).

Exemple de dashboard

À titre d'exemple, j'ai réalisé le Dashboard suivant qui permet d'analyser grossièrement l'activité du réseau sur la période:

drawing

Notes

Initialement, je voulais utiliser Packetbeat afin de transcrire les fichiers .pcap et de les charger directement dans ElasticSearch. En effet, PacketBeat est utilisé pour enregistrer des flux réseaux et de les charger automatiquement dans ElasticSearch.

Malheureusement, je ne suis pas arrivé à faire fonctionner correctement l'architecture. Vous pouvez retrouver le projet correspondant dans le dossier elk-packetbeat/. Si vous exécutez ce projet (de la même manière que le précédent) vous serez en mesure de visualiser, grâce à Kibana, l'activité réseau de votre ordinateur en temps réel.

Références

elk-tshark-docker's People

Contributors

fapont avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.