7 puan yazan ironlung 2023-10-05 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Bu içeriğin amacı Kubernetes güvenliğinin önemine dikkat çekmektir
  • Secret’in saklandığı yerler
    • Kullanıcı kubectl komutuyla bir kaynak tanımladığında Kubernetes, bu kaynağı tanımlayan manifest dosyasını oluşturup etcd’ye kaydeder
    • Kullanıcı bir Secret kaynağı tanımladığında Secret de etcd’ye kaydedilir
    • Kullanıcı Secret’i volume ya da ortam değişkeni olarak okuyan bir pod oluşturduğunda Secret ilgili pod’a kaydedilir
    • Secret’in saklandığı etcd ile Secret’in kullanıldığı pod hacklenirse, Secret’te saklanan parola öğrenilebilir
  • Ön hazırlık
    • kubeadm ile küme oluşturma
    • Uygulama için önceden üç kaynak oluşturma: Secret credit-card, pod app1, pod app2
  • etcd hackleme
    • etcd: Kubernetes kümesinin durumunu saklayan bir anahtar-değer veri deposu. Kubernetes’te tanımlanan tüm bilgiler burada saklanır. Secret de etcd incelenerek öğrenilebilir
    • 1.1 etcdctl ile parola bulma
      • kube-apiserver manifestini inceleyip etcd sunucusunun certificate authority, açık anahtar ve özel anahtarını alma
      • etcd’yi rahat yönetmeye yarayan etcdctl komutu üzerinden parolayı bulma
    • 1.2 etcd DB’sine doğrudan erişip alma
      • etcd’nin çalıştığı süreci bulup, o sürecin tüm verilerini tarayarak parolayı bulma
        • ps aux | grep etcd - etcd PID’sini alma
        • ll /proc/<pid>/fd çıktısında db yazan link dosyasını görme
        • cat /proc/<pid>fd/<db> | grep -A10 -B10 credit-card komutuyla önceden oluşturulan parolayı bulma
  • pod hackleme
    • kubectl exec ile alma
      • Kubernetes’i sorgulamak için uygun yetki varsa kubectl komutuyla parola alınabilir
    • Konteynere doğrudan erişip alma
      • Worker node üzerinde Docker komutlarını serbestçe kullanabiliyorsanız parola sızdırılabilir
      • pod app1’in planlandığı worker node’da konteyneri bulup, konteynere tanımlı ortam değişkenleri listesini çıkarabilirsiniz
        • crictl pods - app1’in Pod ID’sini bulma
        • crictl ps - Pod ID’ye karşılık gelen konteyneri bulma
        • crictl inspect <container id> | grep -A16 env - ilgili konteyneri ayrıntılı inceleyip ortam değişkenlerini çıkarma
    • Secret’e erişim yetkisi olan ServiceAccount ile alma
      • Pod’un ServiceAccount’u Secret’e erişim yetkisine sahipse pod içinden API çağrısıyla parola bulunabilir
  • Yukarıda anlatılan hacklemeyi engelleme yöntemleri
    • “En az ayrıcalık ilkesi”ne uyarak gereksiz yetkileri olan service account’lar oluşturmamak
    • Sosyal mühendislik gibi tehditlere karşı kullanıcı kimlik bilgilerinin açığa çıkmamasını sağlamak
    • EncryptionConfiguration kaynağı üzerinden etcd şifrelemesi

Henüz yorum yok.

Henüz yorum yok.