Um evento Capture the Flag (CTF) é um exercício gamificado que você pode usar para testar habilidades de engenharia, como cibersegurança, DevOps ou solução de problemas operacionais. Este artigo descreve como usar a plataforma Azure como um serviço (PaaS) e a plataforma CTFd de código aberto para executar um serviço de jogo CTF.
Arquitetura
Transfira um ficheiro PowerPoint desta arquitetura.
Fluxo de Trabalho
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 trabalho a seguir corresponde ao diagrama anterior:
Uma imagem do Docker CTFd é recuperada do Registro de Contêiner do Azure e está pronta para atender aos clientes.
Os administradores e participantes do CTF acessam o aplicativo Web do CTF de qualquer dispositivo.
A plataforma CTFd hospeda o aplicativo Web como um contêiner do Docker que é executado no Aplicativo Web do Serviço de Aplicativo do Azure para Contêineres.
O Banco de Dados do Azure para MySQL mantém os dados CTFd, incluindo usuários, desafios, sinalizadores e jogadas.
O Cache Redis do Azure armazena o estado, as sessões do usuário e outros valores CTFd. Essa configuração permite o suporte para dimensionamento para várias instâncias CTFd.
O Azure Key Vault mantém as chaves para o banco de dados e o cache. Apenas a aplicação Web tem acesso aos segredos.
A rede virtual liga os recursos do Azure entre si e fornece isolamento lógico. Nessa arquitetura, o aplicativo Web se comunica através da rede com o banco de dados, o cache e o Cofre de Chaves.
O aplicativo Web envia logs para o Azure Log Analytics, que agrega os logs de todas as instâncias para que os serviços possam consultá-los facilmente.
Configuração de rede
O modelo suporta a configuração anterior e 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.
Componentes
O Aplicativo Web do Serviço de Aplicativo para Contêineres hospeda aplicativos Web em contêineres para habilitar o dimensionamento automático e a 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. Este serviço é baseado no mecanismo de banco de dados MySQL community edition.
O Cache Redis do Azure melhora o desempenho e a escalabilidade de sistemas que dependem fortemente de armazenamentos de dados back-end. Para melhorar a eficiência do sistema, ele copia temporariamente os dados acessados com frequência para um armazenamento rápido perto do aplicativo.
O Key Vault fornece gerenciamento seguro de credenciais e certificados.
O 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 este 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 nesta solução.
A rede do Azure fornece diversos recursos 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 do Azure para MySQL, o Cache do Azure para Redis e o Cofre da Chave na rede virtual. A integração de rede virtual do Serviço de Aplicativo é habilitada na rede virtual para garantir que todos os dados fluam somente pela 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 aplicativo Web, cache e banco de dados em uma única máquina host, que não é escalável ou altamente disponível.
Você pode provisionar os serviços necessários descritos na definição do Docker Compose do repositório CTFd no GitHub para o Serviço Kubernetes do Azure (AKS), mas precisa gerenciar a infraestrutura como serviço (IaaS).
Você pode usar um nível pago CTFd e obter o PaaS com recursos adicionais, de acordo com o plano escolhido.
Detalhes do cenário
Capture the Flag é um exercício de cibersegurança 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 no estilo Jeopardy.
Você pode ensinar e praticar outras práticas de engenharia como eventos CTF, mas nem sempre pode 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, tabelas 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 plug-in CTF que suporta várias plataformas CTF comuns que você pode provisionar e executar para que suas equipes concluam o treinamento de segurança.
Uma das plataformas abertas CTF mais populares é a CTFd. CTFd é construído com componentes de código aberto e é fácil de usar e personalizar. Você pode escolher entre vários planos de hospedagem gerenciada e recursos, ou implantar e manter seu próprio ambiente. A gestão de um ambiente tem implicações em termos de custos e manutenção. Mas normalmente custa menos, você é o proprietário dos dados e pode integrar o ambiente à rede da sua organização. Use um PaaS que seu fornecedor de nuvem fornece para obter software gratuito de código aberto e fácil manutenção e manuseio de TI em comparação com componentes de infraestrutura virtualizada.
Aplique as diretrizes neste artigo e use o Azure PaaS para configurar um ambiente CTFd auto-hospedado. Em seguida, você pode facilmente manter e dimensionar seu ambiente CTF para acomodar seus participantes.
Potenciais casos de utilização
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 up-skilling, hack ou bug bash pode usar essa 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
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Segurança
A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. 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 apropriada do aplicativo Web do Serviço de Aplicativo.
O Banco de Dados do Azure para MySQL criptografa e faz backup de dados automaticamente. 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 a alertas de banco de dados de código aberto do Defender.
O acesso ao Banco de Dados do Azure para MySQL sobre TLS (Transport Layer Security) criptografa o fluxo de dados entre o servidor e seu aplicativo para ajudar a proteger contra ataques de máquina no meio . 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êiner do Azure gerencia a imagem personalizada.
As identidades gerenciadas para recursos do Azure fornecem acesso a outros recursos internos à sua conta. Essa solução usa uma identidade gerenciada para autorizar o aplicativo Web no Serviço de Aplicativo a ler segredos do Cofre de Chaves.
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 Cofre da Chave para evitar o armazenamento de segredos nas configurações do aplicativo ou no código.
Esta arquitetura fornece segurança de rede em todo o projeto. Todo o tráfego do aplicativo Web disponível publicamente para os serviços internos é roteado através da rede virtual. E todos os serviços de back-end, como o banco de dados, o cache e o Cofre de Chaves, não permitem acesso à rede pública.
Otimização de custos
A otimização de custos consiste em procurar formas de reduzir 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, em seguida, desmontar o ambiente com os recursos necessários para o evento.
Para estimar o custo de implementação dessa solução, use a calculadora de preços do Azure.
Excelência operacional
A excelência operacional abrange os processos operacionais 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ção para suportar o registo de todas as instâncias de aplicações Web para uma única localização. As configurações de diagnóstico do monitor, coletam logs de contêiner CTFd e os enviam para um espaço de trabalho do Log Analytics. A partir daí, você pode usar a linguagem de consulta Kusto para escrever consultas nos logs agregados.
O Log Analytics e o Monitor são cobrados por gigabyte (GB) de dados ingeridos no serviço. Para obter mais informações, consulte Monitorar preços.
Eficiência de desempenho
Eficiência de desempenho é a capacidade da sua carga de trabalho para dimensionar para satisfazer as exigências que os utilizadores lhe colocam de forma eficiente. Para obter mais informações, consulte Lista de verificação de revisão de projeto para eficiência de desempenho.
Esta solução requer pelo menos a camada Básica, porque as camadas inferiores não suportam conexões híbridas na rede virtual.
O componente de aplicação Web CTFd requer pelo menos uma CPU e um GB de RAM por instância.
Para obter mais informações sobre como dimensionar um aplicativo Web básico, consulte Dimensionando o aplicativo do Serviço de Aplicativo.
Você pode expandir o Banco de Dados do Azure para MySQL para atender a demandas mais altas. Altere dinamicamente o número de vCores e a quantidade de armazenamento necessária para a carga de trabalho de destino.
Implementar este cenário
Você pode encontrar os arquivos de implantação da 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 Início rápido do arquivo LEIA-ME principal do repositório.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelo seguinte colaborador.
Autor principal:
- Avishay Balter - Brasil | Líder Principal de Engenharia de Software
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
- Documentação do Serviço de Aplicativo
- Descrição geral do Serviço de Aplicações
- Recursos de rede do Serviço de Aplicativo
- Integrar a aplicação numa rede virtual do Azure
- Pontos finais de serviço de Rede Virtual
- Introdução ao Ambiente do Serviço de Aplicações
- Recurso de link privado
- Padrões de fiabilidade
- Padrões de eficiência de desempenho
Recursos relacionados
- Arquitetura de linha de base para um aplicativo Web com redundância de zona
- Arquitetura de referência para um aplicativo Web de várias regiões
- Aplicativos Web e móveis escaláveis usando o Banco de Dados do Azure para MySQL
- Design de arquitetura de aplicações Web
- Arquiteto de aplicativo web de comércio eletrônico escalável