juju4.misp
Rol de Ansible para MISP
Rol de Ansible para configurar MISP, Plataforma de Compartición de Información sobre Malware y Amenazas.
Alternativas
- docker: https://blog.rootshell.be/2016/03/03/running-misp-in-a-docker-container/
- rpm: https://github.com/amuehlem/MISP-RPM https://github.com/xme/misp-docker
- rol de ansible: https://github.com/MISP/MISP/pull/1413
- rol de ansible: https://github.com/MISP/MISP/pull/1495
Requisitos y Dependencias
Ansible
Se probó en las siguientes versiones:
- 2.0
- 2.2
- 2.3
- 2.4
- 2.5
Sistemas Operativos
Probado en Ubuntu 20.04, 22.04 y CentOS 8-Stream.
Ejemplo de Playbook
Solo incluye este rol en tu lista. Por ejemplo:
- hosts: all
roles:
- juju4.MISP
Credenciales de administrador predeterminadas (admin@admin.test / admin)
Variables
Nada específico por ahora.
Integración Continua
Este rol tiene una prueba básica de travis (para github), más avanzada con kitchen y también un Vagrantfile (test/vagrant). La configuración predeterminada de kitchen (.kitchen.yml) es basada en lxd, mientras que (.kitchen.vagrant.yml) es basada en vagrant/virtualbox.
Una vez que asegures que todos los roles necesarios están presentes, puedes probar con:
$ gem install kitchen-ansible kitchen-lxd_cli kitchen-sync kitchen-vagrant
$ cd /ruta/a/roles/juju4.MISP
$ kitchen verify
$ kitchen login
$ KITCHEN_YAML=".kitchen.vagrant.yml" kitchen verify
o
$ cd /ruta/a/roles/juju4.MISP/test/vagrant
$ vagrant up
$ vagrant ssh
El rol también tiene una configuración de packer que permite crear imágenes para virtualbox, vmware, eventualmente digitalocean, lxc y otros. Al construirlo, se recomienda hacerlo fuera del directorio de roles, ya que todo el directorio se sube a la caja durante la construcción y actualmente no es posible excluir el directorio de packer de ello (https://github.com/mitchellh/packer/issues/1811)
$ cd /ruta/a/packer-build
$ cp -Rd /ruta/a/juju4.MISP/packer .
## actualiza packer-*.json con tu ruta absoluta actual del rol ansible para el rol principal
## puedes agregar dependencias de roles adicionales dentro de setup-roles.sh
$ cd packer
$ packer build packer-*.json
$ packer build -only=virtualbox-iso packer-*.json
## si quieres habilitar registro adicional
$ PACKER_LOG_PATH="packerlog.txt" PACKER_LOG=1 packer build packer-*.json
## para la construcción en digitalocean, necesitas exportar TOKEN en el entorno.
## actualiza la configuración json en tu configuración y región.
$ export DO_TOKEN=xxx
$ packer build -only=digitalocean packer-*.json
## para Azure
$ . ~/.azure/credentials
$ packer build azure-packer-centos7.json
$ packer build -var-file=variables.json azure-packer-centos7.json
Solución de Problemas y Problemas Conocidos
Solución de problemas
$ tail /var/log/apache2/misp.*
$ tail /var/www/MISP/app/tmp/logs/*.log
$ cd /var/www/MISP/app/Console && ./cake CakeResque.CakeResque tail
Errores conocidos
en /var/www/MISP/app/tmp/logs/error.log Error: [MissingTableException] La tabla logs para el modelo Log no fue encontrada en la fuente de datos por defecto. verifica que la base de datos de misp exista en mysql y esté llena.
El script curl_tests.sh de MISP está hecho para ejecutarse una vez, a diferencia de kitchen verify. Si se repite, esta prueba fallará.
si utilizas docker privilegiado y un host con mysql, podrías tener el siguiente problema
mysqld[29176]: /usr/sbin/mysqld: error al cargar bibliotecas compartidas: libaio.so.1: no se puede acceder al objeto compartido: Permiso denegado
https://github.com/docker/docker/issues/7512
Docker y Redis también pueden tener problemas y puede ser necesario editar la configuración de systemd en xenial. ver tarea 'docker redis workaround ???'
CI falla a veces con
Fallos en la serialización: 1213 Se encontró un bloqueo muerto al intentar obtener el bloqueo; intenta reiniciar la transacción
. Parece estar relacionado con Issue 5004 - AbiertoUbuntu 22.04 parece no ser compatible ya que php8.1 y app/composer.json requieren php >=7.2.0,<8.0.0
Error: La conexión a la base de datos "Mysql" falta, o no se pudo crear.
puede ser causado si hay múltiples versiones de php y se llama la versión incorrecta desde la interfaz de línea de comandos.Error fatal de PHP: Error de tipo no capturado: El valor de retorno de Symfony\\Component\\Process\\Process::close() debe ser del tipo int, nulo devuelto en phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:1466
(rhel/rockylinux8 y 9): no se identificó la causa raíz, posiblemente relacionado con contenedores/docker ya que solo falla en molécula/docker y no en imágenes alojadas en github.
Preguntas Frecuentes (FAQ)
El uso de dependencias de roles como geerlinguy.{mysql,nginx,apache} no es obligatorio, pero permite más ajustes.
Para depurar problemas de gpg (según Configuración del Servidor: Diagnósticos), consulta https://github.com/MISP/MISP/issues/413 El archivo objetivo ha cambiado y ahora es MISP/app/Model/Server.php
el rol está sirviendo MISP como http. Hay otros roles para manejar certificados como letsencrypt (ej: thefinn93.letsencrypt) El nuevo módulo de letsencrypt de ansible v2.2 permite la creación de certificados, pero no la renovación de la tarea sin volver a ejecutar el rol.
La construcción de LIEF puede llevar un tiempo (30-60min) en Centos7. Desactiva si no es necesario.
Referencias de seguridad de RedHat Selinux:
TODO
- el rol no está gestionando actualizaciones (Trabajo en progreso/git pull entre versiones menores)
- monitoreo a menos que se utilice serverspec
- endurecimiento: el endurecimiento de apache & nginx se realiza en roles separados (harden-webserver) +Viper https://asciinema.org/a/28808 https://asciinema.org/a/28845
Licencia
BSD 2-cláusulas
MISP - Malware Information Sharing Platform & Threat Sharing
ansible-galaxy install juju4.misp