juju4.misp
Rôle Ansible MISP
Rôle Ansible pour configurer MISP, la plateforme de partage d'informations sur les logiciels malveillants et partage de menaces.
Alternatives
- 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
- rôle ansible : https://github.com/MISP/MISP/pull/1413
- rôle ansible : https://github.com/MISP/MISP/pull/1495
Exigences et dépendances
Ansible
Il a été testé sur les versions suivantes :
- 2.0
- 2.2
- 2.3
- 2.4
- 2.5
Systèmes d'exploitation
Testé sur Ubuntu 20.04, 22.04 et CentOS 8-Stream.
Exemple de Playbook
Il suffit d'inclure ce rôle dans votre liste. Par exemple :
- hosts: all
roles:
- juju4.MISP
Identifiants administratifs par défaut (admin@admin.test / admin)
Variables
Rien de spécifique pour l'instant.
Intégration continue
Ce rôle a un test de base travis (pour github), plus avancé avec kitchen et aussi un Vagrantfile (test/vagrant). La configuration de kitchen par défaut (.kitchen.yml) est basée sur lxd, tandis que (.kitchen.vagrant.yml) est basée sur vagrant/virtualbox.
Une fois que vous vous êtes assuré que tous les rôles nécessaires sont présents, vous pouvez tester avec :
$ gem install kitchen-ansible kitchen-lxd_cli kitchen-sync kitchen-vagrant
$ cd /path/to/roles/juju4.MISP
$ kitchen verify
$ kitchen login
$ KITCHEN_YAML=".kitchen.vagrant.yml" kitchen verify
ou
$ cd /path/to/roles/juju4.MISP/test/vagrant
$ vagrant up
$ vagrant ssh
Le rôle a aussi une configuration packer qui permet de créer une image pour virtualbox, vmware, éventuellement digitalocean, lxc et d'autres. Lors de la construction, il est conseillé de le faire en dehors du répertoire des rôles car tout le répertoire est téléchargé sur la box pendant la construction et il n'est actuellement pas possible d'exclure le répertoire packer de cela (https://github.com/mitchellh/packer/issues/1811).
$ cd /path/to/packer-build
$ cp -Rd /path/to/juju4.MISP/packer .
## mettez à jour packer-*.json avec votre chemin d'accès absolu actuel au rôle ansible pour le rôle principal
## vous pouvez ajouter des dépendances de rôle supplémentaires dans setup-roles.sh
$ cd packer
$ packer build packer-*.json
$ packer build -only=virtualbox-iso packer-*.json
## si vous souhaitez activer des journaux supplémentaires
$ PACKER_LOG_PATH="packerlog.txt" PACKER_LOG=1 packer build packer-*.json
## pour la construction de digitalocean, vous devez exporter le TOKEN dans l'environnement.
## mettez à jour la configuration json sur votre installation et votre région.
$ export DO_TOKEN=xxx
$ packer build -only=digitalocean packer-*.json
## pour Azure
$ . ~/.azure/credentials
$ packer build azure-packer-centos7.json
$ packer build -var-file=variables.json azure-packer-centos7.json
Dépannage et problèmes connus
Dépannage
$ tail /var/log/apache2/misp.*
$ tail /var/www/MISP/app/tmp/logs/*.log
$ cd /var/www/MISP/app/Console && ./cake CakeResque.CakeResque tail
Bugs connus
- dans /var/www/MISP/app/tmp/logs/error.log Erreur : [MissingTableException] La table logs pour le modèle Log n'a pas été trouvée dans la source de données par défaut. vérifiez que la base de données MISP existe dans mysql et est remplie.
- Le script curl_tests.sh de MISP est conçu pour être exécuté une seule fois, contrairement à kitchen verify. S'il est répété, ce test échouera.
- si vous utilisez Docker avec des privilèges et un hôte avec mysql, vous pourriez avoir le problème suivant :
mysqld[29176]: /usr/sbin/mysqld: erreur lors du chargement des bibliothèques partagées : libaio.so.1 : impossible de statuer l'objet partagé : Permission refusée
https://github.com/docker/docker/issues/7512
- Docker et Redis peuvent également avoir des problèmes et il pourrait être nécessaire de modifier la configuration systemd sur Xenial. voir la tâche 'docker redis workaround ???'
- CI échoue parfois avec
Échec de la sérialisation : 1213 Deadlock trouvé lors de la tentative d'obtenir un verrou ; essayez de redémarrer la transaction
. Cela semble lié à Issue 5004 - Ouvert - Ubuntu 22.04 semble non supporté car php8.1 et app/composer.json requièrent php >=7.2.0,<8.0.0.
Erreur : La connexion à la base de données "Mysql" est manquante ou n'a pas pu être créée.
peut être causée par la présence de plusieurs versions de php et un appel de mauvaise version depuis la CLI.Erreur fatale PHP : TypeError non intercepté : La valeur de retour de Symfony\\Component\\Process\\Process::close() doit être de type int, null renvoyé dans phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:1466
(rhel/rockylinux8 et 9) : cause racine non identifiée, possiblement liée à container/docker car cela échoue uniquement dans molecule/docker et pas dans des images hébergées sur bare github.
FAQ
- l'utilisation des dépendances de rôles comme geerlinguy.{mysql,nginx,apache} n'est pas requise mais permet un meilleur réglage.
- Pour déboguer des problèmes gpg (comme indiqué dans les paramètres du serveur : diagnostics), référez-vous à https://github.com/MISP/MISP/issues/413 Le fichier cible a changé et est maintenant MISP/app/Model/Server.php
- le rôle sert MISP en http. Il existe d'autres rôles pour gérer les certificats comme letsencrypt (ex : thefinn93.letsencrypt). Le nouveau module letsencrypt d'ansible v2.2 permet la création de certificats mais pas le renouvellement de la tâche sans relancer le rôle.
- La construction de LIEF peut prendre du temps (30-60min) sur CentOS7. Désactivez-le si ce n'est pas nécessaire.
- Références RedHat Selinux :
À faire
- le rôle ne gère pas la mise à niveau (Travail en cours / git pull entre les versions mineures)
- surveillance sauf si vous utilisez serverspec.
- renforcement : le durcissement d'apache et nginx se fait dans des rôles séparés (harden-webserver). +Viper https://asciinema.org/a/28808 https://asciinema.org/a/28845
Licence
BSD 2-clauses
MISP - Malware Information Sharing Platform & Threat Sharing
ansible-galaxy install juju4.misp