done. going to bed now.

This commit is contained in:
2024-01-21 05:54:27 +02:00
parent ce16d63eb5
commit 7acaffd8b5
4 changed files with 139 additions and 138 deletions

View File

@@ -18,6 +18,7 @@
\textbf{BIOS} & \textbf{B}asic \textbf{I}nput/\textbf{O}utput \textbf{S}ystem \\
\textbf{UEFI} & \textbf{U}nified \textbf{E}xtensible \textbf{F}irmware \textbf{I}nterface \\
\textbf{MAC} & \textbf{M}andatory \textbf{A}ccess \textbf{C}ontrol \\
\textbf{MAC} & \textbf{M}edium \textbf{A}ccess \textbf{C}ontrol \\
\textbf{XSS} & \textbf{C}ross \textbf{S}ite \textbf{S}cripting \\
\textbf{cgroups} & \textbf{c}ontrol \textbf{groups} \\
\textbf{CI/CD} & \textbf{C}ontinuous \textbf{I}ntegration / \textbf{C}ontinuous \textbf{D}elivery \\

View File

@@ -20,10 +20,10 @@ of container technologies such as Docker, has in turn begun to drive the
adoption of the microservices architecture for application development. An
architecture based on virtualization technologies for hosting applications in
cloud infrastructures and container technologies for partitioning their
functions and thus, providing an appropriate level of performance and
scalability \footfullcite{awsMicroservices}. However, the applications in
question remain vulnerable to security issues that may be tied to the cloud
and/or the technologies on which it is based on.
functions into a set of containers and thus, providing an appropriate level of
performance and scalability \footfullcite{awsMicroservices}. However, the
applications in question remain vulnerable to security issues that may be tied
to the cloud and/or the technologies on which it is based on.
}
@@ -38,10 +38,10 @@ manner. However, the purpose of this paper goes beyond that and moves to a more
practical level by proposing the solution of a tool that can implement the
proposed safe use of these technologies. In particular, this tool can not only
create virtual machines across multiple cloud providers but also harden them in
an automated manner. In addition, it is capable of installing the Docker
container engine on these virtual machines, which it can also harden. The main
goal of this work is to make it easier for an organization to install and
configure in an automated manner a secure, distributed environment for the
an automated manner. In addition to that, it is capable of installing the
Docker container engine on these virtual machines, which it can also harden.
The main goal of this work is to make it easier for an organization to install
and configure in an automated manner a secure, distributed environment for the
deployment and operation of a microservices application. This automation lies
in the correct configuration of the tool, which does not require any special
knowledge on technical or security issues in regard to infrastructure and

View File

@@ -104,7 +104,7 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ
υποκείμενο διακομιστή προς κατάτμηση. Η επιλογή τύπου υπερ-επόπτη είναι άμεσα
εξαρτώμενη από τις ανάγκες του κάθε χρήστη. Στην περίπτωση που η ταχύτητα και η
απόδοση είναι υψίστης σημασίας, η άμεση πρόσβαση του υπερ-επόπτη τύπου 1 στο
υλικό συμβάλει στην επίτευξη της διατήρησης των δύο αυτών προδιαγραφών σε
υλικό συμβάλλει στην επίτευξη της διατήρησης των δύο αυτών προδιαγραφών σε
κατάλληλες τιμές. Από την άλλη, ένας υπερ-επόπτης τύπου 2 δεν έρχεται σε
αντιπαράθεση με το υποκείμενο ΛΣ και επιτρέπει την χρήση προγραμμάτων που το ΛΣ
πιθανόν να μην είναι σε θέση να εκτελέσει.
@@ -327,8 +327,8 @@ Container (δοχείο) αν και είναι διαφορετικοί. Παρ
ακόμα και στις μέρες μας, λόγω ενός συνδυασμού της δυσκολίας στην χρήση τους
και του εξειδικευμένου σκοπού ύπαρξης τους δεν είχαν υιοθετηθεί αρκετά. Όλα τα
παραπάνω οδήγησαν στην δημιουργία του Docker το 2013, με την έλευση του οποίου
οι τεχνολογία των δοχείων εκτοξεύτηκε. Το Docker αποτελεί μια υπηρεσία PaaS η
οποία παρέχει μια πλατφόρμα με μηχανισμούς για συναρμολόγηση, θέση σε
οι τεχνολογία των δοχείων εκτοξεύτηκε. Το Docker είναι ένα σύνολο προϊόντων
PaaS, παρέχοντας μια πλατφόρμα με μηχανισμούς για συναρμολόγηση, θέση σε
λειτουργία, εκτέλεση, ενημέρωση και διαχείριση προγραμμάτων σε μορφή δοχείων.
Σε αντίθεση με το LXC, αποτελεί μια μηχανή δοχείων υψηλού επιπέδου με κύριο
στόχο την δοχειοποίηση εφαρμογών. Εκτός από τον διαχωρισμό ανάμεσα στον πηγαίο
@@ -488,7 +488,7 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία
να περάσει από τον εικονικό πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, ο
συνδυασμός με την αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο
απομόνωσης εφόσον στην προκειμένη περίπτωση η άμεση επικοινωνία με τον πυρήνα
του συστήματος αφορά το ΛΣ φιλοξενίας και όχι το κύριο σύστημα.
του συστήματος αφορά το φιλοξενούμενο ΛΣ και όχι το κύριο σύστημα.
Παρ' όλα αυτά, υπάρχουν περιπτώσεις όπου η απόδοση του συστήματος δεν δύναται
να θυσιαστεί για χάρη της ασφάλειας. Σε αυτές τις περιπτώσεις, επιβάλλεται η
@@ -559,10 +559,10 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία
άρνησης υπηρεσιών είναι πως σε αντίθεση με μια εικονική μηχανή όπου επιλέγεται
το εύρος πρόσβασης στους πόρους του συστήματος κατά τη δημιουργία της, η αρχική
ρύθμιση του Docker επιτρέπει στα δοχεία να χρησιμοποιήσουν το ίδιο ποσοστό
πόρων με το κύριο σύστημα, δηλαδή χωρίς περιορισμούς. Επομένως, εάν ένα δοχείο
βρεθεί υπό τον έλεγχο ενός επιτιθέμενου, αυτό μπορεί δυνητικά να εμποδίσει την
εκτέλεση άλλων δοχείων ή ακόμα και την εκτέλεση άλλων εφαρμογών που εκτελούνται
στο σύστημα.
πόρων με το κύριο σύστημα, δηλαδή δεν υπάρχουν περιορισμοί. Επομένως, εάν ένα
δοχείο βρεθεί υπό τον έλεγχο ενός επιτιθέμενου, αυτό μπορεί δυνητικά να
εμποδίσει την εκτέλεση άλλων δοχείων ή ακόμα και την εκτέλεση άλλων εφαρμογών
που εκτελούνται στο σύστημα.
Σχετικά με τις επιθέσεις που αποσκοπούν στην απόκτηση πρόσβασης στο κύριο
σύστημα μέσω του δοχείου, ο κίνδυνος οφείλεται στον τρόπο λειτουργίας των
@@ -581,7 +581,7 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία
Οι πιο συνήθεις τρόποι αντιμετώπισης της ανεπαρκούς προκαθορισμένης ασφάλειας
του Docker (δηλ. της ελαστικής απομόνωσης) είναι η ρύθμιση καλύτερων προφίλ
AppArmor ή κανόνων SELinux προκειμένου να απομονωθεί καλύτερα από το κύριο
AppArmor ή κανόνων SELinux προκειμένου να απομονωθεί περισσότερο από το κύριο
σύστημα. Στην πραγματικότητα, αυτές οι πρακτικές λαμβάνουν υπόψιν τους κυρίως
τα δοχεία και όχι τη μηχανή δοχείων καθ' αυτού. Γι' αυτό τον λόγο, πολλές φορές
πρέπει να ακολουθούνται και καλύτερες πρακτικές κατά τη λειτουργία/χρήση του
@@ -598,19 +598,19 @@ Docker, όπως η αποφυγή χρήσης του διαχειριστικ
χρησιμοποιώντας ένα ασφαλέστερο από το αρχικό Container Runtime και εκτελώντας
το Docker εξ ολοκλήρου χωρίς την ανάγκη διαχειριστικών δικαιωμάτων. Το εργαλείο
αυτό επικοινωνεί με πολλούς παρόχους νέφους στέλνοντας τους παραμέτρους για τις
προδιαγραφές εικονικών μηχανών προκειμένου να μπορέσουν να δημιουργηθούν με
αυτοματοποιημένο τρόπο, επιτρέποντας έτσι την δημιουργία πολλαπλών ασφαλών
περιβαλλόντων ώστε να μπορεί ένας χρήστης να εγκαθιστά εκεί τα δοχεία της
εφαρμογής του. Η σκλήρυνση του ΛΣ επιτυγχάνεται με την εκτέλεση πολλών βημάτων
στα οποία μεταξύ άλλων περιλαμβάνεται η σκλήρυνση του SSH, ο εντοπισμός, η
εγκατάσταση, η ρύθμιση και η ενεργοποίηση του κατάλληλου προγράμματος για
ανάχωμα ασφαλείας και για παροχή MAC (Mandatory Access Control) και η
δημιουργία και ενεργοποίηση περιοδικά εκτελέσιμων προγραμμάτων για την
ενημέρωση του συστήματος και το άνοιγμα/κλείσιμο θυρών προγραμμάτων. Η
απεξάρτηση από τον διαχειριστικό λογαριασμό επιτυγχάνεται χάρη στη δουλειά του
Akihiro Suda πάνω στο rootlesskit \footfullcite{AkihiroSuda}, επιτρέποντας έτσι
έναν πλαστό διαχειριστικό λογαριασμό προκειμένου να μπορέσει η μηχανή δοχείων
να εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του συστήματος. Τέλος, η
προδιαγραφές εικονικών μηχανών προκειμένου να μπορέσουν να δημιουργηθούν
αυτόματα, επιτρέποντας έτσι την δημιουργία πολλαπλών ασφαλών περιβαλλόντων ώστε
να μπορεί ένας χρήστης να εγκαθιστά εκεί τα δοχεία της εφαρμογής του. Η
σκλήρυνση του ΛΣ επιτυγχάνεται με την εκτέλεση πολλών βημάτων στα οποία μεταξύ
άλλων περιλαμβάνεται η σκλήρυνση του SSH, ο εντοπισμός, η εγκατάσταση, η
ρύθμιση και η ενεργοποίηση του κατάλληλου προγράμματος για ανάχωμα ασφαλείας
και για παροχή MAC (Mandatory Access Control) και η δημιουργία και ενεργοποίηση
περιοδικά εκτελέσιμων προγραμμάτων για την ενημέρωση του συστήματος και το
άνοιγμα/κλείσιμο θυρών προγραμμάτων. Η απεξάρτηση από τον διαχειριστικό
λογαριασμό επιτυγχάνεται χάρη στη δουλειά του Akihiro Suda πάνω στο rootlesskit
\footfullcite{AkihiroSuda}, επιτρέποντας έτσι την χρήση ενός πλαστού
διαχειριστικού λογαριασμού προκειμένου να μπορέσει η μηχανή δοχείων να
εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του συστήματος. Τέλος, η
αντικατάσταση του αρχικού Container Runtime με το αντίστοιχο του gVisor
\footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τείχος προστασίας απέναντι σε
συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το σύστημα μας πιο ασφαλές

View File

@@ -1,6 +1,6 @@
\chapter{Υπόβαθρο} \label{background}
\hyphenation{πολλές}
\hyphenation{πολλές μελών/οργανισμών}
\noindent Προκειμένου να κατανοήσουμε πλήρως το πρόβλημα που επιλύει η παρούσα
εργασία πρέπει να αναλύσουμε μερικές βασικές έννοιες. Αρχικά, θα δούμε τι είναι
@@ -215,19 +215,19 @@ SDKs (Software Development Kits)).
\item \textbf{Δημόσιο νέφος (Public Cloud)}:
Εδώ, το νέφος υποδομής είναι διαθέσιμο για το γενικό κοινό. Μπορεί να
ανήκει και να διαχειρίζεται από μια επιχείρηση, έναν ακαδημαϊκό ή
κυβερνητικό οργανισμό ή έναν συνδυασμό των παραπάνω. Λειτουργεί εντός
των υποδομών του παρόχου νέφους. Το δημόσιο νέφος είναι ουσιαστικά οι
εικονικές μηχανές που εκτελούνται σε διακομιστές του παρόχου νέφους,
των οποίων οι υπολογιστικοί πόροι χρησιμοποιούνται από πολλούς
καταναλωτές ταυτόχρονα. Αποτελεί το πιο δημοφιλές μοντέλο που παρέχουν
εταιρίες υπηρεσιών IaaS λόγω της απουσίας απαίτησης μεγάλου αρχικού
κόστους και της ευελιξίας που παρέχεται μέσω της αυτοεξυπηρέτησης κατά
παραγγελία. Είναι η κατάλληλη επιλογή για μεγάλους φόρτους εργασίας
μικρής διάρκειας λόγω του μοντέλου χρέωσης ανά χρήση και διευκολύνει
μια επιχείρηση στην μετέπειτα διαχείριση του κόστους με βάση τις
προβλέψεις της ζήτησης της υπηρεσίας που αυτή προσφέρει.
Εδώ, το νέφος υποδομής είναι διαθέσιμο για το γενικό κοινό. Μπορεί να
ανήκει και να διαχειρίζεται από μια επιχείρηση, έναν ακαδημαϊκό ή
κυβερνητικό οργανισμό ή έναν συνδυασμό των παραπάνω. Λειτουργεί εντός
των υποδομών του παρόχου νέφους. Το δημόσιο νέφος είναι ουσιαστικά οι
εικονικές μηχανές που εκτελούνται σε διακομιστές του παρόχου νέφους,
των οποίων οι υπολογιστικοί πόροι χρησιμοποιούνται από πολλούς
καταναλωτές ταυτόχρονα. Αποτελεί το πιο δημοφιλές μοντέλο που παρέχουν
εταιρείες υπηρεσιών IaaS λόγω της απουσίας απαίτησης μεγάλου αρχικού
κόστους και της ευελιξίας που παρέχεται μέσω της αυτοεξυπηρέτησης κατά
παραγγελία. Είναι η κατάλληλη επιλογή για μεγάλους φόρτους εργασίας
μικρής διάρκειας λόγω του μοντέλου χρέωσης ανά χρήση και διευκολύνει
μια επιχείρηση στην μετέπειτα διαχείριση του κόστους με βάση τις
προβλέψεις της ζήτησης της υπηρεσίας που αυτή προσφέρει.
\item \textbf{Υβριδικό νέφος (Hybrid Cloud)}:
@@ -249,13 +249,13 @@ SDKs (Software Development Kits)).
\footfullcite{redhatVirtualizationDefinition}, η εικονικοποίηση είναι μια
τεχνολογία που μας επιτρέπει να δημιουργήσουμε πολλαπλά εικονικά περιβάλλοντα ή
αποκλειστικούς πόρους από ένα μόνο, φυσικό σύστημα υλικού. Ένα λογισμικό
ονόματι υπερ-επόπτης (hypervisor) συνδέεται στο υλικό αυτό\footnote{Απευθείας
στην εικονικοποίηση υποβοηθούμενη από το υλικό και έμμεσα στην
εικονικοποίηση υποβοηθούμενη από το λογισμικό.} και δίνει τη δυνατότητα
διαμερισμού ενός συστήματος σε ξεχωριστά, διακριτά και ασφαλή περιβάλλοντα,
γνωστά και ως εικονικές μηχανές (Virtual Machines - VMs). Επομένως, αυτές οι
εικονικές μηχανές βασίζονται στην ικανότητα του υπερ-επόπτη να διαχωρίζει τους
πόρους της μηχανής και να τους κατανέμει κατάλληλα.
ονόματι υπερ-επόπτης (hypervisor) συνδέεται στο υλικό
αυτό\footnote{\textgreek{Απευθείας στην εικονικοποίηση υποβοηθούμενη από το
υλικό και έμμεσα στην εικονικοποίηση υποβοηθούμενη από το λογισμικό.}} και
δίνει τη δυνατότητα διαμερισμού ενός συστήματος σε ξεχωριστά, διακριτά και
ασφαλή περιβάλλοντα, γνωστά και ως εικονικές μηχανές (Virtual Machines - VMs).
Επομένως, αυτές οι εικονικές μηχανές βασίζονται στην ικανότητα του υπερ-επόπτη
να διαχωρίζει τους πόρους της μηχανής και να τους κατανέμει κατάλληλα.
Το φυσικό υλικό, εξοπλισμένο με έναν υπερ-επόπτη, ονομάζεται ξενιστής (host) ή
μηχάνημα φιλοξενίας, ενώ οι πολλές εικονικές μηχανές που χρησιμοποιούν τους
@@ -300,7 +300,7 @@ SDKs (Software Development Kits)).
Παραδοσιακά, αυτή η αρχιτεκτονική όπου εκτελούνται μεμονωμένες εργασίες σε
μεμονωμένους διακομιστές ήταν ευκολότερη και πιο αξιόπιστη αλλά δεν παύει να
είναι η λιγότερο αποδοτική λύση. Με την άφιξη της τεχνολογίας της
είναι και η λιγότερο αποδοτική λύση. Με την άφιξη της τεχνολογίας της
εικονικοποίησης όμως, είναι πλέον εφικτό να χωριστεί ένας διακομιστής σε
περισσότερα μέρη, έχοντας δύο ή παραπάνω εικονικά μηχανήματα με τη χρήση ενός
φυσικού.
@@ -378,12 +378,12 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η
Σήμερα είναι τόσο διαδεδομένη σε όλες τις επιχειρήσεις που συχνά απαιτείται
εξειδικευμένο λογισμικό διαχείρισης των εικονικών πόρων
\footfullcite{redhatVirtualizationManagement} για να μπορέσει κανείς να
παρακολουθεί τα δρώμενα της επιχείρησης. Πρόκειται για ένα λογισμικό το οποίο
παρακολουθεί τα δρώμενα μιας επιχείρησης. Πρόκειται για ένα λογισμικό το οποίο
διασυνδέεται με εικονικά περιβάλλοντα και το υποκείμενο φυσικό υλικό τους με
απώτερο σκοπό την απλοποίηση της διαχείρισης πόρων, τη βελτίωση της ανάλυσης
δεδομένων και τον εξορθολογισμό των λειτουργιών. Ουσιαστικά ένα λογισμικό που
συνδέεται απομακρυσμένα με υπερ-επόπτες, προσφέροντας φιλική προς τον χρήση
διεπαφή και επιπρόσθετες λειτουργίες όπως η συγκρότηση αναφορών χρήσης, η
δεδομένων και τον εξορθολογισμό των λειτουργιών τους. Ουσιαστικά ένα λογισμικό
που συνδέεται απομακρυσμένα με υπερ-επόπτες, προσφέροντας μια φιλική προς τον
χρήση διεπαφή και επιπρόσθετες λειτουργίες όπως η συγκρότηση αναφορών χρήσης, η
αυτοματοποίηση επιβολής κανόνων και η παρακολούθηση χρήσης εικονικών
περιβαλλόντων.
@@ -787,26 +787,26 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα
\end{itemize}
Η εικονικοποίηση μνήμης αποτελεί ένα κομμάτι της ευρύτερης έννοιας της
εικονικοποίησης πόρων \footfullcite{hostitsmartMemoryVirtualization}.
Συγκεκριμένα, είναι μια τεχνική κατά την οποία δύναται να
διαχειριστούμε με έναν πιο αποδοτικό τρόπο την φυσική μνήμη (RAM) που
χρησιμοποιείται στα υπολογιστικά μας συστήματα. Αυτό συμβαίνει διότι
στην βασικότερη μορφή της, η εικονικοποίηση μνήμης εμφανίζεται ως
εικονική μνήμη ή όπως η μνήμη swap σε διακομιστές και σταθμούς εργασίας
\footfullcite{petriMemoryVirtualization}. Δηλαδή, ως επιπρόσθετη μνήμη
την οποία το σύστημα εκλαμβάνει ως πραγματική και μπορεί να την
χρησιμοποιήσει προτού αναγκαστεί να τερματίσει διεργασίες για να
απελευθερώσει κομμάτι της μνήμης. Για να επιτευχθεί αυτό, μέσω του
υπερ-επόπτη πραγματοποιείται αντιστοίχιση σελίδων φυσικής μνήμης του
φιλοξενούμενου λειτουργικού συστήματος στις σελίδες φυσικής μνήμης της
υποκείμενης μηχανής. Καθ' αυτόν τον τρόπο, κάθε εικονική μηχανή βλέπει
έναν συνεχόμενο χώρο διευθύνσεων μνήμης που δύναται να χρησιμοποιήσει
\footfullcite{vmwareMemoryVirtualization}. Ως αποτέλεσμα, επιτυγχάνεται
εν γένει υψηλότερη αξιοποίηση της μνήμης και η δυνατότητα διαμοιρασμού
μιας κοινής δεξαμενής μνήμης ακόμα και σε κατανεμημένα συστήματα,
παρακάμπτοντας τους περιορισμούς της φυσικής μνήμης
\footfullcite{codingninjasMemoryVirtualization}.
Η εικονικοποίηση μνήμης αποτελεί ένα κομμάτι της ευρύτερης έννοιας της
εικονικοποίησης πόρων \footfullcite{hostitsmartMemoryVirtualization}.
Συγκεκριμένα, είναι μια τεχνική κατά την οποία δύναται να
διαχειριστούμε με έναν πιο αποδοτικό τρόπο την φυσική μνήμη (RAM) που
χρησιμοποιείται στα υπολογιστικά μας συστήματα. Αυτό συμβαίνει διότι
στην βασικότερη μορφή της, η εικονικοποίηση μνήμης εμφανίζεται ως
εικονική μνήμη ή όπως η μνήμη swap σε διακομιστές και σταθμούς εργασίας
\footfullcite{petriMemoryVirtualization}. Δηλαδή, ως επιπρόσθετη μνήμη
την οποία το σύστημα εκλαμβάνει ως πραγματική και μπορεί να την
χρησιμοποιήσει προτού αναγκαστεί να τερματίσει διεργασίες για να
απελευθερώσει κομμάτι της δικής του μνήμης. Για να επιτευχθεί αυτό,
μέσω του υπερ-επόπτη πραγματοποιείται αντιστοίχιση σελίδων φυσικής
μνήμης του φιλοξενούμενου λειτουργικού συστήματος στις σελίδες φυσικής
μνήμης της υποκείμενης μηχανής. Καθ' αυτόν τον τρόπο, κάθε εικονική
μηχανή βλέπει έναν συνεχόμενο χώρο διευθύνσεων μνήμης που δύναται να
χρησιμοποιήσει \footfullcite{vmwareMemoryVirtualization}. Ως
αποτέλεσμα, επιτυγχάνεται εν γένει υψηλότερη αξιοποίηση της μνήμης και
η δυνατότητα διαμοιρασμού μιας κοινής δεξαμενής μνήμης ακόμα και σε
κατανεμημένα συστήματα, παρακάμπτοντας τους περιορισμούς της φυσικής
μνήμης \footfullcite{codingninjasMemoryVirtualization}.
\clearpage
@@ -1159,7 +1159,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ
\cite{arif2015virtualization} αναφέρεται στην εικονικοποίηση χώρου αποθήκευσης
μέσω δικτύου αλλά πολλές από τις απειλές δεν περιορίζονται μονάχα εκεί.
Πολλές από τις απειλές που θα αναφερθούν παρακάτω
Πολλές από τις απειλές που θα αναφερθούν παρακάτω στο
\ref{virtualizationThreatsCategorization}, μπορούν να κατηγοριοποιηθούν και ως
εξής:
@@ -1215,7 +1215,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ
Διαχειριστή $\Rightarrow$ Εικονική Μηχανή &
Απειλές που προέρχονται από τον διαχειριστή εικονικών μηχανών και στοχεύουν τις
Απειλές που προέρχονται από τον διαχειριστή εικονικών μηχανών και στοχεύουν
εικονικές μηχανές. \\
\hline
@@ -1267,7 +1267,7 @@ penetration)\cite{arif2015virtualization}.
προστατεύσει τα δεδομένα της, έτσι και ο πάροχος πρέπει να εμπιστεύεται την
επιχείρηση ότι δε θα προσπαθήσει να προκαλέσει ζημιά στις υπηρεσίες του. Αυτό
μπορεί να πραγματοποιηθεί με την εκτέλεση κακόβουλου λογισμικού στις εικονικές
μηχανές του παρόχου είτε από την επιχείρηση την ίδια, είτε μέσω ενός
μηχανές του παρόχου είτε από την επιχείρηση την ίδια, είτε από έναν
επιτιθέμενου που παραβίασε τις εικονικές μηχανές της.
Ουσιαστικά κάθε εικονική μηχανή που έχει πρόσβαση στο διαδίκτυο είναι ευάλωτη
@@ -1278,9 +1278,9 @@ penetration)\cite{arif2015virtualization}.
απαιτείται να έχει λάβει τα κατάλληλα μέτρα προστασίας έναντι κακόβουλων
εικονικών μηχανών.
Με βάση την ανάλυση που έγινε στο \cite{virtualizationSecurity}, στις απειλές
από εικονική μηχανή σε εικονική μηχανή, οι πιο συνηθισμένες είναι η επίθεση
πλευρικού καναλιού (cross VM side channel attack), οι επιθέσεις βάσει
Με βάση την ανάλυση που έγινε στο \cite{virtualizationSecurity}, σχετικά με
απειλές από εικονική μηχανή σε εικονική μηχανή, οι πιο συνηθισμένες είναι η
επίθεση πλευρικού καναλιού (cross VM side channel attack), οι επιθέσεις βάσει
χρονοπρογραμματιστή (Scheduler based attacks) και οι επιθέσεις που στοχεύουν
τρωτότητες της διαδικασίας μετανάστευσης και επαναφοράς εικονικών μηχανών (VM
migration and rollback attacks). Από την άλλη, όσον αφορά τις απειλές από
@@ -1424,7 +1424,7 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
προκειμένου να διασφαλίσει την ακεραιότητα, την εμπιστευτικότητα και τη
διαθεσιμότητα των δεδομένων της. Αυτά τα τρία στοιχεία αποτελούν την τριάδα της
ασφάλειας \footfullcite{ciaTriad} και η απώλεια οποιουδήποτε από αυτά μπορεί να
έχει σοβαρές επιπτώσεις στην επιχείρηση. Η σημασία του καθενός, καθώς και
έχει σοβαρές επιπτώσεις για την επιχείρηση. Η σημασία του καθενός, καθώς και
γενικές ορθές πρακτικές διατήρησης τους περιγράφονται ως εξής:
\begin{itemize}
@@ -1511,12 +1511,12 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
\item \textbf{Έλεγχος των μηχανημάτων που έχουν πρόσβαση στον υπερ-επόπτη}:
Οι επιχειρήσεις πρέπει να ελέγχουν συχνά ποια μηχανήματα έχουν πρόσβαση
στον υπερ-επόπτη και να προσθέτουν ή να αφαιρούν μηχανήματα από την
εξουσιοδοτημένη λίστα. Ο συχνός έλεγχος πρόσβασης θα μπορέσει επίσης να
αναδείξει προσπάθειες μη εξουσιοδοτημένης πρόσβασης ώστε να ληφθούν τα
κατάλληλα μέτρα περιορισμού των ατόμων που επιχειρούν να εισέλθουν σε
αυτόν.
Οι επιχειρήσεις πρέπει να ελέγχουν συχνά ποια μηχανήματα έχουν πρόσβαση
στον υπερ-επόπτη και να προσθέτουν ή να αφαιρούν μηχανήματα από την
λίστα εξουσιοδότησης. Ο συχνός έλεγχος πρόσβασης θα μπορέσει επίσης να
αναδείξει προσπάθειες μη εξουσιοδοτημένης πρόσβασης ώστε να ληφθούν τα
κατάλληλα μέτρα περιορισμού των ατόμων που επιχειρούν να εισέλθουν σε
αυτόν.
\item \textbf{Περιορισμός δικτυακής πρόσβασης στο διαχειριστικό πάνελ του υπερ-επόπτη}:
@@ -1622,8 +1622,8 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
Τα δοχεία ενθυλακώνουν ένα λογισμικό ή μέρος εφαρμογής ως ένα αυτόνομο πακέτο
που περιέχει τον κώδικα, τις βιβλιοθήκες και τις εξαρτήσεις που χρειάζεται για
να εκτελεστεί. Οι διεργασίες ενός δοχείου θεωρούνται απομονωμένες με την έννοια
ότι δεν έχουν ανάγκη ένα αντίγραφο του λειτουργικού συστήματος αλλά αντ' αυτού
μια μηχανή εκτέλεσης δοχείων (container execution engine) στο μηχάνημα
ότι δεν έχουν ανάγκη για ένα αντίγραφο του λειτουργικού συστήματος αλλά αντ'
αυτού μιας μηχανής εκτέλεσης δοχείων (container execution engine) στο μηχάνημα
(φιλοξενίας) που λειτουργεί ως διαμεσολαβητής των δοχείων για να μοιράζονται το
ίδιο λειτουργικό σύστημα και κατά προέκταση τους υποκείμενους πόρους του μεταξύ
τους. Κοινές βιβλιοθήκες ή εκτελέσιμα αρχεία μιας στρώσης εικόνας δοχείων
@@ -1680,15 +1680,15 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
\item \textbf{Απομόνωση σφαλμάτων}:
Εφόσον κάθε δοχείο είναι απομονωμένο και λειτουργεί ανεξάρτητα από τα
υπόλοιπα, η αποτυχία ενός δοχείου στο ίδιο ΛΣ δε θα επηρεάσει τη συνεχή
λειτουργία των υπόλοιπων δοχείων. Με αυτόν τον τρόπο, οι ομάδες
ανάπτυξης λογισμικού μπορούν να εντοπίζουν και να διορθώνουν τυχόν
τεχνικά προβλήματα χωρίς να υπάρχει διακοπή λειτουργίας σε άλλα δοχεία.
Επιπρόσθετα, ο εντοπισμός του προβλήματος είναι εύκολος διότι εστιάζει
σε ένα μόνο δοχείο και όχι σε περισσότερα. Αυτό οδηγεί σε πιο γρήγορη
αποσφαλμάτωση και εν τέλει την πιο γρήγορη ανάπτυξη και διατήρηση
προγραμμάτων.
Εφόσον κάθε δοχείο είναι απομονωμένο και λειτουργεί ανεξάρτητα από τα
υπόλοιπα, η αποτυχία ενός δοχείου στο ίδιο ΛΣ δε θα επηρεάσει τη συνεχή
λειτουργία των υπόλοιπων δοχείων. Με αυτόν τον τρόπο, οι ομάδες
ανάπτυξης λογισμικού μπορούν να εντοπίζουν και να διορθώνουν τυχόν
τεχνικά προβλήματα χωρίς να υπάρχει διακοπή λειτουργίας σε άλλα δοχεία.
Επιπρόσθετα, ο εντοπισμός του προβλήματος είναι εύκολος διότι εστιάζει
σε ένα μόνο δοχείο και όχι σε περισσότερα. Αυτό οδηγεί σε πιο γρήγορη
αποσφαλμάτωση και εν τέλει την πιο γρήγορη ανάπτυξη και συντήρηση
προγραμμάτων.
\item \textbf{Αποδοτικότητα}:
@@ -1712,16 +1712,16 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ
\item \textbf{Ασφάλεια}:
Η απομόνωση των εφαρμογών ως δοχεία, όταν εφαρμόζεται ακολουθώντας
ορθές πρακτικές, εγγενώς αποτρέπει την εισβολή κακόβουλου λογισμικού
από το να επηρεάσει τα υπόλοιπα δοχεία ή το σύστημα στο οποίο
εκτελούνται. Συγκεκριμένα, χρησιμοποιώντας Kernel Security Modules όπως
AppArmor ή SELinux μπορούν να ορισθούν άδειες ασφαλείας με σκοπό τον
περιορισμό του εύρους πρόσβασης του Docker στο σύστημα, ενώ με access
authorization plugins \footfullcite{accessAuthorizationPlugin},
περιορίζεται η πρόσβαση στον δαίμονα του Docker. Επιπροσθέτως, πολύ
εύκολα μπορεί να περιοριστεί και η επικοινωνία μεταξύ δοχείων, καθώς
και με το δίκτυο του συστήματος.
Η απομόνωση των εφαρμογών ως δοχεία, όταν εφαρμόζεται ακολουθώντας
ορθές πρακτικές, εγγενώς αποτρέπει την εισβολή κακόβουλου λογισμικού
από το να επηρεάσει τα υπόλοιπα δοχεία ή το σύστημα στο οποίο
εκτελούνται. Συγκεκριμένα, χρησιμοποιώντας Kernel Security Modules όπως
είναι το AppArmor ή το SELinux μπορούν να ορισθούν άδειες ασφαλείας με
σκοπό τον περιορισμό του εύρους πρόσβασης του Docker στο σύστημα, ενώ
με access authorization plugins
\footfullcite{accessAuthorizationPlugin}, περιορίζεται η πρόσβαση στον
δαίμονα του Docker. Επιπροσθέτως, πολύ εύκολα μπορεί να περιοριστεί και
η επικοινωνία μεταξύ δοχείων, καθώς και με το δίκτυο του συστήματος.
\end{itemize}
@@ -1768,7 +1768,7 @@ runtimes όπως το LXC και το containerd, το οποίο ήταν γι
διαχειριστή/ριζικού (root).
Ένα ακόμα εργαλείο που έχει παρόμοια αρχιτεκτονική με το Podman είναι το rkt το
οποίο προσπαθούσε να κρατήσει μια προσέγγιση ασφαλούς σχεδιασμού εξαρχής
οποίο προσπαθούσε να κρατήσει μια προσέγγιση ασφαλούς σχεδιασμού εξ αρχής
(Secure-by-design). Μπορούσε να ενσωματώσει χαρακτηριστικά ασφαλείας, όπως
υποστήριξη SELinux, TPM measurement και εκτέλεση δοχείων σε απομονωμένες από το
υλικό εικονικές μηχανές. Παρ' όλα αυτά, σύμφωνα με το \cite{dockerAlternatives}
@@ -1886,8 +1886,8 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την
\item \textbf{IPC namespaces} για περιορισμό IPC, δηλαδή της επικοινωνίας
των διεργασιών μεταξύ τους. Τα IPC namespaces καθιστούν δυνατή τη
δημιουργία ξεχωριστών συνόλων των διεργασιών, που επικοινωνούν μεταξύ
τους αλλά όχι με άλλες διεργασίες πέραν του υποσυνόλου.
δημιουργία ξεχωριστών συνόλων των διεργασιών που επικοινωνούν μεταξύ τους,
αλλά όχι με άλλες διεργασίες πέραν του υποσυνόλου.
\item \textbf{Network namespaces}. Μία από τις σημαντικότερες απομονώσεις
είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος
@@ -1910,7 +1910,7 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την
Αυτές οι δυνατότητες υποστηρίζονται από το Docker και μπορεί κανείς να τις
εκμεταλλευτεί για να προστατεύσει το περιβάλλον του από επιθέσεις. Επιπλέον,
υπάρχει και η δυνατότητα υποστήριξης Kernel Security Modules, όπως SELinux
υπάρχει και η δυνατότητα υποστήριξης Kernel Security Modules, όπως τα SELinux
\footfullcite{selinux} και AppArmor \footfullcite{apparmor} αλλά και του
Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), καθώς επίσης και
συμβατότητα με Linux capabilities, που θα μπορούσαν να εισάγουν ένα ακόμα
@@ -1925,7 +1925,7 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC),
\clearpage
\subsubsection{Συχνά είδη επιθέσεων σε δοχεία και μέθοδοι πρόληψης} \label{commonAttacksAndPrevention}
\subsubsection{Συχνά είδη επιθέσεων σε δοχεία και μέθοδοι πρόληψης τους} \label{commonAttacksAndPrevention}
Μερικά είδη επιθέσεων σε δοχεία με τους τρόπους αντιμετώπισής τους, όπως
αναφέρονται στο \cite{yasrab2018mitigating}, είναι τα εξής:
@@ -1951,34 +1951,34 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC),
\item \textbf{Άρνηση υπηρεσίας}:
Μια από τις πιο συνηθισμένες επιθέσεις σε πόρους διαθέσιμους μέσω
δικτύου. Κατά τη διάρκεια μιας τέτοιας επίθεσης, μια διεργασία ή ένα
σύνολο διεργασιών επιχειρεί να καταναλώσει όλους τους πόρους του
συστήματος προκειμένου να μην μπορεί να εξυπηρετήσει άλλους χρήστες.
Αυτό μπορεί να συμβεί εάν ένα δοχείο βρεθεί υπό τον έλεγχο ενός
επιτιθέμενου και επιχειρήσει να διεκδικήσει πόρους που κανονικά δε
χρειάζεται. Για να ανταπεξέλθει ένα σύστημα σε μια επίθεση άρνησης
υπηρεσίας, πρέπει να γίνει χρήση των δυνατοτήτων που αναφέραμε στο
\ref{dockerAttackVectorMitigation} με σκοπό τον αυστηρότερο έλεγχο
διαμοιρασμού των πόρων του συστήματος. Με τον καθορισμό διαθέσιμων
πόρων για κάθε δοχείο εξαρχής, δεν υπάρχει κίνδυνος να προσπαθήσει
κάποιο δοχείο να διεκδικήσει περισσότερους.
Μια από τις πιο συνηθισμένες επιθέσεις σε πόρους διαθέσιμους μέσω
δικτύου είναι η άρνηση υπηρεσίας. Κατά τη διάρκεια μιας τέτοιας
επίθεσης, μια διεργασία ή ένα σύνολο διεργασιών επιχειρεί να
καταναλώσει όλους τους πόρους του συστήματος προκειμένου να μην μπορεί
να εξυπηρετήσει άλλους χρήστες. Αυτό μπορεί να συμβεί εάν ένα δοχείο
βρεθεί υπό τον έλεγχο ενός επιτιθέμενου και επιχειρήσει να διεκδικήσει
πόρους που κανονικά δε χρειάζεται. Για να ανταπεξέλθει ένα σύστημα σε
μια επίθεση άρνησης υπηρεσίας, πρέπει να γίνει χρήση των δυνατοτήτων
που αναφέραμε στο \ref{dockerAttackVectorMitigation} με σκοπό τον
αυστηρότερο έλεγχο διαμοιρασμού των πόρων του συστήματος. Με τον
καθορισμό διαθέσιμων πόρων για κάθε δοχείο εξ αρχής, δεν υπάρχει
κίνδυνος να προσπαθήσει κάποιο δοχείο να διεκδικήσει περισσότερους.
\clearpage
\item \textbf{Αποδράσεις Δοχείων (Container Breakouts)}:
Σε τέτοιου είδους επιθέσεις, ένας επιτιθέμενος προσπαθεί αφού απέκτησε
πρόσβαση σε ένα δοχείο, να καταφέρει μέσω αυτού να έχει πρόσβαση στα
αρχεία του κύριου συστήματος. Αυτό μπορεί να συμβεί με τη χρήση μιας
συνάρτησης που απαιτεί δικαιώματα διαχειριστικού λογαριασμού μέσα από
το δοχείο προκειμένου να κάνει κλήση μιας ικανότητας (capability) στην
οποία είχε πρόσβαση εξαρχής. Σύμφωνα με το Docker η μόνη έκδοση που
είχε αυτή την ευπάθεια ήταν η 0.11 και στην επόμενη διορθώθηκε. Για την
πρόληψη μελλοντικών μεθόδων διεκπεραίωσης τέτοιου είδους επίθεσης,
συνίσταται να τίθενται τα δοχεία και οι αποθηκευτικοί τους χώροι σε
κατάσταση μονάχα ανάγνωσης, καθώς και να αποφεύγεται η χρήση της
παραμέτρου \textquote{privileged}.
Σε τέτοιου είδους επιθέσεις, ένας επιτιθέμενος προσπαθεί αφού απέκτησε
πρόσβαση σε ένα δοχείο, να καταφέρει μέσω αυτού να έχει πρόσβαση στα
αρχεία του κύριου συστήματος. Αυτό μπορεί να συμβεί με τη χρήση μιας
συνάρτησης που απαιτεί δικαιώματα διαχειριστικού λογαριασμού μέσα από
το δοχείο προκειμένου να κάνει κλήση μιας ικανότητας (capability) στην
οποία είχε πρόσβαση εξ αρχής. Σύμφωνα με το Docker η μόνη έκδοση που
μπορούσε να επηρεαστεί από αυτή την ευπάθεια ήταν η 0.11 και στην
επόμενη διορθώθηκε. Για την πρόληψη μελλοντικών μεθόδων διεκπεραίωσης
τέτοιου είδους επίθεσης, συνίσταται να τίθενται τα δοχεία και οι
αποθηκευτικοί τους χώροι σε κατάσταση μονάχα ανάγνωσης, καθώς και να
αποφεύγεται η χρήση της παραμέτρου \textquote{privileged}.
\item \textbf{Δηλητηριασμένες εικόνες δοχείων}: