Modifier

Partager via


Exécutez un service de jeu Capture the Flag avec CTFd sur Azure PaaS.

Azure Database for MariaDB
Azure Key Vault
Azure Log Analytics
Azure Private Link
Azure Container Registry

Un événement Capture the Flag (CTF) est un exercice « ludifié » que vous pouvez utiliser pour tester des compétences techniques telles que la cybersécurité, DevOps ou la résolution de problèmes opérationnels. Cet article décrit comment utiliser la plateforme en tant que service (PaaS) Azure et la plateforme open-source CTFd pour exécuter un service de jeu CTF.

Architecture

Diagramme montrant la vue d’ensemble de l’architecture des composants Azure impliqués dans un système CTFd.

Téléchargez un fichier PowerPoint de cette architecture.

Workflow

Ce scénario décrit une solution CTF open-source basée sur CTFd dans laquelle les clients peuvent approvisionner et configurer un service de jeu. Le workflow suivant correspond au diagramme précédent :

  1. Une image Docker CTFd est récupérée depuis Azure Container Registry et prête à servir les clients.

  2. Les administrateurs et les participants du CTF accèdent à l’application web CTF depuis n’importe quel appareil.

  3. La plateforme CTFd héberge l’application web en tant que conteneur Docker qui s’exécute sur Azure App Service Web App pour conteneurs.

  4. Azure Database for MySQL maintient les données de CTFd, y compris les utilisateurs, les défis, les indicateurs et les jeux.

  5. Azure Cache for Redis stocke l’état, les sessions utilisateur et d’autres valeurs CTFd. Cette configuration permet de prendre en charge la mise à l’échelle vers plusieurs instances CTFd.

  6. Azure Key Vault maintient les clés pour la base de données et le cache. Seule l’application web a accès aux secrets.

  7. Un réseau virtuel connecte des ressources Azure entre elles et fournit un isolement logique. Dans cette architecture, l’application web communique via le réseau avec la base de données, le cache et le coffre de clés.

  8. L’application web envoie des journaux à Azure Log Analytics, qui agrège les journaux de toutes les instances afin que les services puissent facilement les interroger.

Configuration réseau

Le modèle prend en charge la configuration précédemment mentionnée et une configuration plus simple sans réseau virtuel qui utilise le paramètre d’entrée vnet. Le diagramme suivant décrit la solution pour la configuration plus simple. Le flux de travail précédent n’inclut pas l’étape 7.

Diagramme montrant la vue d’ensemble de l’architecture des composants Azure impliqués dans un système CTFd.

Composants

  • App Service Web App pour conteneurs héberge des applications web conteneurisées pour permettre la mise à l’échelle automatique et la haute disponibilité sans avoir besoin de gérer directement l’infrastructure.

  • Azure Database for MySQL est un service de base de données relationnelle basé sur le cloud. Ce service est basé sur le moteur de base de données de l’édition communautaire MySQL.

  • Azure Cache for Redis améliore les performances et la scalabilité des systèmes qui dépendent fortement des magasins de données back-end. Pour améliorer l’efficacité du système, il copie temporairement les données fréquemment consultées vers un stockage rapide près de l’application.

  • Azure Key Vault fournit une gestion sécurisée des informations d’identification et des certificats.

  • Azure Log Analytics, est un outil Azure Monitor Logs que vous pouvez utiliser pour le diagnostic des informations, la journalisation des informations et pour utiliser une requête afin de trier, filtrer ou visualiser ces données. Azure facture ce service en fonction de la consommation. Vous pouvez utiliser Log Analytics pour héberger des journaux de diagnostic et d’utilisation provenant de tous les services dans cette solution.

  • Azure Networking fournit des capacités de mise en réseau diverses afin que les réseaux puissent appairer avec d’autres réseaux virtuels dans Azure.

  • Vous pouvez établir des connexions avec des centres de données sur site via Azure ExpressRoute ou site à site. Cette architecture utilise des points de terminaison privés pour Azure Database for MySQL, Azure Cache for Redis, et Key Vault au sein du réseau virtuel. L’intégration du réseau virtuel App Service est activée sur le réseau virtuel pour garantir que toutes les données circulent uniquement à travers le réseau virtuel Azure.

Autres solutions

  • Vous pouvez utiliser la définition Docker Compose du référentiel CTFd sur GitHub. Mais la définition Docker Compose provisionne les services d’application web, de cache et de base de données requis sur une seule machine hôte, ce qui n’est ni évolutif ni hautement disponible.

  • Vous pouvez provisionner les services requis décrits dans la définition Docker Compose du référentiel CTFd sur GitHub vers Azure Kubernetes Service (AKS), mais vous devez alors gérer l’infrastructure en tant que service (IaaS).

  • Vous pouvez utiliser un niveau payant de CTFd et obtenir le PaaS avec des fonctionnalités supplémentaires, conformément au plan choisi.

Détails du scénario

Capture the Flag est un exercice de cybersécurité dans lequel un programme ou un site web contient des indicateurs cachés. Les compétiteurs essaient de voler les indicateurs les uns des autres dans des CTF de style attaque et défense ou des organisateurs dans des défis de style Jeopardy.

Vous pouvez enseigner et pratiquer d’autres pratiques d’ingénierie lors d’événements CTF, mais vous n’utiliserez peut-être pas toujours le terme CTF. Par exemple, les packs de contenu OpenHack de Microsoft sont similaires au CTF et à ses processus. OpenHack inclut des sujets tels que l’exploration de connaissances alimentée par l’IA, le machine learning, DevOps, les conteneurs, l’informatique serverless et la sécurité Azure.

Les frameworks CTF open-source peuvent transformer n’importe quel défi en événement CTF avec des pages de défis configurables, des tableaux de classement et d’autres fonctionnalités que vous attendez d’un CTF, tels que zero code. Par exemple, Open Web Application Security Project (OWASP) Juice Shop dispose d’un plugin CTF qui prend en charge plusieurs plateformes CTF courantes que vous pouvez provisionner et exécuter pour que vos équipes complètent une formation en sécurité.

L’une des plateformes CTF ouvertes les plus connues est CTFd. CTFd est construit avec des composants open-source et est facile à utiliser et à personnaliser. Vous pouvez choisir parmi plusieurs plans pour l’hébergement géré et les fonctionnalités, ou déployer et maintenir votre propre environnement. Gérer un environnement a des implications en termes de coût et de maintenance. Mais cela coûte généralement moins cher, vous possédez les données et vous pouvez intégrer l’environnement au réseau de votre organisation. Utilisez un PaaS fourni par votre fournisseur de cloud pour obtenir un logiciel open-source gratuit et une maintenance et gestion IT faciles par rapport aux composants d’infrastructure virtualisés.

Appliquez les conseils de cet article et utilisez Azure PaaS pour configurer un environnement CTFd auto-hébergé. Vous pouvez alors facilement maintenir et faire évoluer votre environnement CTF pour accommoder vos participants.

Cas d’usage potentiels

Cette solution est optimisée pour les communautés de développeurs, DevOps et de cybersécurité, ainsi que pour les équipes qui souhaitent exécuter un événement CTF.

Tout événement de montée en compétence, de hack ou de bug bash peut utiliser cette configuration pour exécuter CTFd afin de gérer et suivre les progrès basés sur des défis, les progrès de l’équipe ou les progrès individuels.

Considérations

Ces considérations implémentent les piliers d’Azure Well-Architected Framework qui est un ensemble de principes directeurs qui permettent d’améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.

Sécurité

La sécurité fournit des garanties contre les attaques délibérées, et contre l’utilisation abusive de vos données et systèmes importants. Pour en savoir plus, consultez Liste de contrôle de l'examen de la conception pour la sécurité.

  • Passez en revue les considérations sur la sécurité dans l’architecture de référence d’application web d’App Service appropriée.

  • Azure Database for MySQL chiffre et sauvegarde automatiquement les données. Vous pouvez configurer Microsoft Defender pour le cloud afin d’atténuer davantage les menaces. Pour plus d’informations, veuillez consulter la section Activer Microsoft Defender pour les bases de données relationnelles open-source et Répondre aux alertes Defender pour les bases de données open-source.

  • L’accès à Azure Database for MySQL via Transport Layer Security (TLS) chiffre le flux de données entre le serveur et votre application pour aider à protéger contre les attaques machine in the middle. Le certificat racine doit être disponible dans l’image Docker. Cette solution utilise une image Docker personnalisée qui récupère le certificat au moment de la génération. Un registre de conteneurs Azure gère l’image personnalisée.

  • Les identités managées pour ressources Azure permettent à d’autres ressources internes d’accéder à votre compte. Cette solution utilise une identité gérée pour autoriser l’application web dans App Service à lire les secrets de Key Vault.

  • Key Vault stocke des informations d’identification, telles que les chaînes de connexion de la base de données ou du cache, en tant que secrets. App Service utilise des identités gérées pour accéder à Key Vault afin d’éviter de stocker des secrets dans les paramètres de l’application ou dans le code.

  • Cette architecture fournit une sécurité réseau tout au long de la conception. Tout le trafic de l’application web disponible publiquement vers les services internes est acheminé via le réseau virtuel. Et tous les services back-end, tels que la base de données, le cache et Key Vault, n’autorisent pas l’accès au réseau public.

Optimisation des coûts

L’optimisation des coûts consiste à examiner les moyens de réduire les dépenses inutiles et d’améliorer l’efficacité opérationnelle. Pour plus d'informations, consultez Liste de contrôle de la révision de la conception pour l'optimisation des coûts.

  • L’environnement CTFd est éphémère. Vous pouvez facilement déployer puis démonter l’environnement avec les ressources nécessaires pour l’événement.

  • Pour estimer le coût d’implémentation de cette solution, utilisez la Calculatrice de prix Azure.

Excellence opérationnelle

L’excellence opérationnelle couvre les processus d’exploitation qui déploient une application et maintiennent son fonctionnement en production. Pour plus d’informations, consultez la Liste de contrôle de l'examen de la conception pour l'excellence opérationnelle.

Azure Monitor s’intègre à App Service pour prendre en charge la journalisation de toutes les instances d’applications web à un emplacement unique. Les paramètres de diagnostic de Monitor collectent les journaux des conteneurs CTFd et les envoient à un espace de travail Log Analytics. À partir de là, vous pouvez utiliser le Langage de requête Kusto pour écrire des requêtes dans les journaux agrégés.

Log Analytics et Monitor sont facturés par gigaoctet (GB) de données ingérées dans le service. Pour plus d’informations, veuillez consulter la section Tarification de Monitor.

Efficacité des performances

L’efficacité des performances est la capacité de votre charge de travail à s’adapter à la demande des utilisateurs de façon efficace. Pour en savoir plus, consultez Liste de vérification de l'examen de la conception pour l'efficacité des performances

Déployer ce scénario

Vous pouvez trouver les fichiers de déploiement de solution en tant que infrastructure en tant que code (IaC) Bicep sur GitHub.

La façon la plus simple de déployer la solution sur votre abonnement est d’utiliser le bouton Déployer sur Azure dans la section Démarrage rapide du fichier README principal du référentiel.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Auteur principal :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes