Kubernetes SecurityContext(s)

AWS hacklemeyi sıfırdan kahraman olmak için öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

PodSecurityContext

Dokümantasyondan:

Bir Pod'un güvenlik bağlamını belirtirken birkaç özniteliği kullanabilirsiniz. Savunma amaçlı güvenlik açısından aşağıdakileri göz önünde bulundurmalısınız:

  • runASNonRoot'u True olarak ayarlamak

  • runAsUser'ı yapılandırmak

  • Mümkünse, seLinuxOptions ve seccompProfile ile izinleri sınırlamak

  • runAsGroup ve supplementaryGroups aracılığıyla ayrıcalık grubu erişimini VERMEMEK

fsGroup tamsayı

Bir Pod'daki tüm konteynerlara uygulanan özel bir ek grup. Bazı hacim türleri, Kubelet'in bu hacmin sahipliğini Pod tarafından sahiplenilen bir şekilde değiştirmesine izin verir: 1. Sahip olan GID FSGroup olur 2. setgid biti ayarlanır (hacimde oluşturulan yeni dosyalar FSGroup'a ait olur) 3. İzin bitleri rw-rw---- ile OR'lanır. Ayarlanmamışsa, Kubelet hiçbir hacmin sahipliğini ve izinlerini değiştirmez

Bu, Pod içinde görünmeden önce hacmin sahipliğini ve iznini değiştirme davranışını tanımlar.

runAsGroup tamsayı

Konteyner sürecinin giriş noktasını çalıştırmak için kullanılacak GID. Ayarlanmamışsa, çalışma zamanı varsayılanı kullanılır. Ayrıca SecurityContext içinde de ayarlanabilir.

runAsNonRoot mantıksal

Konteynerin bir kök kullanıcı olarak çalışmaması gerektiğini belirtir. Eğer true ise, Kubelet, konteynerin UID 0 (kök) olarak çalışmadığından emin olmak için görüntüyü çalışma zamanında doğrular ve konteyneri başlatamazsa hata verir.

runAsUser tamsayı

Konteyner sürecinin giriş noktasını çalıştırmak için kullanılacak UID. Belirtilmemişse, görüntü meta verilerinde belirtilen kullanıcıya varsayılan olarak ayarlanır.

seLinuxOptions SELinuxOptions seLinux hakkında daha fazla bilgi

Tüm konteynerlara uygulanacak SELinux bağlamı. Belirtilmemişse, konteyner çalışma zamanı her konteyner için rastgele bir SELinux bağlamı tahsis eder.

seccompProfile SeccompProfile Seccomp hakkında daha fazla bilgi

Bu Pod'daki konteynerler tarafından kullanılacak seccomp seçenekleri.

supplementalGroups tamsayı dizisi

Her konteynerde ilk olarak çalıştırılan sürece uygulanan grupların listesi, konteynerin birincil GID'sine ek olarak.

sysctls Sysctl dizi sysctl hakkında daha fazla bilgi

Sysctls, Pod için kullanılan isim alanlı sysctl'lerin bir listesini tutar. Konteyner çalışma zamanı tarafından desteklenmeyen sysctl'lerle (tarafından) çalıştırılan Pod'lar başlatılamaz.

Tüm konteynerlara uygulanan Windows özel ayarlar. Belirtilmemişse, bir konteynerin SecurityContext içindeki seçenekler kullanılır.

## SecurityContext

Dokümantasyondan:

Bu bağlam, konteyner tanımları içinde ayarlanır. Savunma odaklı bir güvenlik açısından aşağıdaki hususları göz önünde bulundurmalısınız:

  • allowPrivilegeEscalationFalse olarak ayarlayın

  • Hassas yetenekleri eklemeyin (ve ihtiyaç duymadıklarınızı kaldırın)

  • privilegedFalse olarak ayarlayın

  • Mümkünse, readOnlyFilesystem'i True olarak ayarlayın

  • runAsNonRoot'u True olarak ayarlayın ve bir runAsUser belirleyin

  • Mümkünse, seLinuxOptions ve seccompProfile'ı belirterek izinleri sınırlayın

  • runAsGroup üzerinden privilege group erişimini VERMEYİN.

Unutmayın ki, SecurityContext ve PodSecurityContext içinde ayarlanan özelliklerde, SecurityContext'te belirtilen değer önceliklidir.

AllowPrivilegeEscalation, bir işlemin ebeveyn işleminden daha fazla ayrıcalık kazanıp kazanamayacağını kontrol eder. Bu bool, no_new_privs bayrağının konteyner işlemine ayarlanıp ayarlanmayacağını doğrudan kontrol eder. AllowPrivilegeEscalation, konteyner Privileged olarak çalıştırıldığında veya CAP_SYS_ADMIN'e sahip olduğunda her zaman true'dur.

capabilities Capabilities Capabilities hakkında daha fazla bilgi

Konteynerler çalıştırılırken eklenecek/düşürülecek yetenekler. Varsayılan olarak, varsayılan yetenek kümesi kullanılır.

privileged boolean

Ayrıcalıklı modda konteyneri çalıştırın. Ayrıcalıklı konteynerlerdeki işlemler, temelde ana bilgisayardaki root ile eşdeğerdir. Varsayılan olarak false'dur.

procMount string

procMount, konteynerler için kullanılacak proc mount türünü belirtir. Varsayılan olarak, DefaultProcMount kullanılır ve salt okunur yolları ve maskelenmiş yolları için konteyner çalışma zamanı varsayılanlarını kullanır.

Bu konteynerin salt okunur bir kök dosya sistemi olup olmadığını belirtir. Varsayılan olarak false'dur.

runAsGroup integer

Konteyner işlemi giriş noktasını çalıştırmak için GID'yi belirtir. Ayarlanmamışsa, çalışma zamanı varsayılanı kullanılır.

runAsNonRoot boolean

Konteynerin root kullanıcısı olarak çalışmaması gerektiğini belirtir. True ise, Kubelet, konteynerin başlatılamaması için çalışma zamanında görüntüyü UID 0 (root) olarak çalıştırmamasını doğrulayacaktır.

runAsUser integer

Konteyner işlemi giriş noktasını çalıştırmak için UID'yi belirtir. Ayarlanmamışsa, görüntü meta verilerinde belirtilen kullanıcıya varsayılan olarak ayarlanır.

seLinuxOptions SELinuxOptions seLinux hakkında daha fazla bilgi

Konteynere uygulanacak SELinux bağlamını belirtir. Belirtilmemişse, konteyner çalışma zamanı her konteyner için rastgele bir SELinux bağlamı tahsis eder.

Bu konteyner tarafından kullanılacak seccomp seçenekleri.

Tüm konteynerlere uygulanan Windows özel ayarları.

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated