• इस सामग्री का उद्देश्य Kubernetes security के महत्व के प्रति जागरूक करना है
  • Secret कहाँ स्टोर होता है
    • जब उपयोगकर्ता kubectl कमांड के जरिए resource declare करता है, तो Kubernetes इस resource को परिभाषित करने वाली manifest file बनाकर etcd में स्टोर करता है
    • जब उपयोगकर्ता Secret resource declare करता है, तो Secret भी etcd में स्टोर होता है
    • जब उपयोगकर्ता ऐसा pod बनाता है जो Secret को volume या environment variable के रूप में पढ़ता है, तो Secret उस pod में भी स्टोर होता है
    • जहाँ Secret स्टोर होता है उस etcd और जिस pod में secret इस्तेमाल हो रहा है, दोनों को हैक कर लिया जाए तो Secret में स्टोर किया गया पासवर्ड पता किया जा सकता है
  • पहले से तैयारी
    • kubeadm से cluster बनाना
    • प्रैक्टिस के लिए पहले से तीन resources बनाए गए: Secret credit-card, pod app1, pod app2
  • etcd हैक करना
    • etcd: Kubernetes cluster की state स्टोर करने वाला key-value data store. Kubernetes में declare की गई सारी जानकारी यहाँ स्टोर होती है. Secret भी etcd को query करके देखा जा सकता है
    • 1.1 etcdctl से पासवर्ड खोजना
      • kube-apiserver manifest देखकर etcd server का certificate authority, public key, private key हासिल करना
      • etcd को आसानी से operate करने वाले etcdctl कमांड के जरिए पासवर्ड खोजना
    • 1.2 etcd DB को सीधे access करके निकालना
      • जिस process पर etcd चल रहा है उसे ढूँढकर, उस process के सभी data को खंगालते हुए पासवर्ड खोजना
        • ps aux | grep etcd - etcd PID प्राप्त करना
        • ll /proc/<pid>/fd देखने पर db लिखा हुआ link file दिखाई देती है
        • cat /proc/<pid>/fd/<db> | grep -A10 -B10 credit-card कमांड के जरिए पहले से बनाया गया पासवर्ड खोजना
  • pod हैक करना
    • kubectl exec के जरिए निकालना
      • अगर Kubernetes को query करने की उचित permission हो, तो kubectl कमांड के जरिए पासवर्ड निकाला जा सकता है
    • container में सीधे access करके निकालना
      • अगर worker node पर Docker कमांड्स स्वतंत्र रूप से चलाए जा सकते हों, तो पासवर्ड निकाला जा सकता है
      • जिस worker node पर pod app1 schedule हुआ है, वहाँ container ढूँढकर container में registered environment variables की सूची निकाली जा सकती है
        • crictl pods - app1 का Pod ID खोजना
        • crictl ps - Pod ID के अनुरूप container खोजना
        • crictl inspect <container id> | grep -A16 env - उस container की detailed जाँच करके environment variables निकालना
    • Secret तक access permission वाले ServiceAccount से निकालना
      • अगर pod के ServiceAccount को Secret तक access permission है, तो pod के अंदर API call करके पासवर्ड पता किया जा सकता है
  • ऊपर बताए गए हैकिंग तरीकों को रोकने के उपाय
    • 'least privilege principle' के अनुसार अनावश्यक permissions वाले service account न बनाना
    • social engineering जैसी धमकियों के लिए users के credentials उजागर न हों, इसका ध्यान रखना
    • EncryptionConfiguration resource के जरिए etcd encryption

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.