Environnement du TP 17 : SOAR avec OPNsense

Ce TP réutilise exactement la même VM OPNsense que le TP 7 (voir tp7-environnement.md) : aucune nouvelle VM à créer. Le « collecteur SOAR » est un simple script Python exécuté sur le poste hôte.

1. Prérequis

  • la VM OPNsense du TP 7 démarrée et accessible en API,
  • Python 3 avec pip install fastapi uvicorn requests pydantic python-dotenv sur le poste hôte.

2. Préparation côté OPNsense

  1. Firewall → Aliases → + : créez un alias vide de type Host(s), nommé soar_blocklist.
  2. Firewall → Rules → LAN (ou WAN selon le scénario) : créez une règle Block en première position, source = alias soar_blocklist, appliquez.
  3. Vérifiez que la clé/secret API du TP 7 sont toujours valides (.env).

3. Vérification de l’accès à l’alias via l’API

curl -k -u "$OPNSENSE_KEY:$OPNSENSE_SECRET" https://192.168.1.1/api/firewall/alias/getAliasUUID/soar_blocklist

4. Lancement du serveur d’écoute

Aucune VM supplémentaire n’est nécessaire : soar_listener.py tourne directement sur le poste hôte, sur le même réseau que celui utilisé pour joindre OPNsense (adaptateur host-only du TP 7).

python3 soar_listener.py

Le webhook est alors accessible en local sur http://localhost:5000/webhook/alert, et la documentation interactive générée par FastAPI sur http://localhost:5000/docs.

Vérification finale

  • L’alias soar_blocklist existe et est référencé par une règle de blocage active sur OPNsense.
  • Le script soar_listener.py démarre sans erreur et écoute sur le port 5000.
  • Un appel curl de test vers /webhook/alert renvoie une réponse JSON.