Skip to content

Repositorio para el desarrollo de Wall-do durante Hackathon de Cybercamp 2018.

License

Notifications You must be signed in to change notification settings

zionsSpartans/wall-do-hackathon

Repository files navigation

Wall-do

Repositorio para el desarrollo de Wall-do durante Hackathon de Cybercamp 2018.

Wall-do es una herramienta inspirada en fail2ban, pero de forma distribuida, para la detección y prevención de ataques.

Basándose en la información recopilada de los logs en los diferentes hosts se realiza un análisis de las IPs que han interactuado con los mismos. Este análisis se basa en la frecuencia de interacción, comportamiento (p.e: intentos de acceso fallidos) y el contraste con blacklist públicas.

Tras asignar una puntuación, en base a esta se determinan las acciones a realizar, que pueden ir desde una alerta hasta un baneo permanente.

Video presentación en Cybercamp 2018

Presentación inicial Wall-do @ Cybercamp18 Presentación final  Wall-do @ Cybercamp18

Deploy Wall-do

Dependencias

Dependencias en los hosts

Necesidades a cubrir en los hosts que deba contactar Wall-do:

  • Compatibles con Ansible (actualmenten encargado de enviar los comandos a todos los nodos)
  • Estar incluidos en el inventario de Ansible que se sube dentro del contenedor.

Despliegue

  1. Clonar repo:
git clone [email protected]:zionsSpartans/wall-do-hackathon.git
  1. Configurar credenciales:
cd wall-do-hackathon
cp -rp mongodb/mongocreds.env.template mongodb/mongocreds.env
vim mongodb/mongocreds.env # Rellenar credenciales BBDD
cp -rp walldo_py/walldo/walldodb/configbd.py.template walldo_py/walldo/walldodb/configbd.py
vim walldo_py/walldo/walldodb/configbd.py # Rellenar credenciales BBDD (las mismas que antes!!)
  1. Configurar conexion a Elasticsearch:
  • Si se va a utilizar el stack levantado en docker:
    echo "ELK_VERSION=6.4.2" >> .env # Seleccionar la versión a utilizar de Elastic
    mv walldo_py/walldo/elastic/elasticconfig.py.template walldo_py/walldo/elastic/elasticconfig.py
  • Si se va a utilizar un Elastic propio:
    mv walldo_py/walldo/elastic/elasticconfig.py.template walldo_py/walldo/elastic/elasticconfig.py
    vim walldo_py/walldo/elastic/elasticconfig.py
  1. Configuraciones varias:

    • Desde el fichero 'walldo_py/walldodb/global_conf.py' se pueden configurar las puntuaciones de los modulos.
    • La ruta donde se encuentra el fichero de whitelist.
      • Este fichero unicamente debe contener el listado de IPs.
      • Estas IPs se cargan en BBDD al arrancar la aplicación.
  2. Configurar hosts a los que debe conectar ansible:

    vim walldo_py/walldo/hosts
  3. Arrancar con docker compose:

docker-compose up # Usar '-d' si queremos que arranque en segundo plano 
  • Si no se va a usar el stack de ELK comentar en el docker-compose.

Estructura del repositorio

  • walldo_py:

    • Directorio del contenedor python
    • Dentro de este directorio está el directorio 'walldo' que contiene el código de la aplicación
  • Directorios contenedores stack ELK:

    • elasticsearch
    • extensions
    • kibana
    • logstash
  • mongodb:

    • Directorio contenedores mongo
  • notas:

    • Anotaciones del equipo
  • vagrantHosts:

    • Material para desplegar las VMs
  • Presentacion_Hackathon:

    • Presentaciones utilizadas durante la competición