Διερεύνηση της ασφάλειας (που λείπει) των τυπικών εγκαταστάσεων Docker και Kubernetes

Διερεύνηση της ασφάλειας (που λείπει) των τυπικών εγκαταστάσεων Docker και Kubernetes
Δουλεύω στην πληροφορική για περισσότερα από 20 χρόνια, αλλά κατά κάποιο τρόπο δεν έφτασα ποτέ στα κοντέινερ. Θεωρητικά κατάλαβα πώς ήταν δομημένα και πώς λειτουργούσαν. Επειδή όμως δεν τα είχα συναντήσει ποτέ στην πράξη, δεν ήμουν σίγουρος πώς ακριβώς γύριζαν και γύριζαν τα γρανάζια κάτω από το καπό τους.

Εξάλλου, δεν είχα ιδέα πώς ήταν η ασφάλειά τους. Αλλά και πάλι, η θεωρία ακούγεται ωραία, και το παλιό τραγούδι "όσο αυξάνεται η ασφάλεια, η χρηστικότητα μειώνεται" έμεινε στο μυαλό μου. Σκέφτηκα λοιπόν ότι αφού όλα γίνονται τόσο εύκολα με κοντέινερ, τότε η ασφάλεια εκεί είναι κατώτερη. Όπως αποδείχθηκε, είχα δίκιο.

Για να ξεκινήσω γρήγορα, έγραψα μαθήματα Μαύρο καπέλο 2020 με τίτλο "Από τα κουρέλια στα πλούτη: διείσδυση και προστασία των περιβαλλόντων Docker Swarm και Kubernetes».

Το μάθημα, το οποίο διδάσκουν οι Sheila A. Berta και Sol Ozzan, ξεκίνησε αμέσως με μια περιγραφή του τρόπου λειτουργίας των κοντέινερ Docker και του ταξιδιού που κάνουν όταν αναπτύσσονται στο Kubernetes. Αυτό ήταν ένα εντελώς πρακτικό μάθημα - οι μαθητές έπρεπε να εγκαταστήσουν το Docker και το microk8 στους μηχανές τους πριν από το μάθημα - ένας πολύ καλός τρόπος για να δουν πώς αλληλεπιδρούν τα εργαλεία μεταξύ τους, να βρουν αδύνατα σημεία και, το πιο σημαντικό, να προσπαθήσουν να τα μπλοκάρουν.

Δυστυχώς, παρόλο που τα μαθήματα υποσχέθηκαν να γίνω «πρίγκιπας» μετά από δύο ημέρες, ένιωσα ότι όλα μόλις ξεκινούσαν και είχα ακόμα πολλά να μάθω.

Διερεύνηση της ασφάλειας (που λείπει) των τυπικών εγκαταστάσεων Docker και Kubernetes

Πριν βουτήξω στις υψηλές παρατηρήσεις μου, είναι σημαντικό να εξηγήσω τι είναι ένα δοχείο. Στον κόσμο της ανάπτυξης, θεωρείται φυσιολογικό ο κώδικας που είναι γραμμένος στο προσωπικό σας μηχάνημα να λειτουργεί τέλεια, αλλά όταν προσπαθείτε να τον εκτελέσετε κάπου σε έναν διακομιστή, απλά δεν λειτουργεί. Τα κοντέινερ προσπαθούν να ξεπεράσουν αυτό το πρόβλημα παρέχοντας αυτόνομα μηχανήματα που μπορείτε εύκολα να μετακινήσετε από τον έναν διακομιστή στον άλλο, γνωρίζοντας ότι θα λειτουργούν πάντα. Όπως υποδηλώνει το όνομα, περιέχουν τον κώδικα, τις βιβλιοθήκες και άλλο λογισμικό που απαιτείται για να ολοκληρωθεί η εργασία. Ο Kubernetes, από την άλλη, είναι πλατφόρμα ενορχήστρωσης για κοντέινερ. Κατ 'αρχήν, μπορεί να χρησιμοποιηθεί για την απρόσκοπτη διαχείριση εκατοντάδων ή χιλιάδων διαφορετικών δοχείων.

Παρακάτω είναι μερικά από τα ευρήματά μου από την οπτική γωνία της κόκκινης και μπλε ομάδας.

Κόκκινη ομάδα

Το μεγαλύτερο μέρος του περιεχομένου του κοντέινερ εκτελείται ως root: Αυτό σημαίνει ότι εάν το κοντέινερ έχει παραβιαστεί, θα έχετε πλήρη πρόσβαση στο κοντέινερ. Αυτό κάνει τα επόμενα βήματα πολύ πιο εύκολα.

Η τοποθέτηση του docker.sock μέσα σε ένα δοχείο είναι επικίνδυνη: Εάν έχετε root μέσα σε ένα κοντέινερ και έχετε εγκαταστήσει επίσης το Docker μέσα σε ένα κοντέινερ που διαθέτει υποδοχή Docker (/var/run/docker.sock), έχετε τη δυνατότητα να εξερευνήσετε ολόκληρο το σύμπλεγμα, συμπεριλαμβανομένης της πρόσβασης σε οποιοδήποτε άλλο κοντέινερ. Αυτή η πρόσβαση δεν μπορεί να αποτραπεί με απομόνωση δικτύου ή άλλα μέσα.

Οι μεταβλητές περιβάλλοντος συχνά περιέχουν μυστικά δεδομένα: Στις περισσότερες περιπτώσεις, οι χρήστες στέλνουν κωδικούς πρόσβασης στο κοντέινερ χρησιμοποιώντας κανονικές μεταβλητές περιβάλλοντος. Έτσι, εάν έχετε πρόσβαση στον λογαριασμό, μπορείτε να κατασκοπεύσετε αυτές τις μεταβλητές περιβάλλοντος για να επεκτείνετε αργότερα τις δυνάμεις σας.

Το Docker API μπορεί να δώσει πολλές πληροφορίες: Το Docker API, όταν έχει ρυθμιστεί από προεπιλογή, εκτελείται χωρίς εξουσιοδότηση και μπορεί να παράγει έναν τόνο πληροφοριών. Χρησιμοποιώντας το Shodan, μπορείτε εύκολα να βρείτε μια λίστα με ανοιχτές θύρες, στη συνέχεια να λάβετε λεπτομερείς πληροφορίες για το σύμπλεγμα - και να προχωρήσετε στην πλήρη αποτύπωσή του. Η TrendMicro έγραψε σχετικά πιο ενδιαφέρον άρθρο.

Μπλε ομάδα

Μην εκτελείτε τα περιεχόμενα του κοντέινερ ως root: Παρόλο που είναι πιο εύκολο να τρέξετε ως root, δεν πρέπει να το κάνετε. Αντίθετα, εκτελέστε εφαρμογές με δικαιώματα επαναφοράς εμφανίζοντας το uid, είτε χρησιμοποιώντας την επιλογή --user όταν εκτελείται από το CLI είτε καθορίζοντας USER στο Dockerfile.

Μην επιτρέπετε την εγκατάσταση λογισμικού σε κοντέινερ: Σχεδόν κάθε επίθεση ξεκινάει με τη φύτευση κάτι. Από το nmap έως το ifconfig μέχρι το ίδιο το Docker (μέσα σε ένα κοντέινερ), η εγκατάσταση οτιδήποτε σε ένα κοντέινερ ήταν συνηθισμένη. Για τον ίδιο λόγο, θα πρέπει πάντα να αποκλείετε όλες τις αχρησιμοποίητες θύρες. Αυτό βοηθά επίσης στην αποτροπή της μετάδοσης εντολών ελέγχου όταν το μηχάνημά σας έχει μολυνθεί. Εκτός από την αποτροπή της εγκατάστασης προγραμμάτων, αξίζει να βεβαιωθείτε ότι ο ελάχιστος αριθμός εφαρμογών που απαιτούνται για την ολοκλήρωση της εργασίας είναι εγκατεστημένος στο ίδιο το κοντέινερ.

Προστατέψτε το docker.sock: Πρέπει να προστατεύεται επειδή η επικοινωνία μεταξύ του κοντέινερ και του συμπλέγματος πραγματοποιείται μέσω αυτής της υποδοχής. Επειδή δεν θέλω να μπω σε λεπτομέρειες σε αυτό το άρθρο, διαβάστε σημείωμα από τον Ντόκερ, τι μπορεί να συμβεί και επίσης πώς να τα μπλοκάρετε όλα.

Χρησιμοποιήστε μυστικά Docker αντί για μεταβλητές περιβάλλοντος: Υπάρχουν μυστικά από το 2017 περίπου. Αν και αυτό δεν είναι ασφαλές, εξακολουθεί να είναι καλύτερο από τις μεταβλητές περιβάλλοντος για τη διαβίβαση μυστικών δεδομένων στο κοντέινερ.

Εάν το άρθρο έχει κεντρίσει το ενδιαφέρον σας για κοντέινερ, μπορείτε εύκολα να εγκαταστήσετε το Docker ή το microk8s (μια μικρή έκδοση του Kubernetes). Εδώ υπάρχουν οδηγίες για την εγκατάσταση του Docker για Linux και MacOS και εδώ — οδηγίες για την εγκατάσταση του microk8s για Windows, Linux και MacOS.

Μετά την εγκατάσταση μπορείτε να πάτε αυτός είναι ένας οδηγός γρήγορης εκκίνησης από το Docker, παρόμοια επιλογή προσφέρεται και για microk8.

Εάν θέλετε ή χρειάζεται να παρακολουθήσετε ένα ολοκληρωμένο μάθημα για το Docker, στο οποίο οι πρακτικοί ομιλητές εξετάζουν όλα τα εργαλεία του: από τις βασικές αφαιρέσεις έως τις παραμέτρους δικτύου, τις αποχρώσεις της εργασίας με διάφορα λειτουργικά συστήματα και γλώσσες προγραμματισμού, τότε δοκιμάστε "Μάθημα βίντεο Docker" Θα εξοικειωθείτε με την τεχνολογία και θα κατανοήσετε πού και πώς να χρησιμοποιήσετε καλύτερα το Docker. Και ταυτόχρονα, λάβετε περιπτώσεις βέλτιστης πρακτικής - είναι καλύτερο να μαθαίνετε με ασφάλεια και με την υποστήριξη των επαγγελματιών από ιστορίες για τσουγκράνες παρά προσωπικά από τις ίδιες τις τσουγκράνες με λαβές με καρφιά.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο