Kubernetes Hardening

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Bir küme analiz etmek için araçlar

Kubescape, çoklu bulut K8s tek bir pencere sunan, risk analizi, güvenlik uyumluluğu, RBAC görselleştirici ve görüntü zafiyet taraması sağlayan bir K8s açık kaynaklı araçtır. Kubescape, K8s kümelerini, YAML dosyalarını ve HELM grafiklerini tarar, çoklu çerçevelere (örneğin NSA-CISA, MITRE ATT&CK®) göre yanlış yapılandırmaları, yazılım zafiyetlerini ve RBAC (rol-tabanlı erişim kontrolü) ihlallerini CI/CD boru hattının erken aşamalarında tespit eder, risk puanını anında hesaplar ve zaman içindeki risk eğilimlerini gösterir.

kubescape scan --verbose

kube-bench aracı, CIS Kubernetes Benchmark belgelerinde belirtilen kontrolleri çalıştırarak Kubernetes'in güvenli bir şekilde dağıtılıp dağıtılmadığını kontrol eden bir araçtır. Aşağıdaki seçeneklerden birini seçebilirsiniz:

  • kube-bench'i bir konteyner içinden çalıştırabilirsiniz (ana bilgisayarla PID alanını paylaşır)

  • ana bilgisayara kube-bench'i yükleyen bir konteyner çalıştırabilir ve ardından kube-bench'i doğrudan ana bilgisayarda çalıştırabilirsiniz

  • Yayınlar sayfasından en son ikili dosyaları yükleyebilirsiniz,

  • kaynak kodundan derleyebilirsiniz.

kubeaudit aracı, çeşitli güvenlik endişeleri için Kubernetes kümelerini denetlemek için bir komut satırı aracı ve Go paketidir.

Kubeaudit, bir kümedeki bir konteyner içinde çalıştırılıp çalıştırılmadığını tespit edebilir. Eğer öyleyse, kümedeki tüm Kubernetes kaynaklarını denetlemeye çalışacaktır:

kubeaudit all

Bu araç ayrıca tespit edilen sorunları otomatik olarak düzeltmek için autofix argümanına sahiptir.

kube-hunter aracı, Kubernetes kümesindeki güvenlik zayıflıklarını arar. Araç, Kubernetes ortamlarındaki güvenlik sorunlarına yönelik farkındalığı ve görünürlüğü artırmak amacıyla geliştirilmiştir.

kube-hunter --remote some.node.com

Kubei, kubernetes kümelerinin doğru ve hızlı bir şekilde risk değerlendirmesini yapabilen bir zafiyet tarama ve CIS Docker benchmark aracıdır. Kubei, uygulama podları ve sistem podları dahil olmak üzere bir Kubernetes kümesinde kullanılan tüm görüntüleri tarar.

KubiScan, Kubernetes kümesini Kubernetes'in Rol tabanlı erişim kontrolü (RBAC) yetkilendirme modelinde riskli izinler açısından tarayan bir araçtır.

IaC Kodunu Denetleme

Popeye, canlı bir Kubernetes kümesini tarayan ve dağıtılan kaynaklar ve yapılandırmalarla ilgili potansiyel sorunları raporlayan bir yardımcı programdır. Diskte bulunanlara değil, dağıtılanlara dayanarak kümenizi temizler. Kümenizi tarayarak yanlış yapılandırmaları tespit eder ve en iyi uygulamaların yerine getirilmesini sağlar, böylece gelecekteki baş ağrılarını önler. Vahşi doğada bir Kubernetes kümesini işletirken karşılaşılan bilişsel yükü azaltmayı amaçlar. Ayrıca, kümeniz bir ölçüm sunucusu kullanıyorsa, potansiyel kaynak aşırı/eksik tahsislerini raporlar ve kümenizin kapasitesi tükendiğinde sizi uyarır.

KICS, aşağıdaki Altyapı olarak Kod çözümlerinde güvenlik açıkları, uyumluluk sorunları ve altyapı yanlı yapılandırmalarını bulur: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM ve OpenAPI 3.0 özellikleri

Checkov, altyapı olarak kod için bir statik kod analizi aracıdır.

Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless veya ARM Şablonları kullanarak oluşturulan bulut altyapısını tarar ve graf tabanlı tarama kullanarak güvenlik ve uyumluluk yanlı yapılandırmalarını tespit eder.

kube-score, Kubernetes nesne tanımlarınızın statik kod analizini gerçekleştiren bir araçtır.

Kurulum için:

DağıtımKomut / Bağlantı

macOS, Linux ve Windows için derlenmiş ikili dosyalar

Docker

docker pull zegl/kube-score (Docker Hub)

Homebrew (macOS ve Linux)

brew install kube-score

Krew (macOS ve Linux)

kubectl krew install score

İpuçları

Kubernetes PodSecurityContext ve SecurityContext

PodSecurityContext ile Pod'ların güvenlik bağlamını ve SecurityContext ile çalıştırılacak olan konteynerlerin güvenlik bağlamını yapılandırabilirsiniz. Daha fazla bilgi için okuyun:

pageKubernetes SecurityContext(s)

Kubernetes API Sıkılaştırma

Kötü niyetli bir aktör yeterli yetkilere sahipse, Kubernetes Api Sunucusuna erişimi korumak çok önemlidir ve çevreye birçok şekilde zarar verebilir. Erişimi (API Sunucusuna erişimi olan kaynakları beyaz listeye almak ve diğer bağlantıları reddetmek) ve kimlik doğrulama (en az ayrıcalık ilkesini takip etmek) güvence altına almak önemlidir. Ve kesinlikle anonim isteklere izin vermemek.

Ortak İstek Süreci: Kullanıcı veya K8s ServiceAccount –> Kimlik doğrulama –> Yetkilendirme –> Kabul Kontrolü.

İpuçları:

  • Portları kapatın.

  • Anonim erişimi önleyin.

  • NodeRestriction; API'ye belirli düğümlerden erişimi engelleyin.

  • Temel olarak, kubeletlerin düğümlerini izolasyon amacıyla etiketlemek için yöneticilerin ayrıcalıklı olarak kullandığı bir etiket öneki olan node-restriction.kubernetes.io/ ile başlayan etiketleri eklemesini/çıkarmasını/güncellemesini engeller. Ve kubeletlerin bu etiketleri ve etiket öneklerini eklemesine/çıkarmasına/güncellemesine izin verir.

  • Etiketlerle güvenli iş yükü izolasyonunu sağlayın.

  • API erişimine özel podları engelleyin.

  • ApiServer'ın internete maruz kalmasını önleyin.

  • Yetkisiz erişimi RBAC ile engelleyin.

  • ApiServer portunu güvenlik duvarı ve IP beyaz listesi ile koruyun.

SecurityContext Sıkılaştırma

Varsayılan olarak, başka bir kullanıcı belirtilmediğinde bir Pod başlatıldığında kök kullanıcısı kullanılır. Aşağıdaki şablona benzer bir şablonda uygulamanızı daha güvenli bir bağlamda çalıştırabilirsiniz:

apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
runAsNonRoot: true
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: true

Genel Sıkılaştırma

Kubernetes ortamınızı, aşağıdaki gibi sık sık güncellemelisiniz:

  • Güncel bağımlılıklar.

  • Hata ve güvenlik yamaları.

Sürüm döngüleri: Her 3 ayda bir yeni bir küçük sürüm yayınlanır -- 1.20.3 = 1(Büyük).20(Küçük).3(yama)

Bir Kubernetes Kümesini güncellemenin en iyi yolu (buradan) buradan):

  • Master Düğüm bileşenlerini aşağıdaki sırayla güncelleyin:

  • etcd (tüm örnekler).

  • kube-apiserver (tüm kontrol düzlemi ana bilgisayarları).

  • kube-controller-manager.

  • kube-scheduler.

  • Bulut denetleyici yöneticisi, kullanıyorsanız.

  • kube-proxy, kubelet gibi Worker Düğüm bileşenlerini güncelleyin.

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları:

Last updated