From 851cf87cc31a8461cdd273c3c929549677eae7d6 Mon Sep 17 00:00:00 2001 From: konsthol Date: Fri, 10 Nov 2023 19:11:50 +0200 Subject: [PATCH] Last time I said it works? I was kidding. Try this. --- Bibliography.bib | 27 ++ Chapters/2.Background.tex | 308 +++++++++++++++--- ...rtualization-vs-containers_transparent.png | Bin 0 -> 9515 bytes 3 files changed, 298 insertions(+), 37 deletions(-) create mode 100644 Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png diff --git a/Bibliography.bib b/Bibliography.bib index b52275d..f6bba3a 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -230,6 +230,12 @@ howpublished="\url{https://www.ibm.com/downloads/cas/VG8KRPRM}" } +@misc{ibmContainerVsVm, + title={Containers vs. Virtual Machines (VMs): What’s the Difference?}, + author={IBM}, + howpublished="\url{https://www.ibm.com/blog/containers-vs-vms/}" +} + @misc{ciaTriad, title={What is the CIA triad (confidentiality, integrity and availability)?}, author={Wesley Chai}, @@ -242,6 +248,27 @@ howpublished="\url{https://www.redhat.com/en/topics/virtualization}" } +@misc{redhatContainerVsVm, + title={Containers vs VMs}, + author={Red Hat}, + year={2020}, + howpublished="\url{https://www.redhat.com/en/topics/containers/containers-vs-vms}" +} + +@misc{dockerAlternatives, + title={What Are The Best Docker Alternatives in 2022?}, + author={Cody Slingerland}, + year={2022}, + howpublished="\url{https://www.cloudzero.com/blog/docker-alternatives/}" +} + +@article{yasrab2018mitigating, + title={Mitigating docker security issues}, + author={Yasrab, Robail}, + journal={arXiv preprint arXiv:1804.05039}, + year={2018} +} + @misc{ansible, title={Ansible}, author={Red Hat}, diff --git a/Chapters/2.Background.tex b/Chapters/2.Background.tex index 3ca1bbd..99be23b 100644 --- a/Chapters/2.Background.tex +++ b/Chapters/2.Background.tex @@ -903,9 +903,207 @@ scripting, SQL injection}, χειραγώγηση \textlatin{cookies} ή εκμ \subsection{\textlatin{Application containerization}} \label{applicationContainerization} +Τα δοχεία ενθυλακώνουν μια εφαρμογή ως ένα αυτόνομο πακέτο που περιέχει τον +κώδικα, τις βιβλιοθήκες και τις εξαρτήσεις που χρειάζεται για να εκτελεστεί. Οι +εφαρμογές σε δοχεία θεωρούνται απομονωμένες με την έννοια ότι δεν έχουν ανάγκη +ένα αντίγραφο του λειτουργικού συστήματος αλλά αντ'' αυτού ένα +\textlatin{runtime engine} στο κύριο μηχάνημα που λειτουργεί ως διαμεσολαβητής +των δοχείων για να μοιράζονται το λειτουργικό σύστημα μεταξύ τους. Κοινές +βιβλιοθήκες ή εκτελέσιμα αρχεία μπορούν επίσης να μοιραστούν μεταξύ πολλών +δοχείων, συμβάλλοντας έτσι στην εξάλειψη περιττής υπολογιστικής ισχύος +καθιστώντας τα δοχεία μικρά στον χώρο που καταλαμβάνουν, γρήγορα στην εκκίνηση +και ικανά να εκτελεστούν σε οποιαδήποτε πλατφόρμα ή περιβάλλον νέφους. +\pagebreak -\section{\textlatin{Docker Attack Vector Mitigation}} \label{dockerAttackVectorMitigation} +\subsection{Πλεονεκτήματα \textlatin{containerization}} \label{containerizationAdvantages} + +Τα δοχεία προσφέρουν μια σειρά από πλεονεκτήματα σε σχέση με τις παραδοσιακές +εικονικές μηχανές. Αυτά είναι μεταξύ άλλων τα εξής: + +\begin{itemize} + + \item \textbf{Φορητότητα}: + + Τα δοχεία είναι ανεξάρτητα από το λειτουργικό σύστημα και το περιβάλλον + εκτέλεσης τους και ως εκ τούτου μπορούν να εκτελεστούν σε οποιαδήποτε + πλατφόρμα ή περιβάλλον νέφους ομοιόμορφα και με συνέπεια. Το γεγονός + ότι τα κομμάτια ενός προγράμματος μπορούν να ορισθούν σε ένα μονάχα + αρχείο κειμένου και να κατασκευαστούν με αυτοματοποιημένο τρόπο + οπουδήποτε τους δίνει πολύ μεγαλύτερο προβάδισμα στον τομέα της + φορητότητας σε σχέση με τις εικονικές μηχανές. + + \item \textbf{\textlatin{Agility}}: + + Το \textlatin{Docker Engine} ξεκίνησε το βιομηχανικό πρότυπο για τη + χρήση δοχείων προσφέροντας απλά εργαλεία ανάπτυξης και μια καθολική + προσέγγιση πακεταρίσματος που λειτουργεί εξίσου καλά σε όλες τις + πλατφόρμες. Το οικοσύστημα των δοχείων έχει μετατοπιστεί σε μηχανές που + διαχειρίζεται η \textlatin{Open Container Initiative (OCI)} και οι + προγραμματιστές μπορούν εύκολα και γρήγορα να πακετάρουν τις εφαρμογές + τους ως δοχεία τα οποία μπορούν να προσφέρουν χωρίς την έγνοια + υποστήριξης πολλών διαφορετικών πλατφορμών. + + \item \textbf{Ταχύτητα}: + + Τα δοχεία είναι ελαφρύτερα από τις παραδοσιακές εικονικές μηχανές λόγω + του διαμοιρασμού του πυρήνα και γι'' αυτό έχουν μικρότερο χρόνο + εκκίνησης. Αυτό τα καθιστά ιδανικά για την ανάπτυξη και την εκτέλεση + εφαρμογών σε περιβάλλοντα νέφους όπου η αποδοτικότητα αξιοποίησης των + υπολογιστικών πόρων αντανακλάται σε άμεση εξοικονόμηση κόστους. + + \item \textbf{Απομόνωση σφαλμάτων}: + + Εφόσον κάθε δοχείο είναι απομονωμένο και λειτουργεί ανεξάρτητα από τα + υπόλοιπα, η αποτυχία του ενός δε θα επηρεάσει τη συνεχή λειτουργία των + υπολοίπων. Οι ομάδες ανάπτυξης μπορούν να εντοπίζουν και να διορθώνουν + τυχόν τεχνικά προβλήματα χωρίς να υπάρχει διακοπή λειτουργίας σε άλλα + δοχεία. + + \item \textbf{Αποδοτικότητα}: + + Το γεγονός ότι τα δοχεία μοιράζονται τον ίδιο πυρήνα και κοινά κομμάτια + άλλων δοχείων του συστήματος τα καθιστά αρκετά μικρά σε μέγεθος ώστε να + είναι δυνατόν να εκτελεστούν πολλά περισσότερα δοχεία απ'' ότι θα + μπορούσαν εικονικές μηχανές. Επομένως, αξιοποιούνται καλύτερα οι πόροι + του συστήματος. + +\pagebreak + + \item \textbf{Ευκολία διαχείρισης}: + + Τα δοχεία σε ένα σύστημα είναι εύκολα διαχειρίσιμα με απλές εντολές. Η + διαδικασία ενημέρωσης, εκκίνησης και τερματισμού τους μεταξύ άλλων + είναι γρήγορη και απλή. Ακόμα και για μια επιχείρηση με πολλούς + διακομιστές που θα έπρεπε να τα κάνει αυτά χειροκίνητα, υπάρχουν + πλατφόρμες ενορχήστρωσης δοχείων που πέραν αυτών των λειτουργιών + βοηθάνε και στην κλιμάκωση και διαχείριση του φόρτου εργασίας μεταξύ + δοχείων. + + \item \textbf{Ασφάλεια}: + + Η απομόνωση των εφαρμογών ως δοχεία εγγενώς αποτρέπει την εισβολή + κακόβουλου λογισμικού από το να επηρεάσει τα υπόλοιπα δοχεία ή το + σύστημα στο οποίο εκτελούνται. Επιπροσθέτως, άδειες ασφαλείας μπορούν + να ορισθούν με σκοπό τον αυτόματο αποκλεισμό ανεπιθύμητων στοιχείων από + τα δοχεία και τον περιορισμό επικοινωνίας μεταξύ δοχείων ή κομματιών + του συστήματος. + +\end{itemize} + +\subsection{Τύποι \textlatin{containerization}} \label{containerizationTypes} + +Στην παράγραφο \ref{containerizationDefinition} αναφέραμε την έννοια +\textlatin{containerization}. Η ραγδαία αύξηση του ενδιαφέροντος και της χρήσης +δοχείων οδήγησε στην ανάγκη για πρότυπα γύρω από την τεχνολογία αυτή. Η +\textlatin{Open Container Initiative (OCI)} η οποία ιδρύθηκε τον Ιούνιο του +2015 από την \textlatin{Docker} και άλλους ηγέτες του κλάδου, προωθεί κοινά, +ανοικτά πρότυπα και προδιαγραφές γύρω από την τεχνολογία δοχείων. Εξαιτίας +αυτού, η \textlatin{OCI} συμβάλλει στη διεύρυνση των επιλογών για μηχανές +ανοιχτού κώδικα. Οι χρήστες δε θα είναι εγκλωβισμένοι στην τεχνολογία ενός +συγκεκριμένου προμηθευτή, αλλά θα μπορούν να επωφεληθούν από τις πιστοποιημένες +από την \textlatin{OCI} τεχνολογίες που θα τους επιτρέπουν να δημιουργούν +εφαρμογές σε δοχεία χρησιμοποιώντας ένα ευρύ σύνολο εργαλείων +\textlatin{DevOps} και να τις εκτελούν με τον ίδιο τρόπο σε οποιεσδήποτε +υποδομές της επιλογής τους. + +Σήμερα αν και το \textlatin{Docker} αποτελεί μία από τις πιο γνωστές και ευρέως +χρησιμοποιούμενες μηχανές δοχείων, υπάρχουν πολλές άλλες υλοποιήσεις. +Εναλλακτικές όπως το \textlatin{podman, LXC} και το \textlatin{containerd} που +ήταν για καιρό η προεπιλογή του \textlatin{Docker} για \textlatin{container +runtime} προτού υιοθετήσει το \textlatin{runC} μπορεί να έχουν διαφορετικά +χαρακτηριστικά και προεπιλογές αλλά η υιοθέτηση και η αξιοποίηση των +προδιαγραφών της \textlatin{OCI} καθώς αυτές εξελίσσονται θα διασφαλίσει ότι οι +εναλλακτικές αυτές παραμένουν ανεξάρτητες από τους προμηθευτές, πιστοποιημένες +για να τρέχουν σε πολλαπλά λειτουργικά συστήματα και χρησιμοποιήσιμες σε +πολλαπλά περιβάλλοντα. + +\subsection{Μερικές διαφορές σε υλοποιήσεις \textlatin{containerization}} \label{containerizationDifferences} + +Παρότι οι προδιαγραφές της \textlatin{OCI} έχουν ως στόχο να διασφαλίσουν την +ομοιόμορφη λειτουργία της τεχνολογίας αυτής, υπάρχουν αρκετές διαφορές στην +υλοποίηση. Παραδείγματος χάριν, το \textlatin{podman} ενώ όπως το +\textlatin{Docker} συμμορφώνεται στις προδιαγραφές της \textlatin{OCI} δουλεύει +χωρίς δαίμονα από πίσω, πράγμα που επιδιώκει να κατευνάσει τις ανησυχίες γύρω +από τον τρόπο λειτουργίας του \textlatin{Docker}. Εξαιτίας του τρόπου +λειτουργίας του αν και από το 2021 χάρη στη δουλειά του \textlatin{Akihiro +Suda} \cite{AkihiroSuda} δεν ισχύει μόνο για αυτό πλεόν, το \textlatin{podman} +δύναται να εκτελεστεί από έναν χρήστη πέραν του \textlatin{root}. + +Ένα ακόμα εργαλείο που έχει παρόμοια αρχιτεκτονική με το \textlatin{podman} +είναι το \textlatin{rkt} το οποίο προσπαθούσε να κρατήσει μια προσέγγιση +ασφαλούς σχεδιασμού εξαρχής (\textlatin{Secure-by-design}). Μπορούσε να +ενσωματώσει χαρακτηριστικά ασφαλείας όπως υποστήριξη \textlatin{SELinux, TMP +measurement} και εκτέλεση δοχείων σε απομονωμένες από το υλικό εικονικές +μηχανές. Παρ'' όλα αυτά, σύμφωνα με το \cite{dockerAlternatives} έπαψε να έχει +ενεργή ανάπτυξη και επομένως δεν θα συνεχίζει να ανταγωνίζεται παρόμοια +εργαλεία στον κλάδο των δοχείων. + +\subsection{Δοχεία έναντι εικονικών μηχανών} \label{containersVsVms} + +Παρότι πολλές φορές τα δοχεία συγχέονται με τις εικονικές μηχανές, οι δύο αυτές +έννοιες έχουν αρκετές διαφορές στην αρχιτεκτονική τους. Στην παραδοσιακή +εικονικοποίηση είτε αυτή γίνεται στις υπάρχουσες υποδομές μια επιχείρησης είτε +σε ένα περιβάλλον νέφους, ένας \textlatin{hypervisor} πρέπει να χρησιμοποιηθεί +για να εικονικοποιήσει φυσικό υλικό. Κάθε μια εικονική μηχανή έχει ένα +λειτουργικό σύστημα και ένα εικονικό αντίγραφο του υλικού που απαιτεί για να +εκτελεστεί μαζί με μια εφαρμογή και τις βιβλιοθήκες και εξαρτήσεις της. Από την +άλλη, ένα δοχείο αντί να εικονικοποιήσει το υλικό, εικονικοποιεί το λειτουργικό +σύστημα ούτως ώστε κάθε δοχείο να περιέχει μόνο την εφαρμογή, τις βιβλιοθήκες +και τις εξαρτήσεις της. + +Η εικόνα \ref{fig:containerVsVm} παρουσιάζει τη διαφορά των δύο αρχιτεκτονικών + +\begin{center} + \includegraphics[width = .8\textwidth]{Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png} + \captionof{figure}{\textlatin{Virtualization Vs Containers}} + \label{fig:containerVsVm} +\end{center} + +Η απουσία του εικονικού λειτουργικού υλικού είναι που τα καθιστά γρήγορα, +φορητά και μικρότερα σε μέγεθος. Για να γίνει πιο εμφανής η διαφορά, σύμφωνα με +τη \textlatin{Red Hat} \cite{redhatContainerVsVm}, το μέγεθος των εικονικών +μηχανών μετράται της τάξεως των \textlatin{gigabyte} ενώ των δοχείων μένουν στα +\textlatin{megabyte}. Πολλές φορές όπως αναφέρεται και στο +\cite{ibmContainerVsVm}, τα δοχεία χρησιμοποιούνται για εφαρμογές +αρχιτεκτονικής \textlatin{microservices} όπου κάθε ξεχωριστό κομμάτι +αντιπροσωπεύει μια λειτουργία της εφαρμογής και είναι ευκολότερη η κλιμάκωση +μιας υπηρεσίας απ'' ότι θα ήταν με μια \textlatin{monolithic} αρχιτεκτονική. +Εκεί λόγω μεγέθους και πλήθους τους συνήθως απαιτείται η χρήση πλατφόρμας +ενορχήστρωσης δοχείων όπως το \textlatin{Kubernetes}, το \textlatin{Docker +Swarm} ή άλλα για αποδοτικότερη διαχείριση. + +Το μόνο μειονέκτημα τους, το οποίο δεν επηρεάζει κατά πολύ τη χρήση τους, είναι +το γεγονός ότι δοχεία που δημιουργήθηκαν για να εκτελούν προγράμματα που +απαιτούν την ύπαρξη του λειτουργικού συστήματος \textlatin{Windows} δε μπορούν +να εκτελεστούν σε ένα περιβάλλον με τον πυρήνα του \textlatin{Linux}. + +\subsection{Ασφάλεια στο \textlatin{Docker}} \label{dockerSecurityMore} + +Οι εφαρμογές σε δοχεία έχουν ένα εγγενές επίπεδο ασφαλείας αφού μπορούν να +εκτελούνται ως απομονωμένες διεργασίες και να λειτουργούν ανεξάρτητα από τα +υπόλοιπα δοχεία. Με πλήρη απομόνωση θα μπορούσε να αποτραπεί στην περίπτωση +μόλυνσης από κακόβουλο λογισμικό, ο κίνδυνος να επηρεαστούν άλλα δοχεία ή το +ίδιο το σύστημα. Ωστόσο, η απομόνωση αυτή δεν είναι πλήρης. Ο διαμοιρασμός +κομματιών μιας εφαρμογής σε δοχείο βοηθάει στην αποδοτικότητα του συστήματος +αλλά ανοίγει και ένα παράθυρο ευκαιρίας για επιθέσεις. Το γεγονός επίσης πως +μοιράζονται τον ίδιο πυρήνα σημαίνει πως μια επίθεση με στόχο αυτόν, μπορεί +δυνητικά να επηρεάσει όλα τα δοχεία. + +Σχετικά με τις εικόνες δοχείων, τα κομμάτια δηλαδή από τα οποία μια εφαρμογή σε +μορφή δοχείου αποτελείται, η ασφάλεια δεν είναι πάντα εγγυημένη. Πρέπει να +ληφθούν μέτρα προστασίας όπως η χρήση εικόνων προερχόμενες μόνο από +εγκεκριμένες πηγές, κάτι που εισάγει ένα μοντέλο εμπιστοσύνης αυτή τη φορά +ανάμεσα στον προμηθευτή της και τον τελικό χρήστη. Οι πάροχοι τεχνολογίας +δοχείων έχουν αποκτήσει μια προσέγγιση ασφαλούς σχεδιασμού ώστε πολλά από τα +απαραίτητα μέτρα να είναι ενεργοποιημένα χωρίς την απαίτηση επιπρόσθετης +αλληλεπίδρασης από τον χρήστη. Πλέον η μηχανή δοχείων υποστηρίζει όλες τις +ιδιότητες απομόνωσης που υποστηρίζει και το λειτουργικό σύστημα στο οποίο +εκτελείται και άδειες ασφαλείας μπορούν να δοθούν με σκοπό τον επιπρόσθετο +περιορισμό χρήσης πόρων και το εύρος του συστήματος στο οποίο έχει πρόσβαση η +μηχανή δοχείων. + +\subsubsection{\textlatin{Docker Attack Vector Mitigation}} \label{dockerAttackVectorMitigation} Με βάση το μοντέλο που περιγράφει το \cite{reshetova2014security} όπως αναφέρεται στο \cite{bui2015analysis} όπου έχουμε ένα μηχάνημα στο οποίο @@ -915,39 +1113,75 @@ scripting, SQL injection}, χειραγώγηση \textlatin{cookies} ή εκμ διεργασιών, αρχείων, της συσκευής, του \textlatin{IPC}, δικτύου και τέλος, των πόρων. -Αυτά επιτυγχάνονται κατά σειρά με την χρήση \textlatin{namespaces} όπου -οριοθετείται η ορατότητα των διεργασιών ανάμεσα στα δοχεία και το σύστημα όπως -επίσης, τα δικαιώματά τους. Χρήση \textlatin{mount namespaces}, με τα οποία οι -διεργασίες κάθε δοχείου βλέπουν διαφορετικά το αρχείο του συστήματος. Όλες οι -δράσεις \textlatin{mount}, που γίνονται στο εκάστοτε δοχείο, περιορίζονται σε -αυτό όπως επίσης, οριοθετούνται τα δικαιώματα των αρχείων του πυρήνα σε μονάχα -ανάγνωσης και αποτρέπονται περαιτέρω \textlatin{remountings}. Ο περιορισμός -συσκευών επιτυγχάνεται με το χαρακτηριστικό \textlatin{Device Whitelist -Controller} των \textlatin{cgroups} που αναφέρεται στο -\cite{deviceWhitelistController} με την βοήθεια του οποίου περιορίζεται το -σύνολο τον συσκευών στις οποίες έχει πρόσβαση ένα δοχείο και αποτρέπει αυτό από -το να δημιουργήσει καινούριες αναπαραστάσεις συσκευών. Επιπροσθέτως επειδή τα -\textlatin{mount} γίνονται με την χρήση του \textlatin{nodev}, στην περίπτωση -που μια αναπαράσταση συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο στο -στιγμιότυπου που χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι διεργασίες -του δεν δύνανται να την χρησιμοποιήσουν για να επικοινωνήσουν με τον πυρήνα. -Επιπλέον επειδή η προεπιλεγμένη συνθήκη είναι να μην δίνονται εκτεταμένα -προνόμια σε ένα δοχείο, δεν υπάρχει πρόσβαση σε καμία συσκευή παρά μόνο εάν -γίνει εκτέλεση δοχείου ως χρήστης με ανώτατα δικαιώματα όπου υπάρχει πρόσβαση -σε όλες. Ο περιορισμός \textlatin{IPC}, δηλαδή της επικοινωνίας των διεργασιών -μεταξύ τους, επιτυγχάνεται με την χρήση \textlatin{IPC namespaces} που -καθιστούν δυνατή την δημιουργία ξεχωριστών συνόλων αυτών, οι διεργασίες των -οποίων επικοινωνούν μόνο μεταξύ τους. Μία από τις σημαντικότερες απομονώσεις -είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος επιθέσεων -όπως \textlatin{Man in the middle}, \textlatin{ARP, DNS spoofing} και άλλες. -Για να απομονωθεί η κίνηση δικτύου που λαμβάνει μέρος σε ένα δοχείο από αυτήν -των υπολοίπων και του συστήματος πρέπει να γίνει χρήση των \textlatin{network -namespaces}. Κάθε δοχείο θα έχει δικές του διευθύνσεις \textlatin{IP}, συσκευές -και ό,τι χρειάζεται, προκειμένου να γίνεται αλληλεπίδραση μεταξύ των δοχείων -μέσω την διεπαφή δικτύου του καθενός σαν να είναι εξωτερικές οντότητες. Τέλος, -επιβάλλεται η οριοθέτηση των υπολογιστικών πόρων προκειμένου να αποφευχθεί μια -επίθεση τύπου άρνησης υπηρεσίας όπου μια διεργασία ή ένα σύνολο αυτών προσπαθεί -να καταναλώσει όλους τους πόρους του συστήματος. Με την βοήθεια των -\textlatin{cgroup}, επιτυγχάνεται ο έλεγχος του ποσοστού πόρων όπως -\textlatin{CPU}, μνήμη, και χωρητικότητα που μπορεί να έχει κάθε δοχείο στην -διάθεση του. +Αυτά επιτυγχάνονται κατά σειρά με τη χρήση + +\begin{itemize} + + \item \textbf{\textlatin{namespaces}} όπου οριοθετείται η ορατότητα των + διεργασιών ανάμεσα στα δοχεία και το σύστημα όπως επίσης, τα δικαιώματά + τους. + + \item \textbf{\textlatin{mount namespaces}}, με τα οποία οι διεργασίες κάθε + δοχείου βλέπουν διαφορετικά τη διάταξη των αρχείων του συστήματος. Όλες + οι δράσεις \textlatin{mount}, που γίνονται στο εκάστοτε δοχείο, + περιορίζονται σε αυτό όπως επίσης, οριοθετούνται τα δικαιώματα των + αρχείων του πυρήνα σε μονάχα ανάγνωσης και αποτρέπονται περαιτέρω + \textlatin{remountings}. + + \item \textbf{\textlatin{Device Whitelist Controller}}, ενός + χαρακτηριστικού των \textlatin{cgroups} για περιοσιμό συσκευών, που + αναφέρεται στο \cite{deviceWhitelistController} με τη βοήθεια του + οποίου περιορίζεται το σύνολο τον συσκευών στις οποίες έχει πρόσβαση + ένα δοχείο και αποτρέπει αυτό από το να δημιουργήσει καινούριες + αναπαραστάσεις συσκευών. Επιπροσθέτως επειδή τα \textlatin{mount} + γίνονται με τη χρήση του \textlatin{nodev}, στην περίπτωση που μια + αναπαράσταση συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο στο + στιγμιότυπου που χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι + διεργασίες του δε δύνανται να τη χρησιμοποιήσουν για να επικοινωνήσουν + με τον πυρήνα. Επιπλέον, επειδή η προεπιλεγμένη συνθήκη είναι να μη + δίνονται εκτεταμένα προνόμια σε ένα δοχείο, δεν υπάρχει πρόσβαση σε + καμία συσκευή παρά μόνο εάν γίνει εκτέλεση δοχείου ως χρήστης με + ανώτατα δικαιώματα όπου υπάρχει πρόσβαση σε όλες. + + \item \textbf{\textlatin{IPC namespaces}} για περιορισμό \textlatin{IPC}, + δηλαδή της επικοινωνίας των διεργασιών μεταξύ τους. Τα \textlatin{IPC + namespaces} καθιστούν δυνατή τη δημιουργία ξεχωριστών συνόλων των + διεργασιών, που επικοινωνούν μεταξύ τους αλλά όχι με άλλες διεργασίες + πέραν του υποσυνόλου. + + \item \textbf{\textlatin{network namespaces}}. Μία από τις σημαντικότερες + απομονώσεις είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει + κίνδυνος επιθέσεων όπως \textlatin{Man in the middle}, \textlatin{ARP, + DNS spoofing} και άλλες. Για να απομονωθεί η κίνηση δικτύου που + λαμβάνει μέρος σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος + πρέπει να γίνει χρήση των \textlatin{network namespaces}. Κάθε δοχείο + θα έχει δικές του διευθύνσεις \textlatin{IP}, συσκευές και ό,τι + χρειάζεται, προκειμένου να γίνεται αλληλεπίδραση μεταξύ των δοχείων + μέσω της διεπαφής δικτύου του καθενός σαν να είναι εξωτερικές + οντότητες. + + \item \textbf{\textlatin{cgroup}}. Έπιβάλλεται η οριοθέτηση των + υπολογιστικών πόρων προκειμένου να αποφευχθεί μια επίθεση τύπου άρνησης + υπηρεσίας όπου μια διεργασία ή ένα σύνολο αυτών προσπαθεί να + καταναλώσει όλους τους πόρους του συστήματος. Με τη βοήθεια των + \textlatin{cgroup}, επιτυγχάνεται ο έλεγχος του ποσοστού πόρων όπως + \textlatin{CPU}, μνήμη, και χωρητικότητα που μπορεί να έχει κάθε δοχείο + στη διάθεση του. + +\end{itemize} + +Αυτές οι δυνατότητες υποστηρίζονται από το \textlatin{Docker} και μπορεί κανείς +να τις εκμεταλλευτεί για να προστατεύσει το περιβάλλον του από επιθέσεις. +Επιπλέον, υπάρχει και η δυνατότητα υποστήριξης των \textlatin{SELinux, +Apparmor, Seccomp} (στην περίπτωση χρήσης \textlatin{LXC}) όπως επίσης και +συμβατότητα με \textlatin{Linux capabilities} που θα μπορούσαν να εισάγουν ένα +ακόμα επίπεδο ασφαλείας αν χρησιμοποιηθούν σωστά, περιορίζοντας τα δικαιώματα +των διεργασιών των δοχείων σε μονάχα όσα χρειάζονται. Το \textlatin{Docker} +παρέχει αρκετά υπάρχοντα μέσα άμυνας προκειμένου να προστατευτεί από επιθέσεις +ακόμα και χωρίς επιπρόσθετες ρυθμίσεις. Παρ'' όλα αυτά οι αρχικές ρυθμίσεις +ασφαλείας είναι πιο ελαστικές απ'' όσο χρειάζεται προκειμένου να συνεχίζει να +λειτουργεί κανονικά για όλους τους χρήστες, αφήνοντας έτσι τους διαχειριστές +ασφαλείας υπεύθυνους να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες +προκειμένου να ανταπεξέλθουν σε κάθε επίθεση ανάλογα το περιβάλλον και τις +ανάγκες τους. + diff --git a/Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png b/Figures/RedHat_Virtualization/virtualization-vs-containers_transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..ef25162e9ac1af2132ff5d557f117cdaac077135 GIT binary patch literal 9515 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 b`p*I7aHr;I9gtI~zL4D3H`A-paf|q08fM6P literal 0 HcmV?d00001