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

Φέρνω στην προσοχή σας έναν οδηγό για τη διασφάλιση της ασφάλειας του Docker. Τα σχόλια είναι ευπρόσδεκτα, καθώς πρόκειται περισσότερο για μια συλλογή αποσπασμάτων από διάφορους πόρους, και δεν έχουν εξεταστεί όλα διεξοδικά. Οι συστάσεις χωρίζονται σε τρεις κατηγορίες:
- Απαραίτητα μέτρα εντός του λειτουργικού συστήματος υποδοχής κατά την εργασία με το Docker.
- Οδηγίες που σχετίζονται με το αρχείο διαμόρφωσης build και τη δημιουργία κοντέινερ.
- Εργαλεία ασφαλείας που μπορούν να ενσωματωθούν με συγκεκριμένες λειτουργίες του Docker Enterprise.
Ο οδηγός βασίζεται σε μια ποικιλία πόρων, πολλοί από τους οποίους παρατίθενται παρακάτω. Δεν είναι ολοκληρωμένο, αλλά καλύπτει όλες τις βάσεις. Πρόσθετες πληροφορίες μπορείτε να βρείτε στην περιγραφή των δοκιμών CIS (ο σύνδεσμος παρέχεται στο τέλος αυτού του οδηγού), καθώς και στην τεκμηρίωση του Docker.
Σημείο αναφοράς ασφαλείας Docker
ελέγχει αυτόματα το Docker σας σε σχέση με τις πιο κοινές βέλτιστες πρακτικές. Το σενάριο είναι μια καλή ευρετική δοκιμή ασφαλείας, αλλά δεν πρέπει να θεωρείται ως ένα ολοκληρωμένο εργαλείο ανάλυσης.
ΛΣ κεντρικού υπολογιστή
Προφανώς, ένα κοντέινερ Docker δεν μπορεί να είναι ασφαλές εκτός εάν το ίδιο το κεντρικό σύστημα είναι ασφαλές. Ως εκ τούτου, είναι απαραίτητο να ακολουθούνται οι βέλτιστες πρακτικές στην ασφάλεια του λειτουργικού συστήματος. Επιπλέον, θα ήταν συνετό να διεξαχθεί μια ανάλυση τρωτότητας εκτός από τις ακόλουθες συστάσεις.
Κανόνες Ελέγχου
Δημιουργήστε και χρησιμοποιήστε κανόνες ελέγχου για αρχεία που σχετίζονται με το Docker χρησιμοποιώντας auditctl. Για παράδειγμα, μπορείτε να προσθέσετε -w /usr/bin/dockerd -k docker к /etc/audit.rules και επανεκκινήστε την υπηρεσία ελέγχου.
Λειτουργία FIPS
Η ενεργοποίηση της λειτουργίας FIPS αναγκάζει τα κρυπτογραφικά εργαλεία να μεταβούν σε αλγόριθμους που αναφέρονται στη λίστα FIPS (Αμερικανός - περίπου μετάφρ.), συμμορφώνοντας έτσι με τους ομοσπονδιακούς και βιομηχανικούς κανονισμούς και απαιτήσεις. Εάν το λειτουργικό σύστημα υποδοχής υποστηρίζει τη λειτουργία FIPS, μπορείτε να την ενεργοποιήσετε εκτελώντας τις ακόλουθες εντολές:
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg && rebootΠρέπει επίσης να ενεργοποιήσετε το FIPS στο Docker Engine:
mkdir -p /etc/systemd/system/docker.service.d 2>&1; echo -e "[Service]n Environment="DOCKER_FIPS=1"" > /etc/systemd/system/docker.service.d/fips-module.conf; systemctl daemon-reload; systemctl restart dockerΓια περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση и .
Docker Secrets
Τα εμπιστευτικά δεδομένα πρέπει να τηρούνται ως μυστικά. Μπορείτε να ξεκινήσετε την αντίστοιχη υπηρεσία χρησιμοποιώντας την εντολή δημιουργίας υπηρεσίας docker:
docker service create --label com.docker.ucp.access.label=/prod --name nginx --publish 443 --secret source=orcabank_prod_mobile.ca.pem.v1,target=ca.pem nginxΓια λεπτομέρειες, βλ .
Αρχείο διαμόρφωσης Docker
Οι ακόλουθες ρυθμίσεις μπορούν να προστεθούν στο αρχείο διαμόρφωσης /etc/docker/daemon.json:
-
"icc":false— απενεργοποιεί την ανταλλαγή δεδομένων μεταξύ κοντέινερ για να αποφευχθεί η περιττή διαρροή πληροφοριών. -
log-level: "info"— καταγράφει όλα τα αρχεία καταγραφής εκτός από αυτά για εντοπισμό σφαλμάτων. { "log-driver": "syslog", "log-opts": { "syslog-address": "udp://1.2.3.4:1111" } }— ενεργοποιεί την απομακρυσμένη καταγραφή και τις προωθεί στην καθορισμένη διεύθυνση. Λειτουργεί μόνο εάν εκτελείται ο δαίμονας του syslog. Το TCP και το UDP γίνονται δεκτά ως επιλογές. Είναι επίσης δυνατή η σύνδεση για κάθε συγκεκριμένο δοχείο. Για το σκοπό αυτό, ορίζεται μια ειδική σημαία κατά την εκκίνηση του Docker (
--log-opt syslog-address=ADDRESS).-
"userns-remap": "Your_User"— αποτρέπει την κλιμάκωση των προνομίων απομονώνοντας τον χώρο ονομάτων για έναν συγκεκριμένο χρήστη.
Ασφάλεια επιπέδου μεταφοράς
Μόνο οι χρήστες με πρόσβαση στα διαπιστευτήρια πελάτη TLS θα πρέπει να μπορούν να συνδεθούν με τον δαίμονα Docker (εάν απαιτείται απομακρυσμένη πρόσβαση).
Πρόσθετα εξουσιοδότησης
Αποφασίστε σε ποιους χρήστες επιτρέπεται να εκτελέσουν ποιες εντολές και δημιουργήστε μια κατάλληλη προσθήκη εξουσιοδότησης για το Docker. Στη συνέχεια, ξεκινήστε τον δαίμονα Docker και προσθέστε το πρόσθετο σε αυτό:
dockerd --authorization-plugin=PLUGIN_IDΓια να μάθετε περισσότερα σχετικά με τη δημιουργία προσθηκών εξουσιοδότησης, ανατρέξτε .
Δαίμονες επιλογές
Ο δαίμονας Docker εκτελείται με ένα προεπιλεγμένο σύνολο παραμέτρων.
-
--live-restore— αυτή η παράμετρος βοηθά στη μείωση του χρόνου διακοπής λειτουργίας του κοντέινερ κατά τον τερματισμό λειτουργίας ή την επανεκκίνηση του συστήματος. Γίνεται πιο εύκολο να επιδιορθώσετε ή να ενημερώσετε με ελάχιστο χρόνο διακοπής λειτουργίας. -
--userland-proxy=false— όταν τα NAT φουρκέτας είναι διαθέσιμα ή χρησιμοποιούνται, ο διακομιστής μεσολάβησης στον χώρο χρήστη γίνεται μια περιττή υπηρεσία, η οποία αυξάνει μόνο τον αριθμό των πιθανών διανυσμάτων επίθεσης. -
--no-new-privileges— εμποδίζει τα κοντέινερ να αποκτήσουν πρόσθετα προνόμια χρησιμοποιώντας suid ή sguid. -
--seccomp-profile /path/to/profile- εάν έχετε το δικό σας προφίλ seccomp, μπορείτε να το εφαρμόσετε χρησιμοποιώντας αυτήν τη σημαία. Μπορείτε να μάθετε περισσότερα για το Seccomp και το Docker .
Διαμόρφωση αρχείου κοντέινερ και build
Δημιουργία χρήστη
Βεβαιωθείτε ότι έχει δημιουργηθεί ένας χρήστης για το κοντέινερ και εκτελέστε τον κάτω από αυτόν τον χρήστη (ΜΗΝ εκτελέσετε το κοντέινερ ως root).
Απομακρυσμένη πρόσβαση
Απενεργοποιήστε την απομακρυσμένη πρόσβαση στον δαίμονα. Εάν εξακολουθείτε να το χρειάζεστε, προστατέψτε το με πιστοποιητικά.
Απομονώστε τον χώρο ονομάτων χρήστη
Είναι ιδιαίτερα σημαντικό να διασφαλίσετε ότι ο χώρος ονομάτων χρήστη στο Docker είναι απομονωμένος, καθώς από προεπιλογή είναι κοινόχρηστος με τον χώρο ονομάτων του κεντρικού υπολογιστή. Σε ορισμένες περιπτώσεις, αυτό μπορεί να χρησιμοποιηθεί για την κλιμάκωση των προνομίων ή ακόμα και για διαφυγή εκτός του κοντέινερ. Μπορείτε να απομονώσετε τον χώρο ονομάτων χρήστη επεξεργαζόμενοι το αρχείο διαμόρφωσης (όπως περιγράφεται παραπάνω στην ενότητα Αρχείο διαμόρφωσης Docker). Η επιπλέον αναφορά αυτού του ζητήματος εδώ οφείλεται στη σημασία του.
Ελεγχος υγείας
Το Healthcheck είναι ένα ισχυρό εργαλείο που σας επιτρέπει να ελέγχετε την ακεραιότητα ενός κοντέινερ. Ρυθμίζεται στο Dockerfile χρησιμοποιώντας τις οδηγίες HEALTHCHECK. Οι έλεγχοι υγείας σάς επιτρέπουν να βεβαιωθείτε ότι το δοχείο λειτουργεί σωστά. Στο παρακάτω παράδειγμα, ο έλεγχος υγείας επιστρέφει 0 εάν ο διακομιστής εκτελείται και 1 εάν είναι εκτός λειτουργίας:
HEALTHCHECK CMD curl --fail http://localhost || exit 1SELinux
Εάν το SELinux υποστηρίζεται από το λειτουργικό σύστημα κεντρικού υπολογιστή, δημιουργήστε ή εισαγάγετε μια πολιτική SELinux και εκτελέστε το Docker σε λειτουργία daemon με ενεργοποιημένο το SELinux:
docker daemon --selinux-enableΣε αυτήν την περίπτωση, τα κοντέινερ Docker μπορούν να εκκινηθούν με ρυθμίσεις ασφαλείας, για παράδειγμα:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bashΔιεπαφές δικτύου
Από προεπιλογή, το Docker ακούει όλες τις διεπαφές δικτύου. Δεδομένου ότι στις περισσότερες περιπτώσεις αναμένεται κίνηση μόνο σε ένα από αυτά, αυτή η προσέγγιση αυξάνει άσκοπα τον κίνδυνο επίθεσης. Επομένως, κατά την εκκίνηση ενός κοντέινερ, μπορείτε να συνδέσετε τις θύρες του σε συγκεκριμένες διεπαφές στον κεντρικό υπολογιστή:
docker run --detach --publish 10.2.3.4:49153:80 nginxΑποθηκευμένες εκδόσεις εικόνων
Κατά τη λήψη εικόνων, βεβαιωθείτε ότι η τοπική προσωρινή μνήμη ταιριάζει με τα περιεχόμενα του αποθετηρίου. Διαφορετικά, μπορεί να καταλήξετε με μια παλιά έκδοση της εικόνας ή μια εικόνα που περιέχει τρωτά σημεία.
Γέφυρα δικτύου
Προεπιλεγμένο μοντέλο δικτύου docker0, είναι ευάλωτο σε επιθέσεις όπως ARP-spoofing και MAC-flooding. Για να επιλύσετε αυτό το ζήτημα, δημιουργήστε μια γέφυρα δικτύου σύμφωνα με τις προδιαγραφές σας, όπως περιγράφεται .
Προειδοποίηση υποδοχής Docker
Μην προωθείτε ποτέ μια υποδοχή Docker μέσα σε ένα δοχείο. Διαφορετικά, το κοντέινερ θα μπορεί να εκτελεί εντολές Docker και επομένως να επικοινωνεί και να ελέγχει το λειτουργικό σύστημα του κεντρικού υπολογιστή. Μην το κάνεις αυτό.
Διαμόρφωση Docker Enterprise
Docker Trust
Το Docker Trust σάς επιτρέπει να δημιουργείτε κλειδιά που μπορούν να χρησιμοποιηθούν για την επαλήθευση της κρυπτογραφικής ακεραιότητας των εικόνων. Τα κλειδιά Docker Trust μπορούν να χρησιμοποιηθούν για την υπογραφή εικόνων Docker με ιδιωτικά κλειδιά, τα οποία επαληθεύονται με δημόσια κλειδιά στον διακομιστή συμβολαιογράφου. Επιπλέον πληροφορίες - . Η ενεργοποίηση του Docker Trust στο Enterprise Engine περιγράφεται λεπτομερώς στο .
Σάρωση ευπάθειας
Το Docker Enterprise διαθέτει έναν ενσωματωμένο σαρωτή ευπάθειας που σας επιτρέπει να κάνετε λήψη μιας βάσης δεδομένων CVE για σάρωση εκτός σύνδεσης ευπαθειών σε εικόνες. Η τακτική σάρωση των εικόνων βοηθά να γίνουν πιο ασφαλείς: ο χρήστης λαμβάνει αμέσως προειδοποιήσεις σχετικά με ευπάθειες που εντοπίστηκαν. Για περισσότερες πληροφορίες σχετικά με το πώς μπορεί να γίνει αυτό, βλ .
Σημείωση. μετάφρ.: Υπάρχουν επίσης σαρωτές ανοιχτού κώδικα για τρωτά σημεία σε εικόνες Docker, παραδείγματα των οποίων μπορείτε να βρείτε στο τέλος του υλικού.
Ενσωμάτωση LDAP και UCP
Το Universal Control Plane μπορεί να ενσωματωθεί με το LDAP. Το αποτέλεσμα θα είναι ένα απλοποιημένο σύστημα ελέγχου ταυτότητας που αποφεύγει την περιττή αντιγραφή. Μπορείτε να διαβάσετε περισσότερα για αυτό στο άρθρο .
Άλλα υλικά
Περισσότερες πληροφορίες σχετικά με τις βέλτιστες πρακτικές ασφάλειας του Docker μπορείτε να βρείτε στη διεύθυνση . Συνιστούμε επίσης τη λήψη .
Μπόνους μεταφραστή
Ως λογική προσθήκη σε αυτό το άρθρο, δημοσιεύουμε μια λίστα με 10 δημοφιλή βοηθητικά προγράμματα ανοιχτού κώδικα για Docker Security. Δανείστηκε από (από τον Bill Doerrfeld του Doerrfeld.io).
NB: Διαβάστε περισσότερα για πολλά από τα έργα που αναφέρονται εδώ στο άρθρο "».
- είναι ένα σενάριο που αναφέρθηκε ήδη στην αρχή του άρθρου που ελέγχει τα κοντέινερ Docker για συμμόρφωση με κοινές πρακτικές ασφαλείας.

- είναι ίσως το πιο δημοφιλές βοηθητικό πρόγραμμα για στατική ανάλυση τρωτών σημείων σε ένα κοντέινερ. Για το σκοπό αυτό, χρησιμοποιεί πολυάριθμες βάσεις δεδομένων ευπάθειας CVE (συμπεριλαμβανομένων ανιχνευτών κορυφαίων διανομών Linux όπως Red Hat, Debian, Ubuntu). Προσφέρει ένα API για προγραμματιστές και έναν εύκολο τρόπο επέκτασης της λειτουργικότητας (με την προσθήκη «προγραμμάτων οδήγησης»). Χρησιμοποιείται στο δημοφιλές δημόσιο κοντέινερ μητρώου εικόνων (ανάλογο με το Docker Hub) - Quay.io.
- είναι μια λύση για τη διασφάλιση της ασφάλειας του δικτύου σε επίπεδο πυρήνα, βασισμένη στην τεχνολογία φιλτραρίσματος πακέτων δικτύου BPF.
- — ένα βοηθητικό πρόγραμμα για την ανάλυση του περιεχομένου των εικόνων για την παρουσία τρωτών σημείων ασφαλείας με βάση το CVE. Επιπλέον, σας επιτρέπει να εφαρμόζετε προσαρμοσμένες πολιτικές (με βάση διάφορα δεδομένα, συμπεριλαμβανομένων λευκών/μαύρων λιστών, περιεχομένων αρχείων κ.λπ.) για την αξιολόγηση της ασφάλειας των κοντέινερ.
- — ένα ολόκληρο οικοσύστημα για τη δημιουργία και τη διατήρηση πολιτικών ασφάλειας σε διαφορετικές πλατφόρμες. Προσφέρει ένα βοηθητικό πρόγραμμα για τον έλεγχο των δοχείων
oscap-docker. - — ένα βοηθητικό πρόγραμμα για τη σάρωση κοντέινερ Docker για τρωτά σημεία, Trojans, ιούς και κακόβουλο λογισμικό. Οι βάσεις δεδομένων CVE περιλαμβάνουν ελέγχους εξάρτησης από το OWASP, τη βάση δεδομένων Red Hat Oval και το αποθετήριο εκμετάλλευσης της βάσης δεδομένων Exploit.
- είναι ένα πλαίσιο για την υπογραφή εικόνων Docker, που δημιουργήθηκε αρχικά στην Docker Inc (και στη συνέχεια μεταφέρθηκε για ανάπτυξη στο CNCF). Η χρήση του σάς επιτρέπει να εκχωρείτε ρόλους και να κατανέμετε τις ευθύνες μεταξύ των κοντέινερ, καθώς και να επαληθεύετε την κρυπτογραφική ακεραιότητα των εικόνων.
- — API για μεταδεδομένα, σχεδιασμένο για τη διαχείριση πολιτικών εσωτερικής ασφάλειας. Για παράδειγμα, σας επιτρέπει να βελτιώσετε την απόδοση των σαρωτών ασφαλείας κοντέινερ. Το Shopify χρησιμοποιεί αυτό το API για τη διαχείριση μεταδεδομένων στις 500 εικόνες του.
- — ένα βοηθητικό πρόγραμμα για το Kubernetes που παρακολουθεί τη συμπεριφορά του συστήματος: δραστηριότητα σε κοντέινερ, σε κεντρικούς υπολογιστές, στο δίκτυο. Σας επιτρέπει να διαμορφώνετε συνεχείς ελέγχους στην υποδομή, να εντοπίζετε ανωμαλίες και να στέλνετε ειδοποιήσεις για τυχόν κλήσεις συστήματος Linux.
- - ένα άλλο εργαλείο για στατική ανάλυση εικόνων κοντέινερ Docker. Σας επιτρέπει να "ψάξετε" σε αρχεία εικόνων, να συλλέγετε τα απαραίτητα δεδομένα, να εφαρμόζετε τις απαραίτητες πολιτικές κ.λπ.
Μια άλλη καλή συλλογή από πρακτικές συστάσεις σχετικά με το πώς να κάνετε το Docker πιο ασφαλές μπορείτε να βρείτε στο Εταιρεία Aqua Security. Πολλές από τις συμβουλές της επικαλύπτονται με αυτές που έχουν ήδη αναφερθεί παραπάνω, αλλά υπάρχουν και άλλες. Για παράδειγμα, οι συγγραφείς προτείνουν την οργάνωση παρακολούθησης της δραστηριότητας σε κοντέινερ και υποδεικνύουν τι πρέπει να προσέχετε όταν χρησιμοποιείτε το Docker Swarm.
Για όσους θέλουν να βουτήξουν σε αυτό το θέμα με περισσότερες λεπτομέρειες, δημοσιεύτηκε πέρυσι. Βιβλίο "», κομμάτια του οποίου διατίθενται ελεύθερα .
Τέλος, για πρακτική εξοικείωση με ορισμένες πτυχές της ασφάλειας Docker: προφίλ Seccomp και χρήση δυνατοτήτων πυρήνα Linux σε κοντέινερ, μπορείτε να περάσετε από τα αντίστοιχα εργαστηριακές εργασίες για * - δείτε την ενότητα "Ασφάλεια".

* Σχετικά με αυτόν τον ίδιο τον πόρο εμείς πριν από δύο χρόνια, και τον Νοέμβριο του 2018, του συνέβη μια πολύ ενδιαφέρουσα (από άποψη ασφαλείας) ιστορία. Με λίγα λόγια, οι ειδικοί της CyberArk Software Ltd. κατάφερε να το χακάρει: να επιτύχει τη δυνατότητα εκτέλεσης εντολών εκτός κοντέινερ, π.χ. στο σύστημα υποδοχής. Μια τέλεια απεικόνιση του προβλήματος ασφαλείας στο Docker, έτσι δεν είναι; Διαβάστε όλες τις λεπτομέρειες για το τι συνέβη .
ΥΓ από τον μεταφραστή
Διαβάστε επίσης στο blog μας:
- «"?
- «"?
- «"?
- «"?
- «"?
- «».
Πηγή: www.habr.com

