Editar

Compartilhar via


Execute um serviço de jogo Capture the Flag com CTFd no Azure PaaS

Banco de Dados do Azure para MariaDB
Cofre de Chave do Azure
Azure Log Analytics
Link Privado do Azure
Registro de Contêiner do Azure

Um evento Capture the Flag (CTF) é um exercício gamificado que você pode usar para testar habilidades de engenharia, como segurança cibernética, DevOps ou solução de problemas operacionais. Este artigo descreve como usar a plataforma Azure como serviço (PaaS) e a plataforma CTFd de código aberto para executar um serviço de jogo CTF.

Arquitetura

Diagrama que mostra a visão geral da arquitetura dos componentes do Azure envolvidos num sistema CTFd.

Baixe um arquivo do PowerPoint dessa arquitetura.

Workflow

Este cenário descreve uma solução CTF de código aberto baseada em CTFd na qual os clientes podem provisionar e configurar um serviço de jogo. O fluxo de dados a seguir corresponde ao diagrama anterior:

  1. Uma imagem CTFd Docker é recuperada do Azure Container Registry e pronta para atender os clientes.

  2. Os administradores e participantes do CTF acessam o aplicativo da web do CTF em qualquer dispositivo.

  3. A plataforma CTFd hospeda o aplicativo Web como um contêiner do Docker executado no Aplicativo Azure Web para Contêineres.

  4. O Banco de Dados do Azure para MySQL mantém os dados CTFd, incluindo usuários, desafios, sinalizadores e jogabilidade.

  5. O Cache Redis do Azure armazena o estado, as sessões do usuário e outros valores CTFd. Essa configuração permite suporte para expansão para diversas instâncias de CTFd.

  6. O Azure Key Vault mantém as chaves do banco de dados e do cache. Somente o aplicativo web tem acesso aos segredos.

  7. Uma rede virtual conecta os recursos do Azure entre si e fornece isolamento lógico. Nessa arquitetura, o aplicativo Web comunica-se pela rede com o banco de dados, o cache e o Cofre de Chaves.

  8. O aplicativo web envia registros para o Azure Log Analytics, que agrega os registos de todas as instâncias para que os serviços possam consultá-los facilmente.

Configuração de rede

O modelo oferece suporte à configuração anterior e a uma configuração mais simples sem uma rede virtual que usa o parâmetro de entrada vnet . O diagrama a seguir descreve a solução para a configuração mais simples. O fluxo de trabalho anterior não inclui a etapa 7.

Diagrama que mostra a visão geral da arquitetura dos componentes do Azure envolvidos num sistema CTFd.

Componentes

  • O serviço do Aplicativo Web para Contêineres hospeda aplicativos da Web em contêineres para permitir escalonamento automático e alta disponibilidade sem a necessidade de gerenciar diretamente a infraestrutura.

  • O Banco de Dados do Azure para MySQL é um serviço de banco de dados relacional baseado em nuvem. Esse serviço é baseado no mecanismo de banco de dados de edição da comunidade do MySQL.

  • Cache do Azure para Redis melhora o desempenho e a escalabilidade de sistemas que dependem fortemente de armazenamentos de dados de back-end. Para melhorar a eficiência do sistema, ele copia temporariamente os dados acessados ​​com frequência para um armazenamento rápido próximo ao aplicativo.

  • Key Vault: fornece gerenciamento seguro de credenciais e certificados.

  • Log Analytics é uma ferramenta de logs do Azure Monitor que você pode usar para diagnóstico de informações, registro de informações e para usar uma consulta para classificar, filtrar ou visualizar esses dados. O Azure cobra por esse serviço com base no consumo. Você pode usar o Log Analytics para hospedar logs de diagnóstico e uso de todos os serviços desta solução.

  • Sistema de Rede do Azure fornece diversas capacidades de rede para que as redes possam emparelhar com outras redes virtuais no Azure.

  • Você pode estabelecer conexões com datacenters locais por meio do Azure ExpressRoute ou site a site. Essa arquitetura usa pontos de extremidade privados para o Banco de Dados MySQL do Azure , o Cache do Azure para Redis e o Key Vault na rede virtual. A integração de rede virtual do Serviço de Aplicativo está habilitada na rede virtual para garantir que todos os dados fluam somente através da rede virtual do Azure.

Alternativas

  • Você pode usar a Definição Docker Compose do repositório CTFd no GitHub. Mas a definição do Docker Compose provisiona os serviços necessários de aplicativos Web, cache e banco de dados em uma única máquina host, que não é escalonável ou altamente disponível.

  • Você pode fornecer os serviços necessários descritos na definição do Docker Compose a partir do repositório CTFd no GitHub to Azure Kubernetes Service (AKS), mas então você precisa gerenciar a infraestrutura como serviço (IaaS).

  • Você pode usar um nível pago de CTFd e obtenha o PaaS com funcionalidades adicionais, de acordo com o plano escolhido.

Detalhes do cenário

Capture the Flag é um exercício de segurança cibernética em que um programa ou site contém sinalizadores ocultos. Os competidores tentam roubar as bandeiras uns dos outros em CTFs de ataque e defesa ou dos organizadores em desafios de estilo Jeopardy.

Você pode ensinar e praticar outras práticas de engenharia como eventos CTF, mas nem sempre usará o termo CTF. Por exemplo, os pacotes de conteúdo do Microsoft OpenHack são semelhantes ao CTF e seus processos. O OpenHack inclui tópicos como mineração de conhecimento baseada em IA, aprendizado de máquina, DevOps, contêineres, computação sem servidor e segurança do Azure.

As estruturas CTF de código aberto podem transformar qualquer desafio em um evento CTF com páginas de desafio configuráveis, quadros de líderes e outros recursos que você espera do CTF, como código zero. Por exemplo, o Open Web Application Security Project (OWASP) Juice Shop tem um plugin CTF que oferece suporte a diversas plataformas CTF comuns que você pode provisionar e executar para que suas equipes concluam o treinamento de segurança.

Uma das plataformas CTF abertas mais populares é a CTFd. O CTFd é construído com componentes de código aberto e é fácil de usar e personalizar. Você pode escolher entre vários planos para hospedagem gerenciada e recursos, ou implantar e manter seu próprio ambiente. Gerenciar um ambiente tem implicações de custo e manutenção. Mas isso normalmente custa menos, você possui os dados e pode integrar o ambiente à rede da sua organização. Use uma PaaS fornecida pelo seu fornecedor de nuvem para obter software gratuito e de código aberto e fácil manutenção e manuseio de TI em comparação com componentes de infraestrutura virtualizados.

Aplique as orientações deste artigo e utilize o Azure PaaS para configurar um ambiente CTFd auto-hospedado. Assim, você poderá manter e dimensionar facilmente seu ambiente CTF para acomodar seus participantes.

Possíveis casos de uso

Essa solução é otimizada para as comunidades de desenvolvedores, DevOps e segurança cibernética e para equipes que desejam executar um evento CTF.

Qualquer evento de atualização, hack ou bug bash pode usar esta configuração para executar o CTFd para gerenciar e acompanhar o progresso baseado em desafios, o progresso da equipe ou o progresso individual.

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para obter mais informações, consulte Lista de verificação de revisão de design para segurança.

  • Analise as considerações de segurança na arquitetura de referência de aplicativo Web do Serviço de Aplicativo apropriada.

  • O Banco de Dados do Azure para MySQL criptografa e faz backup dos dados. Você pode configurar o Microsoft Defender for Cloud para mitigação adicional de ameaças. Para obter mais informações, consulte Habilitar o Microsoft Defender para bancos de dados relacionais de código aberto e Responder aos alertas de banco de dados de código aberto do Defender.

  • O acesso à Base de Dados do Azure para MySQL através do Transport Layer Security (TLS) criptografa o fluxo de dados entre o servidor e a sua aplicação para ajudar a proteger contra máquina no meio de ataques. O certificado raiz deve estar disponível na imagem do Docker. Essa solução usa uma imagem personalizada do Docker que busca o certificado em tempo de compilação. Um registro de contêineres Azure gerencia a imagem personalizada.

  • As identidades gerenciadas para recursos do Azure são usadas para fornecer acesso a outros recursos internos para sua conta. Esta solução usa uma identidade gerenciada para autorizar o aplicativo Web no Serviço de Aplicativo do Azure a ler segredos do Cofre de Chaves do Azure.

  • O Key Vault armazena credenciais, como cadeias de conexão de banco de dados ou cache, como segredos. O Serviço de Aplicativo usa identidades gerenciadas para acessar o Key Vault e evitar o armazenamento de segredos nas configurações ou no código do aplicativo.

  • Essa arquitetura fornece segurança de rede em todo o projeto. Todo o tráfego da aplicação web disponível publicamente para os serviços internos é encaminhado através da rede virtual. E todos os serviços de back-end, como banco de dados, cache e Cofre de Chaves, não permitem acesso à rede pública.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Lista de verificação de revisão de design para otimização de custos.

  • O ambiente CTFd é efêmero. Você pode facilmente implantar e desmontar o ambiente com os recursos necessários para o evento.

  • Use a Calculadora de Preços do Azure para estimar o custo da implementação da solução.

Excelência operacional

A excelência operacional abrange os processos de operações que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Lista de verificação de revisão de design para Excelência Operacional.

O Azure Monitor integra-se com o Serviço de Aplicações para suportar o registo de todas as instâncias de aplicações web para um único local. As configurações de diagnóstico do monitor coletam logs de contêiner CTFd e os enviam para um workspace do Log Analytics. A partir daí, você pode usar a Linguagem de Consulta Kusto para gravar consultas nos logs agregados.

O Log Analytics e o Monitor são cobrados por gigabyte (GB) de dados ingeridos no serviço. Para mais informações, veja preços do Monitor.

Eficiência de desempenho

A eficiência do desempenho é a capacidade de dimensionar a carga de trabalho para atender às demandas exigidas pelos usuários de maneira eficiente. Para obter mais informações, consulte Lista de verificação de revisão de design para eficiência de desempenho.

Implantar este cenário

Você pode encontrar os arquivos de implantação de solução como infraestrutura Bicep como código (IaC) no GitHub.

A maneira mais fácil de implantar a solução em sua assinatura é usar o botão Implantar no Azure na seção Guia de início rápido do arquivo LEIA-ME principal do repositório.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi escrito originalmente pelos colaboradores a seguir.

Autor principal:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.

Próximas etapas