done. going to bed now.
This commit is contained in:
@@ -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}, εισάγει ένα πιο συμπαγές τείχος προστασίας απέναντι σε
|
||||
συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το σύστημα μας πιο ασφαλές
|
||||
|
||||
@@ -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{Δηλητηριασμένες εικόνες δοχείων}:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user