En ctf-händelse (Capture the Flag) är en spelifierad övning som du kan använda för att testa tekniska färdigheter som cybersäkerhet, DevOps eller driftsfelsökning. Den här artikeln beskriver hur du använder Azure Platform as a Service (PaaS) och CTFd-plattformen med öppen källkod för att köra en CTF-speltjänst.
Arkitektur
Ladda ned en PowerPoint-fil med den här arkitekturen.
Arbetsflöde
Det här scenariot beskriver en CTF-lösning med öppen källkod baserat på CTFd där kunder kan etablera och konfigurera en speltjänst. Följande arbetsflöde motsvarar föregående diagram:
En CTFd Docker-avbildning hämtas från Azure Container Registry och är redo att betjäna kunder.
CTF-administratörer och -deltagare går till CTF-webbprogrammet från valfri enhet.
CTFd-plattformen är värd för webbprogrammet som en Docker-container som körs på Azure App Service Web App for Containers.
Azure Database for MySQL underhåller CTFd-data, inklusive användare, utmaningar, flaggor och spelspel.
Azure Cache for Redis lagrar tillstånd, användarsessioner och andra CTFd-värden. Den här konfigurationen möjliggör stöd för utskalning till flera CTFd-instanser.
Azure Key Vault underhåller nycklarna för både databasen och cacheminnet. Endast webbprogrammet har åtkomst till hemligheterna.
Ett virtuellt nätverk ansluter Azure-resurser till varandra och ger logisk isolering. I den här arkitekturen kommunicerar webbprogrammet via nätverket med databasen, cachen och Key Vault.
Webbprogrammet skickar loggar till Azure Log Analytics, som aggregerar loggarna från alla instanser så att tjänsterna enkelt kan fråga dem.
Konfiguration av nätverk
Mallen stöder den föregående konfigurationen och en enklare konfiguration utan ett virtuellt nätverk som använder indataparametern vnet . I följande diagram beskrivs lösningen för den enklare konfigurationen. Föregående arbetsflöde innehåller inte steg 7.
Komponenter
App Service Web App for Containers är värd för containerbaserade webbprogram för att aktivera automatisk skalning och hög tillgänglighet utan att behöva hantera infrastrukturen direkt.
Azure Database for MySQL är en molnbaserad relationsdatabastjänst. Den här tjänsten baseras på databasmotorn mySQL community edition.
Azure Cache for Redis förbättrar prestanda och skalbarhet för system som är starkt beroende av serverdelsdatalager. För att förbättra systemeffektiviteten kopierar den tillfälligt data som används ofta till snabb lagring nära programmet.
Key Vault tillhandahåller säker hantering av autentiseringsuppgifter och certifikat.
Log Analytics är ett Azure Monitor Logs-verktyg som du kan använda för informationsdiagnostik, informationsloggning och för att använda en fråga för att sortera, filtrera eller visualisera dessa data. Azure-avgifter för den här tjänsten baserat på förbrukning. Du kan använda Log Analytics som värd för diagnostik- och användningsloggar från alla tjänster i den här lösningen.
Azure-nätverk ger olika nätverksfunktioner så att nätverk kan peer-kopplas till andra virtuella nätverk i Azure.
Du kan upprätta anslutningar med lokala datacenter via Azure ExpressRoute eller plats-till-plats. Den här arkitekturen använder privata slutpunkter för Azure Database for MySQL, Azure Cache for Redis och Key Vault i det virtuella nätverket. Integrering av virtuella Nätverk i App Service är aktiverat i det virtuella nätverket för att säkerställa att alla data endast flödar via det virtuella Azure-nätverket.
Alternativ
Du kan använda Docker Compose-definitionen från CTFd-lagringsplatsen på GitHub. Docker Compose-definitionen etablerar dock nödvändiga webbprogram-, cache- och databastjänster i en enda värddator, som inte är skalbar eller högtillgänglig.
Du kan etablera nödvändiga tjänster som beskrivs i Docker Compose-definitionen från CTFd-lagringsplatsen på GitHub till Azure Kubernetes Service (AKS), men sedan måste du hantera infrastruktur som en tjänst (IaaS).
Du kan använda en betald CTFd-nivå och hämta PaaS med tillagda funktioner i enlighet med den valda planen.
Information om scenario
Capture the Flag är en cybersäkerhetsövning där ett program eller en webbplats innehåller dolda flaggor. Konkurrenter försöker stjäla flaggorna från varandra i attack- och försvarsliknande CTF:er eller från arrangörerna i Jeopardy-liknande utmaningar.
Du kan undervisa och öva andra tekniska metoder som CTF-händelser, men du kanske inte alltid använder termen CTF. Till exempel liknar Microsoft OpenHack-innehållspaketen CTF och dess processer. OpenHack innehåller ämnen som AI-baserad kunskapsutvinning, maskininlärning, DevOps, containrar, serverlös databehandling och Azure-säkerhet.
CTF-ramverk med öppen källkod kan förvandla alla utmaningar till en CTF-händelse med konfigurerbara utmaningssidor, ledartavlor och andra funktioner som du förväntar dig av CTF, till exempel nollkod. Till exempel har Open Web Application Security Project (OWASP) Juice Shop ett CTF-plugin-program som stöder flera vanliga CTF-plattformar som du kan etablera och köra för dina team för att slutföra säkerhetsutbildningen.
En av de mest populära öppna CTF-plattformarna är CTFd. CTFd är byggt med komponenter med öppen källkod och är lätt att använda och anpassa. Du kan välja mellan flera planer för hanterad värd och funktioner, eller distribuera och underhålla din egen miljö. Att hantera en miljö har konsekvenser för kostnader och underhåll. Men det kostar vanligtvis mindre, du äger data och du kan integrera miljön med organisationens nätverk. Använd en PaaS som molnleverantören tillhandahåller för att få kostnadsfri programvara med öppen källkod och enkelt underhåll och IT-hantering jämfört med virtualiserade infrastrukturkomponenter.
Använd vägledningen i den här artikeln och använd Azure PaaS för att konfigurera en lokalt installerad CTFd-miljö. Sedan kan du enkelt underhålla och skala din CTF-miljö så att den passar dina deltagare.
Potentiella användningsfall
Den här lösningen är optimerad för utvecklar-, DevOps- och cybersäkerhetsgrupper och för team som vill köra ett CTF-evenemang.
Alla up-skilling, hack eller bugg bash händelse kan använda den här konfigurationen för att köra CTFd för att hantera och spåra utmaningsbaserade framsteg, teamförlopp eller enskilda framsteg.
Att tänka på
Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.
Säkerhet
Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Checklista för designgranskning för säkerhet.
Granska säkerhetsövervägandena i lämplig Referensarkitektur för App Service-webbprogram.
Azure Database for MySQL krypterar och säkerhetskopierar data automatiskt. Du kan konfigurera Microsoft Defender för molnet för ytterligare minskning av hot. Mer information finns i Aktivera Microsoft Defender för relationsdatabaser med öppen källkod och Svara på defender-aviseringar med öppen källkod.
Åtkomst till Azure Database for MySQL via TLS (Transport Layer Security) krypterar dataströmmen mellan servern och ditt program för att skydda mot datorn i mittenattackerna . Rotcertifikatet måste vara tillgängligt i Docker-avbildningen. Den här lösningen använder en anpassad Docker-avbildning som hämtar certifikatet vid byggtiden. Ett Azure-containerregister hanterar den anpassade avbildningen.
Hanterade identiteter för Azure-resurser ger åtkomst till andra interna resurser till ditt konto. Den här lösningen använder en hanterad identitet för att auktorisera webbprogrammet i App Service för att läsa hemligheter från Key Vault.
Key Vault lagrar autentiseringsuppgifter, till exempel databas eller cachelagring anslutningssträng, som hemligheter. App Service använder hanterade identiteter för att komma åt Key Vault för att undvika att lagra hemligheter i programinställningar eller kod.
Den här arkitekturen ger nätverkssäkerhet i hela designen. All trafik från det offentligt tillgängliga webbprogrammet till de interna tjänsterna dirigeras via det virtuella nätverket. Och alla serverdelstjänster, till exempel databasen, cacheminnet och Key Vault, tillåter inte åtkomst till offentliga nätverk.
Kostnadsoptimering
Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Checklista för designgranskning för kostnadsoptimering.
CTFd-miljön är tillfällig. Du kan enkelt distribuera och sedan demontera miljön med nödvändiga resurser för händelsen.
Om du vill beräkna kostnaden för att implementera den här lösningen använder du priskalkylatorn för Azure.
Driftsäkerhet
Driftskvalitet omfattar de driftsprocesser som distribuerar ett program och håller det igång i produktion. Mer information finns i Checklista för designgranskning för Operational Excellence.
Azure Monitor integreras med App Service för att stödja loggning från alla webbprograminstanser till en enda plats. Övervaka diagnostikinställningar samlar in CTFd-containerloggar och skickar dem till en Log Analytics-arbetsyta. Därifrån kan du använda Kusto-frågespråk för att skriva frågor i de aggregerade loggarna.
Log Analytics och Monitor debiteras per gigabyte (GB) data som matas in i tjänsten. Mer information finns i Övervaka priser.
Prestandaeffektivitet
Prestandaeffektivitet handlar om att effektivt skala arbetsbelastningen baserat på användarnas behov. Mer information finns i Checklista för designgranskning för prestandaeffektivitet.
Den här lösningen kräver minst Basic-nivån, eftersom lägre nivåer inte stöder hybridanslutningar till det virtuella nätverket.
CTFd-webbprogramkomponenten kräver minst en PROCESSOR och en GB RAM per instans.
Mer information om hur du skalar en grundläggande webbapp finns i Skala App Service-appen.
Du kan skala upp Azure Database for MySQL för att uppfylla högre krav. Ändra antalet virtuella kärnor dynamiskt och mängden lagringsutrymme som du behöver för målarbetsbelastningen.
Distribuera det här scenariot
Du hittar lösningsdistributionsfilerna som Bicep-infrastruktur som kod (IaC) på GitHub.
Det enklaste sättet att distribuera lösningen till din prenumeration är att använda knappen Distribuera till Azure i avsnittet Snabbstart i lagringsplatsens huvudsakliga README-fil.
Deltagare
Den här artikeln underhålls av Microsoft. Den skrevs ursprungligen av följande deltagare.
Huvudförfattare:
- Avishay Balter | Huvudansvarig programvaruutvecklingsledare
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- Dokumentation om App Service
- Översikt över App Service
- App Service-nätverksfunktioner
- Integrera en app med ett virtuellt Azure-nätverk
- Tjänstslutpunkter för virtuellt nätverk
- Introduktion till App Service-miljöer
- Privat länkresurs
- Tillförlitlighetsmönster
- Mönster för prestandaeffektivitet