Düzenle

Aracılığıyla paylaş


Azure PaaS'ta CTFd ile Capture the Flag oyun hizmetini çalıştırma

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

Bayrağı Yakala (CTF) olayı siber güvenlik, DevOps veya operasyonel sorun giderme gibi mühendislik becerilerini test etmek için kullanabileceğiniz bir oyunlaştırılmış alıştırmadır. Bu makalede, bir CTF oyun hizmetini çalıştırmak için Hizmet olarak Azure platformunun (PaaS) ve açık kaynak CTFd platformunun nasıl kullanılacağı açıklanmaktadır.

Mimari

CTFd sisteminde yer alan Azure bileşenlerinin mimarisine genel bakışı gösteren diyagram.

Bu mimarinin PowerPoint dosyasını indirin.

İş Akışı

Bu senaryoda, müşterilerin bir oyun hizmeti sağlayıp yapılandırabileceği CTFd'yi temel alan açık kaynaklı bir CTF çözümü açıklanmaktadır. Aşağıdaki iş akışı önceki diyagrama karşılık gelir:

  1. Azure Container Registry'den bir CTFd Docker görüntüsü alınır ve müşterilere hizmet etmeye hazırdır.

  2. CTF yöneticileri ve katılımcılar herhangi bir cihazdan CTF web uygulamasına gider.

  3. CTFd platformu, web uygulamasını Kapsayıcılar için Azure Uygulaması Service Web App üzerinde çalışan bir Docker kapsayıcısı olarak barındırır.

  4. MySQL için Azure Veritabanı kullanıcılar, zorluklar, bayraklar ve oyun oyunları dahil olmak üzere CTFd verilerini korur.

  5. Redis için Azure Cache durum, kullanıcı oturumları ve diğer CTFd değerlerini depolar. Bu yapılandırma, birden çok CTFd örneğine ölçeği genişletme desteği sağlar.

  6. Azure Key Vault hem veritabanının hem de önbelleğin anahtarlarını tutar. Gizli dizilere yalnızca web uygulaması erişebilir.

  7. Sanal ağ, Azure kaynaklarını birbirine bağlar ve mantıksal yalıtım sağlar. Bu mimaride web uygulaması veritabanı, önbellek ve anahtar kasasıyla ağ üzerinden iletişim kurar.

  8. Web uygulaması günlükleri Azure Log Analytics'e gönderir ve bu da tüm örneklerden günlükleri toplayarak hizmetlerin bunları kolayca sorgulamasını sağlar.

Ağ yapılandırması

Şablon, önceki yapılandırmayı ve sanal ağ giriş parametresini kullanan bir sanal ağ olmadan daha basit bir yapılandırmayı destekler. Aşağıdaki diyagramda daha basit yapılandırmaya yönelik çözüm açıklanmaktadır. Önceki iş akışı 7. adımı içermez.

CTFd sisteminde yer alan Azure bileşenlerinin mimarisine genel bakışı gösteren diyagram.

Bileşenler

  • Kapsayıcılar için App Service Web App, altyapıyı doğrudan yönetmeye gerek kalmadan otomatik ölçeklendirmeyi ve yüksek kullanılabilirliği etkinleştirmek için kapsayıcılı web uygulamalarını barındırır.

  • MySQL için Azure Veritabanı bulut tabanlı bir ilişkisel veritabanı hizmetidir. Bu hizmet, MySQL topluluk sürümü veritabanı altyapısını temel alır.

  • Redis için Azure Cache, arka uç veri depolarına yoğun bir şekilde bağlı olan sistemlerin performansını ve ölçeklenebilirliğini artırır. Sistem verimliliğini artırmak için, sık erişilen verileri geçici olarak uygulamanın yakınındaki hızlı depolama alanına kopyalar.

  • Key Vault güvenli kimlik bilgileri ve sertifika yönetimi sağlar.

  • Log Analytics , bilgi tanılama, bilgi günlüğü ve bu verileri sıralamak, filtrelemek veya görselleştirmek için sorgu kullanmak için kullanabileceğiniz bir Azure İzleyici Günlükleri aracıdır. Bu hizmet için tüketime göre Azure ücretleri. Bu çözümdeki tüm hizmetlerden tanılama ve kullanım günlüklerini barındırmak için Log Analytics'i kullanabilirsiniz.

  • Azure ağı , ağların Azure'daki diğer sanal ağlarla eşlenmesi için çeşitli ağ özellikleri sağlar.

  • Azure ExpressRoute veya siteden siteye aracılığıyla şirket içi veri merkezleriyle bağlantı kurabilirsiniz. Bu mimaride sanal ağ içindeki MySQL için Azure Veritabanı, Redis için Azure Cache ve Key Vault için özel uç noktalar kullanılır. App Service sanal ağ tümleştirmesi , tüm verilerin yalnızca Azure sanal ağı üzerinden akmasını sağlamak için sanal ağda etkinleştirilir.

Alternatifler

  • GitHub'daki CTFd deposundan Docker Compose tanımını kullanabilirsiniz. Ancak Docker Compose tanımı, gerekli web uygulaması, önbellek ve veritabanı hizmetlerini ölçeklenebilir veya yüksek oranda kullanılabilir olmayan tek bir konak makinede sağlar.

  • GitHub'daki CTFd deposundan Azure Kubernetes Service'e (AKS) Docker Compose tanımında açıklanan gerekli hizmetleri sağlayabilirsiniz, ancak ardından hizmet olarak altyapıyı (IaaS) yönetmeniz gerekir.

  • CtFd ücretli katmanını kullanabilir ve seçilen plana uygun olarak ek özelliklerle PaaS'ı alabilirsiniz.

Senaryo ayrıntıları

Capture the Flag , bir programın veya web sitesinin gizli bayraklar içerdiği bir siber güvenlik alıştırmasıdır. Rakipler saldırı ve savunma tarzı CTF'lerde ya da Jeopardy tarzı zorluklarda düzenleyicilerden bayrakları birbirlerinden çalmaya çalışırlar.

Diğer mühendislik uygulamalarını CTF olayları olarak öğretebilir ve uygulayabilirsiniz, ancak her zaman CTF terimini kullanmayabilirsiniz. Örneğin, Microsoft OpenHack içerik paketleri CTF ve süreçlerine benzer. OpenHack yapay zeka destekli bilgi madenciliği, makine öğrenmesi, DevOps, kapsayıcılar, sunucusuz bilgi işlem ve Azure güvenliği gibi konuları içerir.

Açık kaynak CTF çerçeveleri, ctf'den beklediğiniz sıfır kod gibi yapılandırılabilir sınama sayfaları, öncü panolar ve diğer özelliklerle herhangi bir sınamayı bir CTF olayına dönüştürebilir. Örneğin Open Web Application Security Project (OWASP) Juice Shop'ta, ekiplerinizin güvenlik eğitimini tamamlaması için sağlayıp çalıştırabileceğiniz birçok yaygın CTF platformlarını destekleyen bir CTF eklentisi vardır.

En popüler açık CTF platformlarından biri CTFd'dir. CTFd, açık kaynak bileşenlerle oluşturulmuş olup kullanımı ve özelleştirmesi kolaydır. Yönetilen barındırma ve özellikler için çeşitli planlar arasından seçim yapabilir veya kendi ortamınızı dağıtıp koruyabilirsiniz. Bir ortamı yönetmenin maliyet ve bakım açısından etkileri vardır. Ancak genellikle daha düşük maliyetlidir, verilerin sahibi siz olursunuz ve ortamı kuruluşunuzun ağıyla tümleştirebilirsiniz. Sanallaştırılmış altyapı bileşenleriyle karşılaştırıldığında bulut satıcınızın ücretsiz, açık kaynak yazılım ve kolay bakım ve BT işleme elde etmek için sağladığı bir PaaS kullanın.

Bu makaledeki yönergeleri uygulayın ve şirket içinde barındırılan bir CTFd ortamı ayarlamak için Azure PaaS'ı kullanın. Böylece CTF ortamınızı katılımcılarınızı barındıracak şekilde kolayca koruyabilir ve ölçeklendikleyebilirsiniz.

Olası kullanım örnekleri

Bu çözüm geliştirici, DevOps ve siber güvenlik toplulukları ve CTF olayı çalıştırmak isteyen ekipler için iyileştirilmiştir.

Her türlü beceri, hack veya hata eğlencesi olayı, sınama tabanlı ilerleme durumunu, ekip ilerleme durumunu veya bireysel ilerleme durumunu yönetmek ve izlemek için CTFd'yi çalıştırmak için bu kurulumu kullanabilir.

Dikkat edilmesi gereken noktalar

Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Güvenlik

Güvenlik, kasıtlı saldırılara ve değerli verilerinizin ve sistemlerinizin kötüye kullanılmasına karşı güvence sağlar. Daha fazla bilgi için bkz . Güvenlik için tasarım gözden geçirme denetim listesi.

  • Uygun App Service web uygulaması başvuru mimarisindeki güvenlik konularını gözden geçirin.

  • MySQL için Azure Veritabanı verileri otomatik olarak şifreler ve yedekler. Tehditleri daha fazla azaltmak için Bulut için Microsoft Defender yapılandırabilirsiniz. Daha fazla bilgi için bkz . Açık kaynak ilişkisel veritabanları için Microsoft Defender'ı etkinleştirme ve Defender açık kaynak veritabanı uyarılarını yanıtlama.

  • Aktarım Katmanı Güvenliği (TLS) üzerinden MySQL için Azure Veritabanı erişimi, ortadaki saldırılarda makineye karşı korumaya yardımcı olmak için sunucu ile uygulamanız arasındaki veri akışını şifreler. Kök sertifika Docker görüntüsünde kullanılabilir olmalıdır. Bu çözüm, derleme zamanında sertifikayı getiren özel bir Docker görüntüsü kullanır. Özel görüntüyü bir Azure kapsayıcı kayıt defteri yönetir.

  • Azure kaynakları için yönetilen kimlikler, hesabınıza diğer iç kaynaklara erişim sağlar. Bu çözüm, App Service'teki web uygulamasını Key Vault'tan gizli dizileri okuma yetkisi vermek için yönetilen bir kimlik kullanır.

  • Key Vault, veritabanı veya önbellek bağlantı dizesi gibi kimlik bilgilerini gizli dizi olarak depolar. App Service, uygulama ayarlarında veya kodda gizli dizileri depolamaktan kaçınmak için Key Vault'a erişmek için yönetilen kimlikleri kullanır.

  • Bu mimari, tasarım boyunca ağ güvenliği sağlar. Genel kullanıma açık web uygulamasından iç hizmetlere giden tüm trafik sanal ağ üzerinden yönlendirilir. Ayrıca veritabanı, önbellek ve anahtar kasası gibi tüm arka uç hizmetleri genel ağ erişimine izin vermez.

Maliyet iyileştirme

Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz . Maliyet İyileştirme için tasarım gözden geçirme denetim listesi.

  • CTFd ortamı kısa ömürlüdür. Olay için gerekli kaynaklarla ortamı kolayca dağıtabilir ve kaldırabilirsiniz.

  • Bu çözümü uygulama maliyetini tahmin etmek için Azure fiyatlandırma hesaplayıcısını kullanın.

Operasyonel mükemmellik

Operasyonel mükemmellik, bir uygulamayı dağıtan ve üretimde çalışır durumda tutan operasyon süreçlerini kapsar. Daha fazla bilgi için bkz . Operasyonel Mükemmellik için tasarım gözden geçirme denetim listesi.

Azure İzleyici, tüm web uygulaması örneklerinden tek bir konuma günlüğe kaydetmeyi desteklemek için App Service ile tümleşir. Tanılama ayarlarını izleme CTFd kapsayıcı günlüklerini toplar ve bunları bir Log Analytics çalışma alanına gönderir. Buradan, toplanan günlüklerde sorgu yazmak için Kusto Sorgu Dili kullanabilirsiniz.

Log Analytics ve İzleyici, hizmete alınan gigabayt (GB) veri başına faturalandırılır. Daha fazla bilgi için bkz . Fiyatlandırmayı izleme.

Performans verimliliği

Performans verimliliği, kullanıcılar tarafından anlamlı bir şekilde yerleştirilen talepleri karşılamak amacıyla iş yükünüzü ölçeklendirme becerisidir. Daha fazla bilgi için bkz . Performans Verimliliği için tasarım gözden geçirme denetim listesi.

  • Düşük katmanlar sanal ağa karma bağlantıları desteklemediğinden bu çözüm en azından Temel katmanı gerektirir.

  • CTFd web uygulaması bileşeni, örnek başına en az bir CPU ve bir GB RAM gerektirir.

  • Temel bir web uygulamasını ölçeklendirme hakkında daha fazla bilgi için bkz . App Service uygulamasını ölçeklendirme.

  • Daha yüksek talepleri karşılamak için MySQL için Azure Veritabanı ölçeğini artırabilirsiniz . Hedef iş yükünüz için gereken sanal çekirdek sayısını ve depolama miktarını dinamik olarak değiştirin.

Bu senaryoyu dağıtın

Çözüm dağıtım dosyalarını Kod olarak Bicep altyapısı (IaC) olarak GitHub'da bulabilirsiniz.

Çözümü aboneliğinize dağıtmanın en kolay yolu, deponun ana README dosyasının Hızlı Başlangıç bölümündeki Azure'a Dağıt düğmesini kullanmaktır.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunan tarafından yazılmıştır.

Asıl yazar:

Genel olmayan LinkedIn profillerini görmek için LinkedIn'de oturum açın.

Sonraki adımlar