MISP

Rôle

Plateforme de threat intelligence (MISP — Malware Information Sharing Platform) : agrégation, corrélation et partage d'indicateurs de compromission (IOC), destinée à être interrogée en API par Cortex et TheHive.

État réel : VM nue, rien d'installé

La VM INDSOC018 existe (provisionnée par Terraform + configuration de base /root/baseline) mais aucune application MISP n'y est installée au moment de la rédaction. L'exploitant a demandé une reconstruction en VM nue le 2026-07-14 pour une installation manuelle qu'il compte réaliser lui-même — voir « Points d'attention » pour le contexte complet. Ne pas présenter ni supposer ce composant comme opérationnel sur la seule base du code Ansible ci-dessous.

Architecture

VM unique Rocky 9.6 durci (tmpl-rocky96-hardened), segment seg-soc.

Documenté (README/MANUEL_INSTALLATION, périmé) Réel (Terraform/inventaire actuel)
Hostname INDSOC001 INDSOC018
IP 10.100.20.130 10.100.20.147

Le README Ansible et MANUEL_INSTALLATION.md du projet décrivent encore une itération précédente (INDSOC001). La source de vérité actuelle est ansible/inventory.ini et variables.tf (INDSOC018 / 10.100.20.147) — voir Historique des décommissionnements.

  • Déploiement prévu via la stack officielle Docker Compose MISP/misp-docker : MySQL/MariaDB + Redis + misp-core + misp-modules.
  • Docker CE (pas Podman) : seule méthode officiellement maintenue/testée par le projet MISP — le reste de l'infra Indio préfère Podman (voir NetBox), exception assumée ici pour rester sur un chemin supporté en amont.
  • Accès HTTPS direct sur l'IP de la VM (pas de FQDN public au moment de l'écriture), certificat auto-signé généré par le conteneur au premier démarrage.

Intégrations prévues (non actives — voir avertissement ci-dessus)

flowchart LR
    MISP["MISP -- INDSOC018<br/>10.100.20.147<br/>VM nue, rien d'installe"]
    Cortex["Cortex -- INDSOC021<br/>10.100.20.150"]
    TheHive["TheHive -- INDSOC020<br/>10.100.20.149"]

    MISP -.->|"IOC via API REST<br/>prevu, non actif"| Cortex
    MISP -.->|"IOC via API REST<br/>prevu, non actif"| TheHive

    classDef planned stroke-dasharray: 4 4
    class MISP,Cortex,TheHive planned

Traits pointillés : aucune de ces intégrations n'existe aujourd'hui, les trois VM étant nues. Schéma conservé pour référence de la topologie cible une fois l'installation manuelle réalisée.

Provisioning Terraform

Fichiers : main.tf, variables.tf, versions.tf, terraform.tfvars.example.

  • VM unique (vsphere_virtual_machine.misp), 2 vCPU / 4096 Mo RAM par défaut, vm_name par défaut INDSOC018, réseau seg-soc, réservation IP via NetBox.
  • Mêmes providers/conventions que les autres dépôts VM de l'infra (hashicorp/vsphere, e-breuninger/netbox).

Configuration Ansible

  • site.yml : rôles docker puis misp.
  • docker : installe Docker CE + plugin compose depuis le dépôt officiel download.docker.com, configure le proxy sortant du démon dockerd.
  • misp : clone le dépôt officiel misp-docker (branche master, pas de tag de version disponible en amont), génère le fichier .env de la stack, ouvre le port 443 en firewalld, lance docker compose up -d.
  • Secrets (mot de passe root MySQL, mot de passe applicatif MySQL, passphrase admin) chiffrés ansible-vault, déchiffrement via /root/.misp_vault_pass (référencé dans ansible.cfg) — voir Gestion des secrets.
  • Sortie réseau (clone GitHub, pull Docker Hub) via le proxy Squid 10.100.10.4:3128 — domaines déjà whitelistés (.github.com, .githubusercontent.com, .docker.io, .docker.com, .cloudflare.docker.com).

Procédure de déploiement

cd /root/misp/ansible
ansible-galaxy collection install -r requirements.yml
ansible-playbook --syntax-check site.yml
ansible-playbook site.yml -e @/root/.hap_secrets.yml

Actions manuelles obligatoires après déploiement (non automatisées) :

  1. Connexion initiale (admin@infra.indio + passphrase vault) puis changement immédiat du mot de passe.
  2. Récupération de la clé API admin (Global Actions > My Profile > Auth Keys) pour les intégrations Cortex/TheHive.
  3. Remplacement du certificat auto-signé par un certificat interne si exposition au-delà d'un usage de test.
  4. Activation des flux de threat intelligence souhaités (Sync Actions > Feeds).

Points d'attention

Contexte : VM redéployée nue, installation manuelle prévue

Ce rôle Ansible a été débogué en profondeur puis la VM a été entièrement redéployée nue (2026-07-14) à la demande explicite de l'exploitant, qui prévoit une installation manuelle de MISP. Le code reste conservé sur GitLab à titre de référence, mais n'est probablement plus le mécanisme réellement utilisé pour (re)déployer ce composant aujourd'hui — le README du projet le confirme lui-même : rôle écrit et validé en --syntax-check uniquement, aucune connexion SSH, aucun paquet installé, aucun conteneur démarré. Ne pas supposer que MISP est opérationnel sur la base de ce seul code ; vérifier l'état réel de la VM avant toute action.

  • Le fichier .env généré liste les variables connues au moment de l'écriture du rôle (réalignées le 2026-07-14 sur le vrai template.env du dépôt officiel — BASE_URL/UUID/GPG_PASSPHRASE, CORE_TAG/MODULES_TAG/GUARD_TAG requis même sans build local) ; le dépôt officiel évolue, à comparer avant tout rejeu.
  • Zone seg-soc sans sortie Internet directe : tout accès externe passe obligatoirement par le proxy Squid whitelisté.