Menjalankan layanan capture the Flag game dengan CTFd di Azure PaaS

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

Peristiwa Capture the Flag (CTF) adalah latihan berjudi yang dapat Anda gunakan untuk menguji keterampilan teknik seperti keamanan cyber, DevOps, atau pemecahan masalah operasional. Artikel ini menjelaskan cara menggunakan platform Azure sebagai layanan (PaaS) dan platform CTFd sumber terbuka untuk menjalankan layanan game CTF.

Sistem

Diagram yang memperlihatkan gambaran umum arsitektur komponen Azure yang terlibat dalam sistem CTFd.

Unduh file PowerPoint arsitektur ini.

Alur kerja

Skenario ini menjelaskan solusi CTF sumber terbuka berdasarkan CTFd di mana pelanggan dapat menyediakan dan mengonfigurasi layanan game. Alur kerja berikut ini sesuai dengan diagram sebelumnya:

  1. Gambar Docker CTFd diambil dari Azure Container Registry dan siap untuk melayani pelanggan.

  2. Administrator dan peserta CTF masuk ke aplikasi web CTF dari perangkat apa pun.

  3. Platform CTFd menghosting aplikasi web sebagai kontainer Docker yang berjalan di Aplikasi Web Azure App Service untuk Kontainer.

  4. Azure Database for MySQL mempertahankan data CTFd, termasuk pengguna, tantangan, bendera, dan permainan game.

  5. Azure Cache for Redis menyimpan status, sesi pengguna, dan nilai CTFd lainnya. Konfigurasi ini memungkinkan dukungan untuk penskalaan ke beberapa instans CTFd.

  6. Azure Key Vault mempertahankan kunci untuk database dan cache. Hanya aplikasi web yang memiliki akses ke rahasia.

  7. Jaringan virtual menghubungkan sumber daya Azure satu sama lain dan menyediakan isolasi logis. Dalam arsitektur ini, aplikasi web berkomunikasi melalui jaringan dengan database, cache, dan brankas kunci.

  8. Aplikasi web mengirim log ke Azure Log Analytics, yang menggabungkan log dari semua instans sehingga layanan dapat dengan mudah mengkuerinya.

Konfigurasi jaringan

Templat mendukung konfigurasi sebelumnya dan konfigurasi yang lebih sederhana tanpa jaringan virtual yang menggunakan parameter input vnet . Diagram berikut menjelaskan solusi untuk konfigurasi yang lebih sederhana. Alur kerja sebelumnya tidak menyertakan langkah 7.

Diagram yang memperlihatkan gambaran umum arsitektur komponen Azure yang terlibat dalam sistem CTFd.

Komponen

  • App Service Web App for Containers menghosting aplikasi web kontainer untuk memungkinkan penskalaan otomatis dan ketersediaan tinggi tanpa perlu mengelola infrastruktur secara langsung.

  • Azure Database for MySQL adalah layanan database relasional berbasis cloud. Layanan ini didasarkan pada mesin database edisi komunitas MySQL .

  • Azure Cache for Redis meningkatkan performa dan skalabilitas sistem yang sangat bergantung pada penyimpanan data back-end. Untuk meningkatkan efisiensi sistem, untuk sementara menyalin data yang sering diakses ke penyimpanan cepat di dekat aplikasi.

  • Key Vault menyediakan kredensial dan manajemen sertifikat yang aman.

  • Log Analytics adalah alat Log Azure Monitor yang dapat Anda gunakan untuk diagnostik informasi, pembuatan log informasi, dan untuk menggunakan kueri untuk mengurutkan, memfilter, atau memvisualisasikan data ini. Biaya Azure untuk layanan ini berdasarkan konsumsi. Anda dapat menggunakan Analitik Log untuk menghosting log diagnostik dan penggunaan dari semua layanan dalam solusi ini.

  • Jaringan Azure menyediakan kemampuan jaringan yang beragam sehingga jaringan dapat melakukan peering dengan jaringan virtual lainnya di Azure.

  • Anda dapat membuat koneksi dengan pusat data lokal melalui Azure ExpressRoute atau situs-ke-situs. Arsitektur ini menggunakan titik akhir privat untuk Azure Database for MySQL, Azure Cache for Redis, dan Key Vault dalam jaringan virtual. Integrasi jaringan virtual App Service diaktifkan di jaringan virtual untuk memastikan bahwa semua data hanya mengalir melalui jaringan virtual Azure.

Alternatif

  • Anda dapat menggunakan definisi Docker Compose dari repositori CTFd di GitHub. Tetapi definisi Docker Compose menyediakan aplikasi web, cache, dan layanan database yang diperlukan ke dalam satu komputer host, yang tidak dapat diskalakan atau sangat tersedia.

  • Anda dapat menyediakan layanan yang diperlukan yang dijelaskan dalam definisi Docker Compose dari repositori CTFd di GitHub ke Azure Kubernetes Service (AKS), tetapi kemudian Anda harus mengelola infrastruktur sebagai layanan (IaaS).

  • Anda dapat menggunakan tingkat berbayar CTFd dan mendapatkan PaaS dengan fitur tambahan, sesuai dengan paket yang dipilih.

Detail skenario

Capture the Flag adalah latihan keamanan cyber di mana program atau situs web berisi bendera tersembunyi. Pesaing mencoba mencuri bendera satu sama lain dalam CTF gaya serangan dan pertahanan atau dari penyelenggara dalam tantangan gaya Jeopardy.

Anda dapat mengajar dan mempraktikkan praktik teknik lain sebagai peristiwa CTF, tetapi Anda mungkin tidak selalu menggunakan istilah CTF. Misalnya, paket konten Microsoft OpenHack mirip dengan CTF dan prosesnya. OpenHack mencakup topik seperti penambangan pengetahuan yang didukung AI, pembelajaran mesin, DevOps, kontainer, komputasi tanpa server, dan keamanan Azure.

Kerangka kerja CTF sumber terbuka dapat mengubah tantangan apa pun menjadi peristiwa CTF dengan halaman tantangan yang dapat dikonfigurasi, papan pemimpin, dan fitur lain yang Anda harapkan dari CTF, seperti kode nol. Misalnya, Open Web Application Security Project (OWASP) Juice Shop memiliki plugin CTF yang mendukung beberapa platform CTF umum yang dapat Anda provisikan dan jalankan bagi tim Anda untuk menyelesaikan pelatihan keamanan.

Salah satu platform CTF terbuka yang paling populer adalah CTFd. CTFd dibangun dengan komponen sumber terbuka dan mudah digunakan dan disesuaikan. Anda dapat memilih dari beberapa paket untuk hosting dan fitur terkelola, atau menyebarkan dan memelihara lingkungan Anda sendiri. Mengelola lingkungan memiliki implikasi biaya dan pemeliharaan. Tetapi biasanya biayanya lebih murah, Anda memiliki data, dan Anda dapat mengintegrasikan lingkungan dengan jaringan organisasi Anda. Gunakan PaaS yang disediakan vendor cloud Anda untuk mendapatkan perangkat lunak sumber terbuka gratis dan pemeliharaan yang mudah dan penanganan TI dibandingkan dengan komponen infrastruktur virtual.

Terapkan panduan dalam artikel ini, dan gunakan Azure PaaS untuk menyiapkan lingkungan CTFd yang dihost sendiri. Kemudian Anda dapat dengan mudah memelihara dan menskalakan lingkungan CTF Anda untuk mengakomodasi peserta Anda.

Kemungkinan kasus penggunaan

Solusi ini dioptimalkan untuk pengembang, DevOps, dan komunitas keamanan cyber, dan untuk tim yang ingin menjalankan peristiwa KKP.

Setiap peristiwa up-skilling, hack, atau bug bash dapat menggunakan penyiapan ini untuk menjalankan CTFd untuk mengelola dan melacak kemajuan berbasis tantangan, kemajuan tim, atau kemajuan individu.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Keamanan.

  • Tinjau pertimbangan keamanan dalam arsitektur referensi aplikasi web App Service yang sesuai.

  • Azure Database for MySQL secara otomatis mengenkripsi dan mencadangkan data. Anda dapat mengonfigurasi Microsoft Defender untuk Cloud untuk mitigasi ancaman lebih lanjut. Untuk informasi selengkapnya, lihat Mengaktifkan Pertahanan Microsoft untuk database relasional sumber terbuka dan Merespons pemberitahuan database sumber terbuka Defender.

  • Akses ke Azure Database for MySQL melalui Keamanan Lapisan Transportasi (TLS) mengenkripsi aliran data antara server dan aplikasi Anda untuk membantu melindungi dari mesin di serangan tengah . Sertifikat akar harus tersedia dalam gambar Docker. Solusi ini menggunakan gambar Docker kustom yang mengambil sertifikat pada waktu build. Registri kontainer Azure mengelola gambar kustom.

  • Identitas terkelola untuk sumber daya Azure menyediakan akses ke sumber daya internal lainnya ke akun Anda. Solusi ini menggunakan identitas terkelola untuk mengotorisasi aplikasi web di App Service untuk membaca rahasia dari Key Vault.

  • Key Vault menyimpan kredensial, seperti database atau string koneksi cache, sebagai rahasia. App Service menggunakan identitas terkelola untuk mengakses Key Vault untuk menghindari penyimpanan rahasia dalam pengaturan atau kode aplikasi.

  • Arsitektur ini menyediakan keamanan jaringan di seluruh desain. Semua lalu lintas dari aplikasi web yang tersedia untuk umum ke layanan internal dirutekan melalui jaringan virtual. Dan semua layanan back-end, seperti database, cache, dan brankas kunci, tidak mengizinkan akses jaringan publik.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Pengoptimalan Biaya.

  • Lingkungan CTFd bersifat ephemeral. Anda dapat dengan mudah menyebarkan dan kemudian membongkar lingkungan dengan sumber daya yang diperlukan untuk peristiwa tersebut.

  • Untuk memperkirakan biaya penerapan solusi ini, gunakan kalkulator harga Azure.

Keunggulan operasional

Keunggulan operasional mencakup proses operasi yang menyebarkan aplikasi dan membuatnya tetap berjalan dalam produksi. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Keunggulan Operasional.

Azure Monitor terintegrasi dengan App Service untuk mendukung pengelogan dari semua instans aplikasi web ke satu lokasi. Memantau pengaturan diagnostik mengumpulkan log kontainer CTFd dan mengirimkannya ke ruang kerja Analitik Log. Dari sana, Anda dapat menggunakan Bahasa Kueri Kusto untuk menulis kueri di seluruh log agregat.

Log Analytics and Monitor ditagih per gigabyte (GB) data yang diserap ke dalam layanan. Untuk informasi selengkapnya, lihat Memantau harga.

Efisiensi kinerja

Efisiensi performa adalah kemampuan beban kerja Anda untuk diskalakan agar memenuhi permintaan yang diberikan oleh pengguna dengan cara yang efisien. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Efisiensi Performa.

  • Solusi ini memerlukan setidaknya tingkat Dasar, karena tingkat yang lebih rendah tidak mendukung koneksi hibrid ke jaringan virtual.

  • Komponen aplikasi web CTFd memerlukan setidaknya satu CPU dan satu GB RAM per instans.

  • Untuk informasi selengkapnya tentang cara menskalakan aplikasi web dasar, lihat Menskalakan aplikasi App Service.

  • Anda dapat meningkatkan skala Azure Database for MySQL untuk memenuhi tuntutan yang lebih tinggi. Ubah jumlah vCore secara dinamis dan jumlah penyimpanan yang Anda butuhkan untuk beban kerja target Anda.

Menyebarkan skenario ini

Anda dapat menemukan file penyebaran solusi sebagai infrastruktur Bicep sebagai kode (IaC) di GitHub.

Cara term mudah untuk menyebarkan solusi ke langganan Anda adalah dengan menggunakan tombol Sebarkan ke Azure di bagian Mulai Cepat dari file README utama repositori.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya