![Azure Monitoring Service]
Infrastructure as Code pour déployer un Proof-of-Concept (PoC) de surveillance de sécurité (SecOps) sur Azure : VM Linux, installation manuelle de l'agent Log Analytics (MMA/OMS), Log Analytics Workspace, et une règle d'alerte KQL détectant les tentatives de brute-force SSH.
- Présentation
- Architecture déployée
- Composants clés
- Structure des fichiers Terraform
- Prérequis techniques
- Procédure de Déploiement Critique
- Validation / Simulation d'attaque
- Nettoyage et Sécurité
- 📄 Licence
- 🚀 Bonus : améliorations possibles
Ce repository propose un PoC minimal pour illustrer la chaîne SecOps : IaC ➜ collecte des logs ➜ détection d'incidents. L'exemple détecte les tentatives de connexion SSH échouées (seuil : > 3 échecs en 5 minutes) à l'aide d'une règle programmée en KQL dans Azure Monitor.
⚠️ Note sur la Méthode : Le provisionnement automatique de l'agent via l'API Azure ayant échoué (erreurs 400/404), l'installation de l'agent MMA/OMS est effectuée manuellement via SSH après la création de la machine.
- Resource Group
- Virtual Network + Subnet
- Public IP + Network Interface
- Network Security Group (règle SSH ouverte pour PoC)
- Linux VM (Ubuntu)
- Log Analytics Workspace
- Agent MMA/OMS (OmsAgentForLinux) : Installation manuelle requise.
- Scheduled Query Rule (KQL) pour détecter les échecs SSH
- Action Group (
ag-secops-email-notifications) : Créé pour la notification par e-mail.
| Composant | Rôle | Configuration |
|---|---|---|
| Log Analytics Workspace | Centralise les logs (Syslog/SSH) | Géré par Terraform |
| Linux VM | Source des logs / cible de la simulation | Gérée par Terraform |
| Agent MMA/OMS | Envoie les logs vers le Workspace | Installation MANUELLE |
| Scheduled Query Rule (KQL) | Détecte >3 échecs SSH sur 5 min | Créé par Terraform |
| Action Group | Destination des notifications | E-mail à ntahimperafrancis@gmail.com |
main.tf— Fichier unique contenant toutes les ressources (Infra, Monitoring, Variables et Outputs).- Fichiers de secrets (
*.tfvarsou variables d'environnementARM_*).
- Azure CLI installé et authentifié (
az login). - Terraform ≥ 1.0.0.
- Rôle
Contributorsur la subscription. - Clé privée SSH (Ex:
SSHKEYSEC.pem) correspondant à la clé publique configurée dansmain.tf.
Cette étape crée la VM, le Log Analytics Workspace, le Groupe d'Actions et la Règle d'Alerte KQL.
terraform init
terraform applyDès que terraform apply est terminé (la VM est créée), vous devez vous connecter pour installer l'agent.
- Récupérez les clés :
- IP Publique de la VM (
terraform output vm_public_ip). - Workspace ID et Shared Key (
terraform output law_workspace_idetterraform output law_primary_key).
- IP Publique de la VM (
- Connexion SSH :
ssh -i SSHKEYSEC.pem <votre_utilisateur>@<IP_PUBLIQUE_VM>Exécutez les commandes suivantes sur la VM (remplacez les placeholders : <ID> et <CLÉ>) :
⚠️ Vérifiez que l'utilisateur de la VM a la permission NOPASSWD pour sudo, sinon l'installation échouera.
wget [https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh](https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh) -O onboard_agent.sh
chmod +x onboard_agent.shsudo /bin/bash onboard_agent.sh -w <ID> -s <CLÉ> -d opinsights.azure.com
L'agent est actif immédiatement après l'exécution de cette commande.
Exécutez 4 tentatives SSH avec un mauvais mot de passe (dans une fenêtre de 5 minutes) :
ssh utilisateur_incorrect@<IP_PUBLIC> # Répétez 4 fois avec un mot de passe incorrect.
Ouvrez le Log Analytics Workspace et exécutez la requête pour vérifier l'arrivée des logs :
Syslog
| where Process == "sshd"
| where SyslogMessage contains "Failed password for"
| summarize AttemptCount = count() by Computer, bin(TimeGenerated, 5m)
| order by TimeGenerated desc
Si AttemptCount atteint 4 ou plus, l'alerte se déclenchera :
- Allez dans Azure Portal → Monitor → Alerts.
- Consultez votre boîte e-mail (
ntahimperafrancis@gmail.com).
terraform destroy- 🔒 Règle NSG : Ne jamais exposer SSH en production (
source_address_prefixdoit être votre IP locale, non0.0.0.0/0). - ✅ Agent MMA/OMS : Cet agent est déprécié. Pour la production, migrez vers l'Agent Azure Monitor (AMA).
MIT — libre à utiliser, modifier, redistribuer.
- ✅ Intégration avec Azure Sentinel pour corrélation et enrichissement.
- ✅ Utilisation d'une Image VM Custom pour pré-installer l'agent Log Analytics.