Falco
Falco adalah alat keamanan runtime cloud native untuk sistem operasi Linux. Ini dirancang untuk mendeteksi dan memperingatkan perilaku abnormal dan potensi ancaman keamanan secara real-time.
Pada intinya, Falco adalah agen pemantauan dan deteksi kernel yang mengamati peristiwa, seperti syscall, berdasarkan aturan khusus. Falco dapat meningkatkan peristiwa ini dengan mengintegrasikan metadata dari runtime container dan Kubernetes. Peristiwa yang dikumpulkan dapat dianalisis secara off-host di SIEM atau sistem data lake.
Falco, awalnya dibuat oleh Sysdig, adalah proyek lulusan di bawah Cloud Native Computing Foundation (CNCF) yang digunakan dalam produksi oleh berbagai organisasi.
Untuk informasi teknis terperinci dan wawasan tentang ancaman dunia maya yang dapat dideteksi Falco, kunjungi situs web resmi Falco.
Untuk informasi lengkap mengenai pembaruan dan perubahan terkini pada proyek, silakan merujuk ke Log Perubahan. Selain itu, kami telah mendokumentasikan Proses Rilis untuk menghadirkan Falco versi baru.
Falco Repo: Mendukung Inti Proyek Falco
Ini adalah repositori Falco utama yang berisi kode sumber untuk membangun biner Falco. Dengan memanfaatkan lib dan file konfigurasi falco.yaml, repositori ini menjadi dasar fungsionalitas Falco. Repositori Falco saling berhubungan erat dengan repositori inti berikut:
- falcosecurity/libs: Pustaka Falco adalah kunci dari operasi fundamentalnya, yang merupakan bagian terbesar dari kode sumber biner Falco dan menyediakan fitur-fitur penting seperti driver kernel.
- falcosecurity/rules: Berisi aturan resmi untuk Falco, yang menyediakan aturan deteksi yang telah ditentukan sebelumnya untuk berbagai ancaman keamanan dan perilaku abnormal.
- falcosecurity/plugins: Plugin Falco memfasilitasi integrasi dengan layanan eksternal, memperluas kemampuan Falco melampaui syscall dan event container, dan dirancang untuk berkembang dengan fungsi khusus pada rilis mendatang.
- falcosecurity/falcoctl: Utilitas baris perintah untuk mengelola dan berinteraksi dengan Falco.
Untuk informasi lebih lanjut, kunjungi pusat resmi The Falco Project: falcosecurity/evolution. Ini memberikan wawasan dan informasi berharga tentang repositori proyek.
Memulai dengan Falco
Tinjau dengan cermat dan ikuti Dokumentasi Resmi.
Pertimbangan dan panduan bagi pengguna Falco:
Memahami dependensi: Menilai lingkungan tempat Anda akan menjalankan Falco dan mempertimbangkan versi dan arsitektur kernel.
Tentukan tujuan deteksi ancaman: Identifikasi dengan jelas ancaman yang ingin Anda deteksi dan evaluasi kekuatan dan keterbatasan Falco.
Pertimbangkan kinerja dan biaya: Nilai overhead kinerja komputasi dan selaraskan dengan administrator sistem atau SRE. Anggaran sesuai.
Pilih pendekatan build dan kustomisasi: Putuskan antara build Falco open source atau membuat pipeline build kustom. Sesuaikan proses pembangunan dan penerapan seperlunya, termasuk menggabungkan pengujian atau pendekatan unik, untuk memastikan penerapan yang tangguh dengan siklus penerapan yang cepat.
Integrasikan dengan tujuan keluaran: Integrasikan Falco dengan SIEM, sistem data lake, atau tujuan keluaran pilihan lainnya untuk membangun landasan yang kuat untuk analisis data yang komprehensif dan memungkinkan alur kerja respons insiden yang efektif.
Lingkungan Demo
Lingkungan demo disediakan melalui file penulisan buruh pelabuhan yang dapat dimulai pada host buruh pelabuhan yang mencakup falco, falcosidekick, falcosidekick-ui dan database redis yang diperlukan. Untuk informasi lebih lanjut lihat bagian penulisan buruh pelabuhan
Bagaimana Berkontribusi
Silakan merujuk ke panduan Berkontribusi dan Kode Etik untuk informasi lebih lanjut tentang cara berkontribusi.
Bergabunglah dengan Komunitas
Untuk terlibat dengan Proyek Falco, silakan kunjungi repositori Komunitas untuk mendapatkan informasi lebih lanjut dan cara untuk terlibat.
Jika Anda memiliki pertanyaan tentang Falco atau kontribusinya, jangan ragu untuk mengajukan masalah atau menghubungi pengelola Falco dan anggota komunitas untuk mendapatkan bantuan.
Bagaimana cara menjangkaunya?
- Bergabunglah dengan saluran #falco di Kubernetes Slack.
- Bergabunglah dengan milis Falco.
- Ajukan masalah atau buat permintaan fitur.
Komitmen terhadap Keamanan Falco Sendiri
Laporan lengkap berbagai audit keamanan dapat ditemukan di sini.
Selain itu, Anda dapat merujuk ke bagian keamanan falco dan libs untuk pembaruan mendetail tentang saran dan kebijakan keamanan.
Untuk melaporkan kerentanan keamanan, harap ikuti proses komunitas yang diuraikan dalam dokumentasi yang ada di sini.
Bagaimana nasib Falco selanjutnya?
Terus ikuti perkembangan kemampuan Falco dengan menjelajahi Peta Jalan Falco, yang memberikan wawasan tentang fitur-fitur yang saat ini sedang dikembangkan dan direncanakan untuk rilis mendatang.
Lisensi
Falco dilisensikan kepada Anda di bawah lisensi sumber terbuka Apache 2.0.
Pengujian
Perluas Petunjuk Pengujian
Falco's Build Falco from source adalah sumber daya yang dapat digunakan untuk memahami cara membuat Falco dari sumber. Selain itu, repositori falcosecurity/libs menawarkan informasi tambahan yang berharga tentang pengujian dan debugging perpustakaan dan driver kernel yang mendasari Falco.
Berikut ini contoh perintah cmake
yang akan mengaktifkan semua yang Anda perlukan untuk semua pengujian unit repositori ini:
cmake
-DUSE_BUNDLED_DEPS=ON
-DBUILD_LIBSCAP_GVISOR=ON
-DBUILD_BPF=ON
-DBUILD_DRIVER=ON
-DBUILD_FALCO_MODERN_BPF=ON
-DCREATE_TEST_TARGETS=ON
-DBUILD_FALCO_UNIT_TESTS=ON .. ;
Bangun dan jalankan rangkaian pengujian unit:
nproc= $( grep processor /proc/cpuinfo | tail -n 1 | awk ' {print $3} ' ) ;
make -j $(( $nproc - 1 )) falco_unit_tests ;
# Run the tests
sudo ./unit_tests/falco_unit_tests ;
Secara opsional, buat driver pilihan Anda dan uji jalankan biner Falco untuk melakukan tes manual.
Terakhir, Proyek Falco telah memindahkan uji regresi Falco ke falcosecurity/pengujian.
Mengapa Falco ada di C++ dan bukan di Go atau {bahasa}?
Perluas Informasi
- Baris kode pertama di dasar Falco ditulis beberapa waktu lalu, di mana Go belum memiliki tingkat kematangan dan adopsi yang sama seperti saat ini.
- Model eksekusi Falco bersifat sekuensial dan mono-thread karena persyaratan statefulness dari alat tersebut, sehingga sebagian besar nilai jual runtime Go yang terkait dengan konkurensi tidak akan dimanfaatkan sama sekali.
- Kode Falco berhubungan dengan pemrograman tingkat rendah di banyak tempat (misalnya beberapa header dibagikan dengan probe eBPF dan modul Kernel), dan kita semua tahu bahwa menghubungkan Go dengan C adalah mungkin tetapi membawa banyak kompleksitas dan pengorbanan. .
- Sebagai alat keamanan yang dimaksudkan untuk menggunakan throughput kejadian per detik yang sangat tinggi, Falco perlu meningkatkan kinerja di semua jalur panas saat runtime dan memerlukan kontrol mendalam pada alokasi memori, yang tidak dapat disediakan oleh runtime Go (ada juga pengumpulan sampah yang terlibat) .
- Meskipun Go tidak sesuai dengan persyaratan teknik inti Falco, kami masih berpikir bahwa Go bisa menjadi kandidat yang baik untuk menulis ekstensi Falco melalui sistem plugin. Inilah alasan utama kami memberikan perhatian khusus dan prioritas tinggi pada pengembangan plugin-sdk-go.
- Go bukan merupakan persyaratan untuk memiliki biner yang tertaut secara statis. Faktanya, kami menyediakan build Falco yang sepenuhnya statis sejak beberapa tahun. Satu-satunya masalah adalah sistem plugin tidak dapat didukung dengan model perpustakaan dinamis yang kami miliki saat ini.
- Sistem plugin diharapkan dapat mendukung berbagai bahasa, sehingga kami mempertahankan basis kode yang kompatibel dengan C adalah strategi terbaik untuk memastikan kompatibilitas lintas bahasa yang maksimal.
- Secara umum, plugin memiliki persyaratan/dependensi GLIBC karena plugin tersebut memiliki pengikatan C tingkat rendah yang diperlukan untuk pemuatan dinamis. Solusi potensial di masa depan adalah dengan mendukung plugin untuk ditautkan secara statis pada waktu kompilasi dan dirilis sebagai paket dalam biner Falco. Meskipun belum ada upaya yang dimulai dalam arah ini, ini akan menyelesaikan sebagian besar masalah yang Anda laporkan dan juga akan menghasilkan biner yang benar-benar statis. Tentu saja, ini tidak lagi kompatibel dengan pemuatan dinamis, tetapi ini mungkin merupakan solusi yang layak untuk varian Falco yang dibuat secara statis.
- Keamanan memori jelas menjadi perhatian dan kami berusaha sebaik mungkin untuk menjaga tingkat kualitas yang tinggi meskipun C++ cukup rawan kesalahan. Misalnya, kami mencoba menggunakan smart pointer bila memungkinkan, kami membangun perpustakaan dengan pembersih alamat di CI kami, kami menjalankan Falco melalui Valgrind sebelum setiap rilis, dan memiliki cara untuk melakukan stress-test untuk mendeteksi regresi kinerja atau penggunaan memori yang aneh ( misalnya https://github.com/falcosecurity/event-generator). Selain itu, kami juga memiliki pihak ketiga yang mengaudit basis kode dari waktu ke waktu. Tentu saja semua hal ini tidak memberikan sudut pandang keselamatan yang sempurna, namun kami berusaha memaksimalkan peluang kami. Go pasti akan membuat hidup kita lebih mudah dari sudut pandang ini, namun sejauh ini pengorbanannya tidak pernah menjadikannya sepadan karena poin-poin di atas.
- Basis kode C++ dari falcosecurity/libs, yang merupakan inti dari Falco, cukup besar dan kompleks. Memindahkan semua kode tersebut ke bahasa lain akan menjadi upaya besar yang memerlukan banyak sumber daya pengembangan dan dengan kemungkinan kegagalan dan kemunduran yang tinggi. Oleh karena itu, pendekatan kami sejauh ini adalah memilih pemfaktoran ulang dan pemolesan kode, hingga kami mencapai tingkat stabilitas, kualitas, dan modularitas yang optimal, pada bagian kode tersebut. Hal ini akan memungkinkan pengembangan lebih lanjut menjadi lebih lancar dan lebih layak di masa depan.
Sumber daya
- Tata Kelola
- Kode Etik
- Pedoman Pengelola
- Daftar Pemelihara
- Pedoman Repositori
- Daftar Repositori
- Daftar Pengadopsi
- Instal dan Operasikan
- Pemecahan masalah