Falco

Elman Badalov
4 min readMay 30, 2021

Selamlar, yine ben😌. Yeni ve son dönemlerde sık sık ismini duyduğumuz Falco yapısı ile karşınızdayım. Bugün sizler için Falco tool’dan bahsedeceğim ve “Falco nedir?”, “İş hayatımızda nerede kullanırız?”, “DevOps sahasında bize nasıl yardımcı olabilir?” gibi soruları cevaplayacağım. Sonrasında Hands-on çalışma ile kendi local ortamımıza nasıl entegre edeceğimizi göstereceğim. Hazır mısınız? Hadi başlayalım 😊

Falco nedir ?

Falco çeşitli ortamları güvence altına almamıza yardımcı olan açık kaynaklı güvenlik tool’dur. Aynı zamanda Cloud Engineering alanında sıkça kullandığımız Kubernetes yapısı için tehdit algılama motorudur. Falco, 2016 yılında Sysdig tarafından oluşturulmuştur. Falco, Kubernetes cluster’da çalışma zamanı beklenmeyen uygulama davranışlarını tespit eder ve tehditler hakkında uyarılar verir.

Neden Falco?

Bildiğiniz üzere Kubernetes cluster’da çalışırken best practice çözümler arıyoruz. Tabiki bu çözümü bir de Security tarafında sağlamamız gerekiyor. Çünkü cluster üzerinde uygulamalar çalışıyor ve burada bulunan podlarda yapılacak her tehlikeli işlemden haberdar olmalıyız. Çünkü uygulama değil de cluster bazlı sorunlar zamanı müşterilerimiz en iyi şekilde bilgilendirmek için doğru log’a sahip olmamız gerekiyor. Müşteri memnuniyetini arttırmak için log’lama işlemlerini titizlikle yapıyoruz. Falco bizlere Linux kernel, container, Kubernetes ve başka log’ları kontrol etmemize ve tehlikeli kullanımlara karşı alarm üretmemize yardımcı oluyor. Özellikle Kubernetes ortamında container’lerin güvenliğini korumamıza olanak sağlıyor. Hatta Kubernetes ortamında “thread detection” konusunda bizlere hizmet sunuyor. Kubernetes container’da çalışma zamanı tehdit bulgularını yakalamak için Kubernetes audit loglarını kullanıyor ve burada aldığı sonuçlar üzerine alarm oluşturuyor. Bu sayede kimlerin cluster’a giriş yaptığını ve orada hangi tehlikeli işlemleri yaptığını görüntüleyebiliriz ve bu alarmları Slack kanalına entegre ederek bu çalışmalardan herkesin haberdar olmasını sağlayabiliriz. Buyüzden pod üzerinde yapılan her tehlikeli adımı loglamak ve alarm üretmek için Falco tercih edilebilir. Falco kolayca çalışma ortamımıza entegre edilebilir ve kullanımı çok basittir.

Şimdi Falco tool’nu kullanarak hangi konularda detection yapabileceğimize daha detaylı bakalım:

1- Container’a giriş yapılması
2- Host path’de volume mount işlemlerinin yapılması
3- /etc/shadow gibi önemli dosyalarda okuma veya düzenleme
işlemlerinin yapılması
4- Yeni paket kurulumunun yapılması
5- Network tarafında yeni bir portun oluşturulma işlemlerinin
yapılması
6- ve b.

Hands-On

Falco kurulumunun yapılması için öncelikli olarak Helm’in kurulu olması gerekmektedir.

Falco kurulumu:

1- helm repo add falcosecurity
https://falcosecurity.github.io/charts
Çıktı: “falcosecurity” has been added to your repositories

2- helm repo update
Çıktı: Hang tight while we grab the latest from your chart
repositories…
…Successfully got an update from the “falcosecurity” chart
repository
Update Complete. ⎈Happy Helming!⎈

3- helm install falco falcosecurity/falco
Çıktı:
NAME: falco
LAST DEPLOYED: Fri Oct 16 07:06:24 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:Falco agents are spinning up on each node in your cluster. After a few seconds, they are going to start monitoring your containers looking for security issues. No further action should be required.

4- kubectl get pod -o wide
Çıktı:
falco-cgvxc 1/1 Running 0 6m53s kind-control-plane
falco-f9526 1/1 Running 0 6m53s kind-worker2
falco-rx2gj 1/1 Running 0 6m53s kind-worker

Başarılı bir şekilde Falco kurulumunu yapmış bulunmaktayız. Şimdi ise aracımızı test etmek için aşağıdaki adımları eksiksiz yapmamız gerekmektedir.

TEST:

Test işlemlerine başlayabilmemiz için nginx tipinde bir pod ayağa kaldırmamız gerekiyor.

1- kubectl run nginx — image=nginx
Çıktı:
nginx 1/1 Running 0 2m kind-worker

Artık nginx tipinde oluşturduğumuz pod’a giriş sağladığımızda ve orada yukarıda belirtilen tehlikeli adımları yaptığımızda falco pod’larında log’a düşecektir. Logları bu şekilde kontrol edebiliriz.

Alarm oluşturma

Falco’da alarm oluşturmak için ilk önce çıktının tipini belirlememiz gerekiyor ve buna göre falco.yaml’da gerekli yerleri enable yaparak kolayca alarm oluşturabiliriz.

Standart çıktı için falco.yaml’da bu adımları yapmamız gerekiyor.

stdout_output:
enabled: true

Çıktı: 10:20:05.408091526: Warning Sensitive file opened for reading by
non-trusted program (user=root command=cat /etc/shadow file=/etc/shadow)

File için:

file_output:
enabled: true
keep_alive: false
filename: ./events.txt

Bu sayede sonuçları bir file dosyasına yazabiliriz.

Email göndermek için:

program_output:
enabled: true
keep_alive: false
program: mail -s “Falco Notification”
someone@example.com

Slack kanalına bildirim göndermek için:

# Whether to output events in json or text
json_output: true

program_output:
enabled: true
program: “jq ‘{text: .output}’ | curl -d @- -X POST
https://hooks.slack.com/services/XXX"

Slack kanalının bilgilerini ekledikten sonra aşağıdaki gibi alarm alabileceğiz.

Bugün sizler için Falco yapısını adım adım anlatmaya çalıştım. Umarım keyifle okuyacağınız ve beğeneceğiniz bir yazı olmuştur. Şimdiden keyifli okumalar… 😊

Yazının ingilizce versiyonunu okumak için lütfen aşağıdaki linke tıklayınız:

https://thebadalov.medium.com/falco-ee8512bf0bbe

--

--