Attack methods and defenses on Kubernetes
Μέθοδοι επίθεσης και άμυνας στο Kubernetes
Master Thesis
Συγγραφέας
Μυτιληνάκης, Παναγιώτης
Mytilinakis, Panagiotis
Ημερομηνία
2020-06Επιβλέπων
Νταντογιάν, ΧριστόφοροςDadoyan, Christoforos
Προβολή/ Άνοιγμα
Λέξεις κλειδιά
Kubernetes ; Docker ; Docker security ; Kubernetes securityΠερίληψη
Ο αυξανόμενος ρυθμός υιοθέτησης των containers και των container orchestration εργαλείων στο cloud και στις on premises υποδομές εγείρει μια σειρά ερωτημάτων σχετικά με την ασφάλειά τους. Το Kubernetes σε συνδυασμό με το Docker είναι μακράν, η πιο συχνά χρησιμοποιούμενη λύση για την εφαρμογή φορτίων εργασίας σε containers. Το Kubernetes χωρίζεται σε δύο επίπεδα το επίπεδο ελέγχου και το επίπεδο δεδομένων. Το επίπεδο ελέγχου περιλαμβάνει τα στοιχεία που απαιτούνται για τη λειτουργία και τη διαχείριση της κατάστασης ενός Kubernetes cluster, ενώ το επίπεδο δεδομένων περιλαμβάνει τα στοιχεία που είναι υπεύθυνα για τα πραγματικά φορτία εργασίας. Επιπλέον, το Kubernetes περιλαμβάνει πολλά αντικείμενα που είναι απαραίτητα για την περιγραφή της επιθυμητής κατάστασης ενός cluster. Σε αυτή τη διπλωματική εργασία, πραγματοποιήθηκαν συγκεκριμένες επιθέσεις σε ένα Kubernetes cluster, οι οποίες μπορούν να χωριστούν σε τέσσερις κατηγορίες. (α) Επιθέσεις στη μηχανή και τα επιμέρους τμήματα του Kubernetes. (β) Επιθέσεις στο επίπεδο δικτύου του Kubernetes όπου υπό συνθήκες, είναι δυνατές οι επιθέσεις MITM και DNS spoofing. (γ) Επιθέσεις που αφορούν τα containers μέσα σε ένα pod και πώς ένας εισβολέας μπορεί να εισάγει κακόβουλο κώδικα και να τον ανεβάσει, σε μια container registry καθώς και containers με μία ή περισσότερες ευπάθειες που μπορούν να εκμεταλλευτούν. (δ) Τέλος, επιθέσεις που βασίζονται σε ευπάθειες στον κώδικα υποδομής (infrastructure as code) και μπορεί να εκμεταλλευτεί ένας επιτιθέμενος. Αντίστοιχα, με τις επιθέσεις, μια σειρά από άμυνες συστάθηκαν ως αντίμετρα, με γνώμονα το επίπεδο στο οποίο μπορεί να πραγματοποιηθεί κάθε μία από τις επιθέσεις. Για τις επιθέσεις που αφορούν τη μηχανή του Kubernetes, συνιστάται το kube-bench ως ένα εργαλείο που εντοπίζει λανθασμένες ρυθμίσεις και σημεία εισόδου, τα οποία μπορεί να εκμεταλλευτεί ένας εισβολέας. Προκειμένου να προστατευτεί το επίπεδο του δικτύου, η χρήση των network policies υποκαθιστά ένα τείχος προστασίας επιπέδου 3 του OSI σε σύγκριση με μια τυπική υποδομή, συμπληρωματικά με τη χρήση ενός service mesh που λειτουργεί στο επίπεδο 7. Τα containers μέσα σε ένα pod μπορούν να σαρωθούν προτού μεταφορτωθούν σε μια registry. Σε αυτή τη διπλωματική εργασία χρησιμοποιήθηκε ο σαρωτής Clair για το σκοπό αυτό. Τέλος, προτάθηκαν οι Pod Security policies για να αποκλείσουν την ανάπτυξη ευάλωτου κώδικα.