Uygulamalar daha fazla dağıtıldıkça, geleneksel izleme ve güvenlik araçları ayak uyduramıyor. Bu makalede, mezun CNCF silium ve alt projesi Tetragon tarafından kullanıldığında EBPF’nin, yazılım faturaları (SBOMS) ile birleştiğinde, modern sistemler için içgörü ve güvenlik geri bildirimi döngüsü sağlayabileceğini araştırıyor.
Bir konteyner görüntüsü ve SBOM’u oluşturacağız. Daha sonra başlatacağız, bir ihlali simüle edeceğiz ve Tetragon ile EBPF tabanlı kurulumumuzun sorunu nasıl yakaladığını göreceğiz. Bu, SBOM’un olayı hata ayıklamak ve anlamak için nasıl kullanılabileceğini gösterecektir.
EBPF odaklı gözlemlenebilirliği ve SBOM bağlamını birleştirme
EBPF (Genişletilmiş Berkeley Paket Filtresi), ağ performansını artırmak, derin gözlemlenebilirliği sağlamak ve güvenliği güçlendirmek için benimsenen bir Linux çekirdek teknolojisidir. Cilyum, Falco ve Pixie gibi CNCF projeleri için etkinleştirici bir teknoloji. Örneğin Google, Netflix, Cloudflare ve Microsoft gibi teknoloji şirketleri EBPF: Meta kullanıyor.
Yazılım bileşenlerinin bir envanteri sağlayan SBOM, bu sistemleri anlamada ve güvence altına almak için önemli bir bileşendir. Broadcom-vmware, Salesforce ve Red Hat gibi işletmeler tarafından kullanılan ve Google Cloud Services’a entegre edilen bulut yerel BuildPacks, SBOM’ları üretmek için otomatik bir yol sunuyor.
EBPF tabanlı araçların ve SBOM’ların kombinasyonu güvenlik için neden yararlıdır? EBPF, Cilium’un Tetragon gibi araçların sistem çağrıları, ağ trafiği ve işlemleri gibi çekirdek düzeyinde faaliyetleri düşük ek yüklü olarak gözlemlemesine izin verir. Bu, kapların içinde neler olduğuna dair ham veriler sağlar.
Bununla birlikte, ham veriler genellikle güvenlik araştırmaları için yararlı olması için bağlam gerektirir. Bir SBOM, bu bağlamı kapsayıcı içindeki her yazılım bileşenini ve sürümünü listeleyerek sağlar.
İzleme kapları
Bu öğretici, Kubernetes’te EBPF tabanlı güvenlik gözlemlenebilirliği için Cilium ve Tetragon’un nasıl kullanılacağını ve bir SBOM’un çalışma zamanı olaylarını bağlamsallaştırmaya nasıl yardımcı olduğunu gösterir.
Önkoşul:
1. Adım: Konteyner Oluşturun ve SBOM Üretin
Uygulama imajımızı ve SBOM’umuzu üretmek için Paketo BuildPacks kullanacağız. SBOM’lar çeşitli yollarla oluşturulabilirken, Paketo BuildPacks aracılığıyla Cloud Native BuildPacks gibi bir sistem, bunları yapı boru hattınıza dahil etmek için otomatik bir yöntem sağlar. Uygulamanızın Kaynak Kod Dizini’nde, çalıştırın:
pack build my-java-app \
--builder paketobuildpacks/builder-jammy-full \
--path . \
--sbom-output-dir ./sbom-output
Bu yaratır my-java-app:latest
yerel olarak ve SBOM’ları çıktı ./sbom-output
.
2. Adım: Kubernetes’e Dağıtım
Yaratmak my-app-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-java-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-java-app
template:
metadata:
labels:
app: my-java-app
spec:
containers:
- name: my-java-app-container
image: my-java-app
imagePullPolicy: IfNotPresent # Needed for local images with Kind
ports:
- containerPort: 8080
Kind gibi yerel kümeler için önce görüntüyü yükleyin:
kind load docker-image my-java-app:latest
Sonra dağıtım uygulayın:
kubectl apply -f my-app-deployment.yaml
Adım 3: Cilium CNI ve Tetragon’u kurun
Cilium küme ağı sağlar ve Tetragon’un ana projesidir. Dümen repo’sunu ekleyin ve güncelleyin ve yükleyin:
helm repo add cilium https://helm.cilium.io/
helm repo update
helm install cilium cilium/cilium --version 1.15.5 --namespace kube-system
Tetragon, güvenlik gözlemlenebilirliği için EBPF kullanır. Isovalent Helm Repo’yu ekleyin ve güncelleyin ve yükleyin:
helm repo add isovalent https://helm.isovalent.com
helm repo update
helm install tetragon isovalent/tetragon --version 1.16.1 --namespace kube-system
Tetragon kapsüllerinin çalıştığını doğrulayın (biraz zaman alabilir): kubectl get pods -n kube-system -l app.kubernetes.io/name=tetragon
4. Adım: Tetragon ile sistem etkinliğini gözlemleyin
Akış tetragon olayları. Bunu ayrı bir terminalde çalıştırmaya devam edin:
kubectl exec -it -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact
Adım 5: Bir anomali simüle edin
Gerçek dünya saldırıları genellikle beklenmedik bir ikili, beklenmedik giden çağrıları içerir. Bunu kullanarak simüle edeceğiz curl
. Bunun senin my-java-app
(veya içindeki bir bileşen) Verileri dışarı atmaya veya tehlikeye atıldıktan sonra bir C2 sunucusuna başvurmaya çalışan.
Uygulama kapsülünüzün adını alın: kubectl get pods -l app=my-java-app
Ardından, bu komutu çalıştırın (değiştirin
kubectl exec -it
'curl -s -L --connect-timeout 5 https://www.sylvainkalache.com -o /dev/null'
Bu, içeriği getirmeye ve atmaya çalışıyor https://www.sylvainkalache.com
. Anahtar, bu ağ etkinliğinin kabınız için karaktersiz olabileceğidir.
Adım 6: Tetragon ile tespit edin ve bağlam için SBOM’dan yararlanın
Tetra GetEvents akışınız şu gibi olayları göstermelidir:
process default/my-java-app-deployment-85b5674f45-vj6l5 /bin/sh -c "curl -s -L --connect-timeout 5 https://www.sylvainkalache.com -o /dev/null"
process default/my-java-app-deployment-85b5674f45-vj6l5 /usr/bin/curl -s -L --connect-timeout 5 https://www.sylvainkalache.com -o /dev/null
Bu Tetragon olaylarından giden ağ isteği tanımlanır. Kabuk yürütmesini görüyoruz, curl
Process ve TCP Bağlantı Olayını 443 numaralı bağlantı noktasındaki harici bir siteye.
Tetragon’un bulgularını SBOM ile ilişkilendirmek: Bir Log4shell örneği
Log4shell güvenlik açığı (CVE-2021-44228) gibi bir senaryo düşünün. Bir saldırgan bunu bir Java uygulamasında kullanır ve Java işleminin beklenmedik bir giden JNDI/LDAP ağ bağlantısı yapmasına neden olur. EBPF kullanarak Tetragon, bu ağ etkinliğini Java uygulama sürecinizden algılar.
1. Adımda üretilen SBOM’un bağlam sağladığı yerdir:
1. Uyarı Bağlamsallaştırma: Tetragon, sizinden giden bir bağlantıyı işaretler. my-java-app
LDAP/RMI bağlantı noktasında bilinmeyen bir harici IP’ye işlem.
2. SBOM muayenesi: SBOM’a danışıyorsunuz my-java-app
bir Java uygulaması olduğundan, bağımlılıklarını “Log4J-Core” (Log4Shell’deki savunmasız bileşen) ararsınız. SBOM, herhangi birinin tam versiyonunu ortaya çıkarır. log4j-core
Kütüphane mevcut.
3. Güvenlik Açığı Onayı: Savunmasızsa, bu sürümü CVE-2021-44228’e karşı çapraz referans log4j-core
listelenir, bu beklenmedik ağ çağrısının Log4shell sömürüsünden kaynaklandığını göstermektedir.
4. Etki Değerlendirmesi ve Hedefli Yanıt: SBOM, hangi uygulamaların savunmasız Log4J sürümünü kullandığını doğrular. Java sürecinin tehlikeye atıldığını anlıyorsunuz.
Konteyner güvenliğinin daha net bir görünümü
Bu örnek çok önemsiz bir örnektir ve bir üretim kurulumunun çok daha sofistike olması gerekir, ancak bulut yerli güvenlik ekibinin kaplarını izlemek için kullanabileceği hedefi ve yolu gösterir.
Bu, diğer araçlarla elde edilebilirken, Cilium bir endüstri standardı haline geldi ve Google, Cisco ve Redhat dahil olmak üzere projeye 500’den fazla katkıda bulunan şirketin yanı sıra Datadog, Cloudflare ve Suse gibi hızla büyüyen orta büyüklükteki işletmeler. Öğrenmeye ve yatırım yapmaya değer sağlam bir proje.