From 957ab81b66ed0f524aff9bedcec37af339daa114 Mon Sep 17 00:00:00 2001 From: konsthol Date: Mon, 22 Jan 2024 00:58:29 +0200 Subject: [PATCH] bug fix --- Chapters/1.Introduction.tex | 4 +- Chapters/2.Background.tex | 488 +++++++++++++++--------------- Chapters/3.RelevantWork.tex | 108 +++---- Chapters/4.ProjectDevelopment.tex | 39 +-- Chapters/5.ProjectShowcase.tex | 33 +- Chapters/6.Experimentation.tex | 82 ++--- Chapters/7.Conclusions.tex | 34 +-- 7 files changed, 388 insertions(+), 400 deletions(-) diff --git a/Chapters/1.Introduction.tex b/Chapters/1.Introduction.tex index 47502e9..a65fbfe 100644 --- a/Chapters/1.Introduction.tex +++ b/Chapters/1.Introduction.tex @@ -294,7 +294,7 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το \subsection{Εργαλεία διαχείρισης δοχείων και έλευση του Docker} \label{containerManagement} Στις μέρες μας, η δημοτικότητα του Docker έχει συνταυτίσει τους όρους Docker -και Container (δοχείο) αν και είναι διαφορετικοί. Παρόλα αυτά, η ιδέα της +και Container (δοχείο) αν και είναι διαφορετικοί. Παρ' όλα αυτά, η ιδέα της δημιουργίας απομονωμένων περιβαλλόντων εκτέλεσης λογισμικού υπήρχε προτού βγει το Docker στην αγορά. Ιστορικά, οι πρώτες τεχνολογίες περί δοχείων έκαναν την είσοδο τους από το 1979, όταν εισήχθη το chroot \footfullcite{chrootCommand} @@ -318,7 +318,7 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το εκτέλεση πολλαπλών λειτουργικών συστημάτων Linux στο ίδιο μηχάνημα. Χρησιμοποιώντας μηχανισμούς που προσέφερε το λειτουργικό σύστημα επέτρεπε πλήρη εικονικοποίηση ενός στιγμιότυπου Linux σε μορφή δοχείου και παρείχε αρκετές -λειτουργίες όπως η δημιουργία, η εκκίνηση και η διαγραφή LXC δοχείων. Παρόλα +λειτουργίες όπως η δημιουργία, η εκκίνηση και η διαγραφή LXC δοχείων. Παρ' όλα αυτά, επικεντρωνόταν στην δοχειοποίηση λειτουργικών συστημάτων και όχι εφαρμογών \footfullcite{LXCvsDocker}, καθιστώντας δύσκολη και περίπλοκη την χρήση του όταν η κύρια ανάγκη ήταν η απομόνωση εφαρμογών. diff --git a/Chapters/2.Background.tex b/Chapters/2.Background.tex index 75cd0c8..4ada6cc 100644 --- a/Chapters/2.Background.tex +++ b/Chapters/2.Background.tex @@ -37,10 +37,10 @@ Service) μεταφράζεται ως προσφορά απομακρυσμέν Σημαντικό ρόλο στην ευρεία αποδοχή των υπηρεσιών που προσφέρονται μέσω της νεφο-υπολογιστικής είχε η ευκολία αλλά και ευελιξία των μεθόδων διάθεσης και -μετέπειτα διαχείρισης τους. Σε κάθε περίπτωση γίνεται χρήση ενός API το οποίο +μετέπειτα διαχείρισής τους. Σε κάθε περίπτωση γίνεται χρήση ενός API το οποίο είναι προσπελάσιμο έμμεσα μέσω ενός γραφικού περιβάλλοντος (self-service -portal), εργαλείου γραμμής εντολών ή με προγραμματιστικό τρόπο (πχ. με τη χρήση -SDKs (Software Development Kits)). +portal), εργαλείου γραμμής εντολών ή άμεσα με προγραμματιστικό τρόπο (πχ. με τη +χρήση SDKs (Software Development Kits)). \section{Ορισμός Νεφο-Υπολογιστικής} \label{cloudComputingDefinition} @@ -51,7 +51,7 @@ SDKs (Software Development Kits)). αλληλεπίδρασης με τον πάροχο υπηρεσιών. Στους υπολογιστικούς αυτούς πόρους περιλαμβάνονται δίκτυα, διακομιστές, χώρος αποθήκευσης, εφαρμογές και υπηρεσίες. Αυτό το μοντέλο νέφους αποτελείται από πέντε βασικά χαρακτηριστικά, -τρία μοντέλα υπηρεσιών και τέσσερα μοντέλα παράδοσης. +τρία μοντέλα υπηρεσιών και τέσσερα μοντέλα ανάπτυξης. \subsection{Χαρακτηριστικά} \label{cloucComputingCharacteristics} @@ -136,41 +136,41 @@ SDKs (Software Development Kits)). \item \textbf{Platform as a Service (PaaS) (Πλατφόρμα ως Υπηρεσία)}: - Παρέχεται η δυνατότητα ανάπτυξης και εκτέλεσης εφαρμογών σε ένα - κατάλληλο περιβάλλον παρεχόμενο από μια πλατφόρμα που υποστηρίζεται από - πόρους του υπολογιστικού νέφους. Οι εφαρμογές αυτές αναπτύσσονται από - τον καταναλωτή μέσω της πλατφόρμας χρησιμοποιώντας ένα ολοκληρωμένο - περιβάλλον ανάπτυξης και εκτέλεσης αποτελούμενο από runtimes γλωσσών - προγραμματισμού, βιβλιοθήκες, υπηρεσίες και εργαλεία. Ο καταναλωτής δεν - έχει τον έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο - των εφαρμογών που εκτελούνται σε αυτήν, καθώς και των ρυθμίσεων - διαμόρφωσης τους και του περιβάλλοντος ανάπτυξης/εκτέλεσης τους. - Συνήθως, τα περιβάλλοντα είναι προκαθορισμένα ως προς το περιεχόμενο - τους αλλά γίνεται προσπάθεια από τους παρόχους των υπηρεσιών PaaS να - καλύψουν τις ανάγκες όλων των πιθανών ομάδων έργων λογισμικού σε σχέση - με τα διαφορετικά περιβάλλοντα που προσφέρονται. Το μοντέλο χρέωσης - υπηρεσιών PaaS συνήθως περιλαμβάνει μια σταθερή χρέωση ανά χρονική - περίοδο για κάθε είδος πόρου που χρειάστηκε να χρησιμοποιηθεί από τον - πάροχο για την επίτευξη των απαιτήσεων της εφαρμογής του καταναλωτή - μέσω της παρεχόμενης πλατφόρμας \footfullcite{paasPricingModel}. - Ουσιαστικά, ο καταναλωτής χρεώνεται με βάση την χρήση των πόρων του - παρόχου. + Παρέχεται η δυνατότητα ανάπτυξης και εκτέλεσης εφαρμογών σε ένα + κατάλληλο περιβάλλον παρεχόμενο από μια πλατφόρμα που υποστηρίζεται από + πόρους του υπολογιστικού νέφους. Οι εφαρμογές αυτές αναπτύσσονται από + τον καταναλωτή μέσω της πλατφόρμας χρησιμοποιώντας ένα ολοκληρωμένο + περιβάλλον ανάπτυξης και εκτέλεσης αποτελούμενο από runtimes γλωσσών + προγραμματισμού, βιβλιοθήκες, υπηρεσίες και εργαλεία. Ο καταναλωτής δεν + έχει τον έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο + των εφαρμογών που εκτελούνται σε αυτήν, καθώς και των ρυθμίσεων + διαμόρφωσής τους και του περιβάλλοντος ανάπτυξης/εκτέλεσής τους. + Συνήθως, τα περιβάλλοντα είναι προκαθορισμένα ως προς το περιεχόμενο + τους αλλά γίνεται προσπάθεια από τους παρόχους των υπηρεσιών PaaS να + καλύψουν τις ανάγκες όλων των πιθανών ομάδων έργων λογισμικού σε σχέση + με τα διαφορετικά περιβάλλοντα που προσφέρονται. Το μοντέλο χρέωσης + υπηρεσιών PaaS συνήθως περιλαμβάνει μια σταθερή χρέωση ανά χρονική + περίοδο για κάθε είδος πόρου που χρειάστηκε να χρησιμοποιηθεί από τον + πάροχο για την επίτευξη των απαιτήσεων της εφαρμογής του καταναλωτή + μέσω της παρεχόμενης πλατφόρμας \footfullcite{paasPricingModel}. + Ουσιαστικά, ο καταναλωτής χρεώνεται με βάση την χρήση των πόρων του + παρόχου. \item \textbf{Infrastructure as a Service (IaaS) (Υποδομή ως Υπηρεσία)}: - Παρέχεται η δυνατότητα χρήσης επεξεργαστικών, αποθηκευτικών, δικτυακών - και άλλων υπολογιστικών πόρων. Συνήθως, οι πόροι αυτοί συγκροτούνται - στην μορφή μιας εικονικής μηχανής, δηλ. ενός απογυμνωμένου - περιβάλλοντος στο οποίο ο καταναλωτής μπορεί να εγκαταστήσει και να - εκτελέσει το λογισμικό της επιλογής του, συμπεριλαμβανομένων - λειτουργικών συστημάτων και εφαρμογών. Ο καταναλωτής δεν έχει τον - έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο των - λειτουργικών συστημάτων, του αποθηκευτικού χώρου, των περιβαλλόντων - ανάπτυξης/εκτέλεσης, των εγκατεστημένων εφαρμογών και των ρυθμίσεων - διαμόρφωσης τους. Το μοντέλο χρέωσης υπηρεσιών IaaS συνήθως αποτελείται - από μια συνεχόμενη χρέωση ανά χρονική περίοδο λόγω της ανάθεσης των - πόρων στον καταναλωτή, η οποία αυξάνεται μετά την υπέρβαση ενός ορίου - χρήσης για ορισμένους πόρους όπως το εύρος ζώνης δικτύου. + Παρέχεται η δυνατότητα χρήσης επεξεργαστικών, αποθηκευτικών, δικτυακών + και άλλων υπολογιστικών πόρων. Συνήθως, οι πόροι αυτοί συγκροτούνται + στην μορφή μιας εικονικής μηχανής, δηλ. ενός απογυμνωμένου + περιβάλλοντος στο οποίο ο καταναλωτής μπορεί να εγκαταστήσει και να + εκτελέσει το λογισμικό της επιλογής του, συμπεριλαμβανομένων + λειτουργικών συστημάτων και εφαρμογών. Ο καταναλωτής δεν έχει τον + έλεγχο της υποκείμενης υποδομής νέφους, αλλά έχει τον έλεγχο των + λειτουργικών συστημάτων, του αποθηκευτικού χώρου, των περιβαλλόντων + ανάπτυξης/εκτέλεσης, των εγκατεστημένων εφαρμογών και των ρυθμίσεων + διαμόρφωσής τους. Το μοντέλο χρέωσης υπηρεσιών IaaS συνήθως αποτελείται + από μια συνεχόμενη χρέωση ανά χρονική περίοδο λόγω της ανάθεσης των + πόρων στον καταναλωτή, η οποία αυξάνεται μετά την υπέρβαση ενός ορίου + χρήσης για ορισμένους πόρους όπως το εύρος ζώνης δικτύου. \end{itemize} @@ -184,18 +184,18 @@ SDKs (Software Development Kits)). \item \textbf{Ιδιωτικό νέφος (Private Cloud)}: - Το ιδιωτικό νέφος είναι αποκλειστικά αφιερωμένο σε έναν μόνο οργανισμό - αποτελούμενο από πολλαπλούς καταναλωτές (π.χ. επιχειρησιακές μονάδες ή - τμήματα). Ενδεχομένως να ανήκει, να διαχειρίζεται και να λειτουργεί από - τον οργανισμό, από μια τρίτη οντότητα, ή έναν συνδυασμό των δύο. Το - νέφος αυτό μπορεί να βρίσκεται εντός ή εκτός του οργανισμού (πχ. στην - περίπτωση που λειτουργεί από τρίτη οντότητα). Παρέχει πλήρη έλεγχο στον - τρόπο με τον οποίο μοιράζονται και αποθηκεύονται τα δεδομένα και - διασφαλίζει την συμμόρφωση με τυχόν κανονισμούς τους οποίους καλείται - μια επιχείρηση να ακολουθήσει. Επιπλέον, λόγω της αποκλειστικής - αφιέρωσης του σε έναν μόνο οργανισμό, εξασφαλίζεται η διαθεσιμότητα των - δεδομένων κατά παραγγελία, όπως επίσης και η αξιοπιστία του για - κρίσιμους φόρτους εργασίας. + Το ιδιωτικό νέφος είναι αποκλειστικά αφιερωμένο σε έναν μόνο οργανισμό + αποτελούμενο από πολλαπλούς καταναλωτές (π.χ. επιχειρησιακές μονάδες ή + τμήματα). Ενδεχομένως να ανήκει, να διαχειρίζεται και να λειτουργεί από + τον οργανισμό, από μια τρίτη οντότητα, ή έναν συνδυασμό των δύο. Το + νέφος αυτό μπορεί να βρίσκεται εντός ή εκτός του οργανισμού (πχ. στην + περίπτωση που λειτουργεί από τρίτη οντότητα). Παρέχει πλήρη έλεγχο στον + τρόπο με τον οποίο μοιράζονται και αποθηκεύονται τα δεδομένα και + διασφαλίζει την συμμόρφωση με τυχόν κανονισμούς τους οποίους καλείται + μια επιχείρηση να ακολουθήσει. Επιπλέον, λόγω της αποκλειστικής + αφιέρωσής του σε έναν μόνο οργανισμό, εξασφαλίζεται η διαθεσιμότητα των + δεδομένων κατά παραγγελία, όπως επίσης και η αξιοπιστία του για + κρίσιμους φόρτους εργασίας. \clearpage @@ -366,7 +366,7 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η \clearpage Από εκείνο το σημείο και έπειτα, άρχισε να γίνεται εμφανής η ανάγκη της -εικονικοποίησης και να ανεβαίνει η δημοτικότητα της. Οι εταιρείες μπορούσαν +εικονικοποίησης και να ανεβαίνει η δημοτικότητά της. Οι εταιρείες μπορούσαν πλέον να διαμερίσουν τους διακομιστές τους και να εκτελούν ακόμα και τις παλαιές τους εφαρμογές σε πολλούς τύπους και εκδόσεις λειτουργικών συστημάτων. Οι διακομιστές άρχισαν να χρησιμοποιούνται πιο αποδοτικά ή και καθόλου, @@ -464,6 +464,7 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η συστήματα πέραν του ήδη υπάρχοντος, πράγμα που αυξάνει την παραγωγικότητα του τελικού χρήστη, αφού μπορεί να έχει πρόσβαση σε εργαλεία που δεν υποστηρίζονται στο δικό του (αρχικό/υπάρχον σύστημα). + Σε κάθε τύπο υπερ-επόπτη, όταν το φιλοξενούμενο ΛΣ αιτηθεί πρόσβαση στους πόρους υπολογισμού, μνήμης και δικτύου του φυσικού υλικού, όλες οι προσβάσεις περνάνε πρώτα από αυτόν. Στην περίπτωση όμως υπερ-επόπτη @@ -492,11 +493,11 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η \item \textbf{Απόδοση}: - Βασικό χαρακτηριστικό ενός υπερ-επόπτη είναι η απόδοση του. Αυτή - διαφέρει από τον ένα υπερ-επόπτη στον άλλο αναλόγως την κατασκευή και - τον τύπο του. Όμως, εν γένει, οι bare-metal υπερ-επόπτες θα πρέπει να - παρέχουν απόδοση κοντά στην εγγενή λόγω της απουσίας ανάγκης μετάφρασης - των αιτημάτων του φιλοξενούμενου ΛΣ. + Βασικό χαρακτηριστικό ενός υπερ-επόπτη είναι η απόδοσή του. Αυτή + διαφέρει από τον ένα υπερ-επόπτη στον άλλο αναλόγως την κατασκευή και + τον τύπο του. Όμως, εν γένει, οι υπερ-επόπτες τύπου 1 θα πρέπει να + παρέχουν απόδοση κοντά στην εγγενή λόγω της απουσίας ανάγκης μετάφρασης + των αιτημάτων του φιλοξενούμενου ΛΣ. \item \textbf{Οικοσύστημα}: @@ -510,12 +511,12 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η \item \textbf{Εργαλεία διαχείρισης}: - Η εκτέλεση εικονικών μηχανών δεν αποτελεί το μοναδικό καθήκον ενός - διαχειριστή κατά τη χρήση ενός υπερ-επόπτη. Απαραίτητες πρόσθετες - ενέργειες είναι η συντήρηση και η ανάλυση τους, καθώς και η διαγραφή - όσων δε χρησιμοποιούνται πλέον. Επομένως, η ύπαρξη εργαλείων που να - καθιστούν δυνατές αυτές τις ενέργειες αποτελεί σημαντικό παράγοντα κατά - την επιλογή λογισμικού υπερ-επόπτη. + Η εκτέλεση εικονικών μηχανών δεν αποτελεί το μοναδικό καθήκον ενός + διαχειριστή κατά τη χρήση ενός υπερ-επόπτη. Απαραίτητες πρόσθετες + ενέργειες είναι η συντήρηση και η ανάλυσή τους, καθώς και η διαγραφή + όσων δε χρησιμοποιούνται πλέον. Επομένως, η ύπαρξη εργαλείων που να + καθιστούν δυνατές αυτές τις ενέργειες αποτελεί σημαντικό παράγοντα κατά + την επιλογή λογισμικού υπερ-επόπτη. \item \textbf{Μεταφορά κατά τη λειτουργία}: @@ -529,11 +530,11 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η \item \textbf{Κόστος}: - Το κόστος είναι ένας παράγοντας που πρέπει να ληφθεί υπόψιν κατά την - επιλογή ενός υπερ-επόπτη. Οι περισσότεροι είναι δωρεάν αλλά υπάρχουν - και εμπορικές εκδόσεις που προσφέρουν περισσότερες δυνατότητες. Για - παράδειγμα, η ύπαρξη ή μη, λογισμικού διαχείρισης τους που να επιτρέπει - την εύκολη κλιμάκωση με βάση τις απαιτήσεις της επιχείρησης. + Το κόστος είναι ένας παράγοντας που πρέπει να ληφθεί υπόψιν κατά την + επιλογή ενός υπερ-επόπτη. Οι περισσότεροι είναι δωρεάν αλλά υπάρχουν + και εμπορικές εκδόσεις που προσφέρουν περισσότερες δυνατότητες. Για + παράδειγμα, η ύπαρξη ή μη, λογισμικού διαχείρισής τους που να επιτρέπει + την εύκολη κλιμάκωση με βάση τις απαιτήσεις της επιχείρησης. \end{itemize} @@ -578,10 +579,10 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η Μετά τη δημιουργία μιας εικονικής μηχανής, οι χρήστες αλληλεπιδρούν με αυτή όπως θα αλληλεπιδρούσαν με μια φυσική. Οι εικονικές μηχανές έχουν τη μορφή ενός -ενιαίου αρχείου, πράγμα που καθιστά εύκολη τη μεταφορά και ανάγνωση τους από +ενιαίου αρχείου, πράγμα που καθιστά εύκολη τη μεταφορά και ανάγνωσή τους από οποιονδήποτε υπολογιστή αναμένοντας τον ίδιο τρόπο λειτουργίας. Κατά την εκτέλεση του εικονικού περιβάλλοντος, όταν ένας χρήστης ή ένα πρόγραμμα εκδώσει -μία εντολή που απαιτεί περισσότερους πόρους από τους διαθέσιμους του, ο +μία εντολή που απαιτεί περισσότερους πόρους από τους διαθέσιμούς του, ο υπερ-επόπτης είτε αναμεταδίδει το αίτημα αυτό στο φυσικό σύστημα είτε πρώτα το μεταφράζει και μεταδίδει το μεταφρασμένο αν είναι υπερ-επόπτης τύπου 2. Έπειτα, μπορεί να διαθέσει τους απαραίτητους για την εκτέλεση πόρους. Όλα αυτά @@ -591,7 +592,7 @@ off). Το τελευταίο είναι χρήσιμο κυρίως όταν η χρήση ενός υπερ-επόπτη ανοιχτού κώδικα βασισμένου στο KVM (Kernel-based Virtual Machine), που επιτρέπει στο Linux να συμπεριφέρεται ως ένας υπερ-επόπτης. Αυτό συμβαίνει διότι το KVM αποτελεί κομμάτι του πυρήνα του Linux από την έκδοση -2.6.20 και έπειτα, επιτρέποντας του να επωφεληθεί από τους διαθέσιμους +2.6.20 και έπειτα, επιτρέποντάς του να επωφεληθεί από τους διαθέσιμους μηχανισμούς απομόνωσης μέσω αυτού. Επομένως, του προσφέρεται η ικανότητα να λάβει αποκλειστικούς πόρους από το φυσικό μηχάνημα \footfullcite{kvm}, κάτι που εξαλείφει το μειονέκτημα έλλειψης προτεραιότητας των διεργασιών ενός @@ -621,19 +622,19 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Η εικονικοποίηση δεδομένων είναι μια προσέγγιση ενσωμάτωσης δεδομένων - από διαφορετικές πηγές, σε μια ολιστική, λογική προβολή δίχως την - ανάγκη της φυσικής μετακίνησης τους \footfullcite{dataVirtualization}. - Δηλαδή διασκορπισμένα ετερογενή δεδομένα παρεχόμενα από πηγές διαφόρων - τοποθεσιών δύναται να συσσωματωθούν σε μοναδικά, λογικά τεμάχια μιας - ενιαίας εικονικής πηγής. Με αυτόν τον τρόπο, οι εταιρείες μπορούν από - ένα μόνο μοντέλο διαχείρισης δεδομένων να οργανώσουν και να - επεξεργαστούν διασκορπισμένες πληροφορίες με γνώμονα τις ανάγκες των - χρηστών με μεγαλύτερη ευκολία και αποδοτικότητα χωρίς την ανάγκη να - γνωρίζουν τεχνικές λεπτομέρειες (όπως γλώσσες πρόσβασης, δομές - αποθήκευσης κα.). Τομείς οι οποίοι επωφελούνται από την εικονικοποίηση - δεδομένων είναι η λήψη αποφάσεων, η επιχειρηματική αναλυτική και η - αξιολόγηση των κινδύνων. + Η εικονικοποίηση δεδομένων είναι μια προσέγγιση ενσωμάτωσης δεδομένων + από διαφορετικές πηγές, σε μια ολιστική, λογική προβολή δίχως την + ανάγκη της φυσικής μετακίνησής τους \footfullcite{dataVirtualization}. + Δηλαδή διασκορπισμένα ετερογενή δεδομένα παρεχόμενα από πηγές διαφόρων + τοποθεσιών δύναται να συσσωματωθούν σε μοναδικά, λογικά τεμάχια μιας + ενιαίας εικονικής πηγής. Με αυτόν τον τρόπο, οι εταιρείες μπορούν από + ένα μόνο μοντέλο διαχείρισης δεδομένων να οργανώσουν και να + επεξεργαστούν διασκορπισμένες πληροφορίες με γνώμονα τις ανάγκες των + χρηστών με μεγαλύτερη ευκολία και αποδοτικότητα χωρίς την ανάγκη να + γνωρίζουν τεχνικές λεπτομέρειες (όπως γλώσσες πρόσβασης, δομές + αποθήκευσης κα.). Τομείς οι οποίοι επωφελούνται από την εικονικοποίηση + δεδομένων είναι η λήψη αποφάσεων, η επιχειρηματική αναλυτική και η + αξιολόγηση των κινδύνων. \clearpage @@ -653,17 +654,17 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Με την εικονικοποίηση επιφάνειας εργασίας, δίνεται σε έναν κεντρικό - διαχειριστή η ικανότητα διαμοιρασμού προσομοιωμένων περιβαλλόντων - εργασίας σε εκατοντάδες φυσικές μηχανές ή συσκευές ταυτοχρόνως. Εν - αντιθέσει με τα παραδοσιακά περιβάλλοντα εργασίας που χρήζουν - εγκατάστασης, διαμόρφωσης και ενημέρωσης σε κάθε υπολογιστή, η - εικονικοποίηση επιφάνειας εργασίας καθιστά δυνατή τη μαζική διαμόρφωση, - ενημέρωση και έλεγχο ασφαλείας σε όλα τα εικονικά περιβάλλοντα εργασίας - που παρέχονται από έναν μόνο διακομιστή. Καθ' αυτόν τον τρόπο, οι - επιχειρήσεις επιτρέπουν στους χρήστες να μπορούν να εργαστούν από - οπουδήποτε και με κάθε συσκευή ανεξαρτήτως του είδους ή του - λειτουργικού συστήματος τους \footfullcite{desktopVirtualization}. + Με την εικονικοποίηση επιφάνειας εργασίας, δίνεται σε έναν κεντρικό + διαχειριστή η ικανότητα διαμοιρασμού προσομοιωμένων περιβαλλόντων + εργασίας σε εκατοντάδες φυσικές μηχανές ή συσκευές ταυτοχρόνως. Εν + αντιθέσει με τα παραδοσιακά περιβάλλοντα εργασίας που χρήζουν + εγκατάστασης, διαμόρφωσης και ενημέρωσης σε κάθε υπολογιστή, η + εικονικοποίηση επιφάνειας εργασίας καθιστά δυνατή τη μαζική διαμόρφωση, + ενημέρωση και έλεγχο ασφαλείας σε όλα τα εικονικά περιβάλλοντα εργασίας + που παρέχονται από έναν μόνο διακομιστή. Καθ' αυτόν τον τρόπο, οι + επιχειρήσεις επιτρέπουν στους χρήστες να μπορούν να εργαστούν από + οπουδήποτε και με κάθε συσκευή ανεξαρτήτως του είδους ή του + λειτουργικού συστήματός τους \footfullcite{desktopVirtualization}. \clearpage @@ -683,21 +684,21 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \end{itemize} - Οι διακομιστές είναι υπολογιστές σχεδιασμένοι με σκοπό να - επεξεργάζονται πολύ καλά έναν μεγάλο όγκο συγκεκριμένων διεργασιών, - ώστε οι κύριοι υπολογιστές μιας επιχείρησης να μπορούν να δίνουν - προτεραιότητα σε άλλες εργασίες. Με την εικονικοποίηση διακομιστών - αναφερόμαστε στην διαδικασία κατά την οποία ένας φυσικός διακομιστής - χωρίζεται σε πολλούς μικρότερους εικονικούς διακομιστές, με απώτερο - σκοπό την αποτελεσματικότερη αξιοποίηση των πόρων του. Αυτό είναι - απαραίτητο διότι προτιμάται για λόγους ευκολίας της διαχείρισης τους, - κάθε διακομιστής να είναι υπεύθυνος για μια μόνο διεργασία την φορά. - Μετά την κατάτμησή του, ενώ μπορεί να ακολουθείται η ίδια πρακτική, - παύει το φυσικό μηχάνημα να μένει με αχρησιμοποίητους πόρους και - πρακτικά μπορεί το σύνολο τον πόρων του να χρησιμοποιηθεί για την - εξυπηρέτηση πολλαπλών λειτουργιών. Ο ορισμός της εικονικοποίησης - διακομιστών αναλύθηκε πιο λεπτομερώς και στο - \ref{virtualizationDefinition}. + Οι διακομιστές είναι υπολογιστές σχεδιασμένοι με σκοπό να + επεξεργάζονται πολύ καλά έναν μεγάλο όγκο συγκεκριμένων διεργασιών, + ώστε οι κύριοι υπολογιστές μιας επιχείρησης να μπορούν να δίνουν + προτεραιότητα σε άλλες εργασίες. Με την εικονικοποίηση διακομιστών + αναφερόμαστε στην διαδικασία κατά την οποία ένας φυσικός διακομιστής + χωρίζεται σε πολλούς μικρότερους εικονικούς διακομιστές, με απώτερο + σκοπό την αποτελεσματικότερη αξιοποίηση των πόρων του. Αυτό είναι + απαραίτητο διότι προτιμάται για λόγους ευκολίας της διαχείρισής τους, + κάθε διακομιστής να είναι υπεύθυνος για μια μόνο διεργασία την φορά. + Μετά την κατάτμησή του, ενώ μπορεί να ακολουθείται η ίδια πρακτική, + παύει το φυσικό μηχάνημα να μένει με αχρησιμοποίητους πόρους και + πρακτικά μπορεί το σύνολο τον πόρων του να χρησιμοποιηθεί για την + εξυπηρέτηση πολλαπλών λειτουργιών. Ο ορισμός της εικονικοποίησης + διακομιστών αναλύθηκε πιο λεπτομερώς και στο + \ref{virtualizationDefinition}. \clearpage @@ -838,15 +839,15 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα χώρου αποθήκευσης σε σχέση με το παραδοσιακό, όπου κάθε υπολογιστής έχει πρόσβαση μονάχα στον δικό του δίσκο. - Προκειμένου να γίνει πράξη, απαιτείται αναλόγως την μέθοδο - εικονικοποίησης και τον τύπος της, είτε να χρησιμοποιηθεί ένας - αλγόριθμος για να εντοπίσει δυναμικά τα δεδομένα είτε να δημιουργηθεί - ένας χάρτης αντιστοίχισης τους χρησιμοποιώντας μεταδεδομένα - \footfullcite{cloudinfraStorageVirtualization}. Αφότου γίνει αυτό, τα - δεδομένα πλέον αποθηκεύονται σε ένα αρχείο και οι συστοιχίες δίσκων - τοποθετούνται μέσα σε μια εικονική δεξαμενή. Έπειτα, κάθε αίτημα - ανάγνωσης και εγγραφής από τις εφαρμογές φιλτράρεται και δύναται έμμεσα - μέσω των αντιστοιχιών η δυνατότητα εύρεσης και αποθήκευσης δεδομένων. + Προκειμένου να γίνει πράξη, απαιτείται αναλόγως την μέθοδο + εικονικοποίησης και τον τύπο της, είτε να χρησιμοποιηθεί ένας + αλγόριθμος για να εντοπίσει δυναμικά τα δεδομένα είτε να δημιουργηθεί + ένας χάρτης αντιστοίχισής τους χρησιμοποιώντας μεταδεδομένα + \footfullcite{cloudinfraStorageVirtualization}. Αφότου γίνει αυτό, τα + δεδομένα πλέον αποθηκεύονται σε ένα αρχείο και οι συστοιχίες δίσκων + τοποθετούνται μέσα σε μια εικονική δεξαμενή. Έπειτα, κάθε αίτημα + ανάγνωσης και εγγραφής από τις εφαρμογές φιλτράρεται και δύναται έμμεσα + μέσω των αντιστοιχιών η δυνατότητα εύρεσης και αποθήκευσης δεδομένων. \clearpage @@ -905,16 +906,16 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα \item \textbf{Ευκολότερη διαχείριση}: - Αντικαθιστώντας φυσικούς υπολογιστές με προγραμματιστικά καθορισμένες - εικονικές μηχανές δύναται η χρήση αυτοματοποιημένων ροών διαχειριστικών - εργασιών. Οι διαχειριστές συστημάτων μπορούν να χρησιμοποιούν εργαλεία - για τον καθορισμό εικονικών μηχανών χρησιμοποιώντας πρότυπα κατάλληλα - για την υποδομή κάθε επιχείρησης. Με αυτόν τον τρόπο, η εγκατάσταση και - η ρύθμισή τους μπορεί να γίνεται επανειλημμένα με αυτοματοποιημένο - τρόπο δίχως το ρίσκο ανθρώπινου λάθους και γλιτώνοντας τον χρόνο - εγκατάστασης και ρύθμισης τους χειροκίνητα. Ένας συνδυασμός εργαλείων - που κάνει αυτή τη διαδικασία πραγματικότητα είναι τα Ansible - \footfullcite{ansible} και Terraform \footfullcite{terraform}. + Αντικαθιστώντας φυσικούς υπολογιστές με προγραμματιστικά καθορισμένες + εικονικές μηχανές δύναται η χρήση αυτοματοποιημένων ροών διαχειριστικών + εργασιών. Οι διαχειριστές συστημάτων μπορούν να χρησιμοποιούν εργαλεία + για τον καθορισμό εικονικών μηχανών χρησιμοποιώντας πρότυπα κατάλληλα + για την υποδομή κάθε επιχείρησης. Με αυτόν τον τρόπο, η εγκατάσταση και + η ρύθμισή τους μπορεί να γίνεται επανειλημμένα με αυτοματοποιημένο + τρόπο δίχως το ρίσκο ανθρώπινου λάθους και γλιτώνοντας τον χρόνο + εγκατάστασης και ρύθμισής τους χειροκίνητα. Ένας συνδυασμός εργαλείων + που κάνει αυτή τη διαδικασία πραγματικότητα είναι τα Ansible + \footfullcite{ansible} και Terraform \footfullcite{terraform}. \clearpage @@ -983,7 +984,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα λειτουργικού συστήματος, η οποία θα του επιτρέπει την υλοποίηση ενός ειδικού API, ώστε να μπορεί να κάνει χρήση των υπερ-κλήσεων \footfullcite{servermaniaParavirtualization}, ενώ επιβάλλεται να υποστηρίζεται -και από τον υπερ-επόπτη η κατανόηση τους. +και από τον υπερ-επόπτη η κατανόησή τους. \clearpage @@ -1001,7 +1002,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ Στο σχήμα \ref{fig:FullVirtualization} \cite{geeksforgeeksParavirtualizationDefinition} παρουσιάζεται η αρχιτεκτονική της πλήρους εικονικοποίησης όπου το φιλοξενούμενο λειτουργικό σύστημα (της -εικονικής μηχανής) επιβάλλεται να περάσει τα αιτήματα του (πρόσβασης πόρων) +εικονικής μηχανής) επιβάλλεται να περάσει τα αιτήματά του (πρόσβασης πόρων) μέσω του υπερ-επόπτη. \begin{center} @@ -1248,10 +1249,10 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ όμως, παραχωρούν ουσιαστικά πρόσβαση στις εφαρμογές τους και στα ευαίσθητα δεδομένα αυτών, διότι η ευθύνη προστασίας των υποδομών ανήκει στον ιδιοκτήτη των υποδομών αυτών και στην προκειμένη περίπτωση αυτός είναι ο πάροχος νέφους. -Έτσι κακόβουλοι εισβολείς θα προσπαθήσουν να βρουν τρωτότητες στη διαδικασία +Έτσι, κακόβουλοι εισβολείς θα προσπαθήσουν να βρουν τρωτότητες στη διαδικασία παράδοσης των υπηρεσιών του παρόχου, τις υπηρεσίες τις ίδιες ή και τις διεπαφές με τις οποίες παρέχονται. Ένας συνηθισμένος τρόπος για να γίνει αυτό είναι -εκτελώντας επιθέσεις τύπου Cross site scripting (XSS), έγχυση SQL (SQL +εκτελώντας επιθέσεις τύπου Cross site scripting (XSS), έγχυσης SQL (SQL injection), χειραγώγησης cookies ή εκμετάλλευσης μη ασφαλούς ρύθμισης, θέτοντας έτσι σε κίνδυνο ευαίσθητες πληροφορίες και δεδομένα των επιχειρήσεων. Επιπλέον, επειδή όλα τα δίκτυα είναι επιρρεπή σε επιθέσεις αν δεν έχουν ληφθεί τα @@ -1267,10 +1268,10 @@ penetration)\cite{arif2015virtualization}. προστατεύσει τα δεδομένα της, έτσι και ο πάροχος πρέπει να εμπιστεύεται την επιχείρηση ότι δε θα προσπαθήσει να προκαλέσει ζημιά στις υπηρεσίες του. Αυτό μπορεί να πραγματοποιηθεί με την εκτέλεση κακόβουλου λογισμικού στις εικονικές -μηχανές του παρόχου είτε από την επιχείρηση την ίδια, είτε από έναν -επιτιθέμενου που παραβίασε τις εικονικές μηχανές της. +μηχανές του παρόχου είτε από την επιχείρηση την ίδια, είτε από έναν επιτιθέμενο +που παραβίασε τις εικονικές μηχανές της. -Ουσιαστικά κάθε εικονική μηχανή που έχει πρόσβαση στο διαδίκτυο είναι ευάλωτη +Ουσιαστικά, κάθε εικονική μηχανή που έχει πρόσβαση στο διαδίκτυο είναι ευάλωτη σε απειλές όπως δούρειοι ίπποι (Trojans), ιοί και κακόβουλα λογισμικά που μπορεί να εξαπλωθούν στο σύστημα μεταπηδώντας από μια εικονική μηχανή στον υπερ-επόπτη και από εκεί είτε να συνεχίσουν στο σύστημα είτε να μολύνουν και @@ -1425,22 +1426,22 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ διαθεσιμότητα των δεδομένων της. Αυτά τα τρία στοιχεία αποτελούν την τριάδα της ασφάλειας \footfullcite{ciaTriad} και η απώλεια οποιουδήποτε από αυτά μπορεί να έχει σοβαρές επιπτώσεις για την επιχείρηση. Η σημασία του καθενός, καθώς και -γενικές ορθές πρακτικές διατήρησης τους περιγράφονται ως εξής: +γενικές ορθές πρακτικές διατήρησής τους περιγράφονται ως εξής: \begin{itemize} \item \textbf{Ακεραιότητα δεδομένων} \label{dataIntegrity} - Η ακεραιότητα των δεδομένων είναι ένα από τα τρία βασικά στοιχεία της - ασφάλειας, δίχως την οποία οι επιχειρήσεις δε θα μπορούσαν να - παραμείνουν λειτουργικές. Αναφέρεται στην προστασία των δεδομένων από - μη εξουσιοδοτημένη αλλοίωση καθ' όλη τη διάρκεια της ύπαρξης τους. - Δηλαδή είτε βρίσκονται στο στάδιο της μεταφοράς, είτε της αποθήκευσης. - Για κάθε επιχείρηση, απαιτείται μεγάλη προσοχή κατά τον σχεδιασμό των - βάσεων δεδομένων και της συντήρησης τους σε περιβάλλοντα νέφους αλλά - και η χρήση ορθών πρακτικών, όπως ο περιοδικός έλεγχος των δεδομένων - για την ανίχνευση πιθανών αλλοιώσεων και η χρήση μηχανισμών αναγνώρισης - και αποκατάστασης σφαλμάτων. + Η ακεραιότητα των δεδομένων είναι ένα από τα τρία βασικά στοιχεία της + ασφάλειας, δίχως την οποία οι επιχειρήσεις δε θα μπορούσαν να + παραμείνουν λειτουργικές. Αναφέρεται στην προστασία των δεδομένων από + μη εξουσιοδοτημένη αλλοίωση καθ' όλη τη διάρκεια της ύπαρξής τους. + Δηλαδή είτε βρίσκονται στο στάδιο της μεταφοράς, είτε της αποθήκευσης. + Για κάθε επιχείρηση, απαιτείται μεγάλη προσοχή κατά τον σχεδιασμό των + βάσεων δεδομένων και της συντήρησής τους σε περιβάλλοντα νέφους αλλά + και η χρήση ορθών πρακτικών, όπως ο περιοδικός έλεγχος των δεδομένων + για την ανίχνευση πιθανών αλλοιώσεων και η χρήση μηχανισμών αναγνώρισης + και αποκατάστασης σφαλμάτων. \item \textbf{Εμπιστευτικότητα δεδομένων} \label{dataConfidentiality} @@ -1460,21 +1461,21 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \item \textbf{Διαθεσιμότητα δεδομένων} \label{dataAvailability} - Η διαθεσιμότητα των δεδομένων, που ολοκληρώνει την τριάδα της - ασφάλειας, είναι το στοιχείο που εξασφαλίζει πως μια επιχείρηση θα - μπορεί να παρέχει τις υπηρεσίες της στους τελικούς της χρήστες. - Αναφέρεται στην αποφυγή της διακοπής πρόσβασης στα δεδομένα της από - εξουσιοδοτημένους φορείς και εξαρτάται άμεσα από τη συνεχή παροχή - υπηρεσιών υποδομών προς την επιχείρηση. Η απώλεια της θα είχε ως - αποτέλεσμα την διακοπή σημαντικών λειτουργιών της και δυνητικά την - μείωση της αξιοπιστίας της. Για να μπορέσει να διασφαλιστεί, πρέπει μια - επιχείρηση να έχει προβλέψει για ένα σχέδιο ανάκτησης εφεδρικών - αντιγράφων προς αποφυγή της απώλειας σημαντικών δεδομένων της, καθώς - και για ένα σχέδιο επαναφοράς των διαδικασιών παροχής τους ώστε να - μειώσει στο ελάχιστο την οποιαδήποτε διάρκεια διακοπής των υπηρεσιών - της. Τέλος, πρέπει να υπάρχει εμπιστοσύνη προς τον πάροχο νέφους πως - δεν θα υπάρξει από μεριάς του απρόσμενη διακοπή της λειτουργίας - υποδομών που μπορεί να είναι απαραίτητες για την επιχείρηση. + Η διαθεσιμότητα των δεδομένων, που ολοκληρώνει την τριάδα της + ασφάλειας, είναι το στοιχείο που εξασφαλίζει πως μια επιχείρηση θα + μπορεί να παρέχει τις υπηρεσίες της στους τελικούς της χρήστες. + Αναφέρεται στην αποφυγή της διακοπής πρόσβασης στα δεδομένα της από + εξουσιοδοτημένους φορείς και εξαρτάται άμεσα από τη συνεχή παροχή + υπηρεσιών υποδομών προς την επιχείρηση. Η απώλειά της θα είχε ως + αποτέλεσμα την διακοπή σημαντικών λειτουργιών της και δυνητικά την + μείωση της αξιοπιστίας της. Για να μπορέσει να διασφαλιστεί, πρέπει μια + επιχείρηση να έχει προβλέψει για ένα σχέδιο ανάκτησης εφεδρικών + αντιγράφων προς αποφυγή της απώλειας σημαντικών δεδομένων της, καθώς + και για ένα σχέδιο επαναφοράς των διαδικασιών παροχής τους ώστε να + μειώσει στο ελάχιστο την οποιαδήποτε διάρκεια διακοπής των υπηρεσιών + της. Τέλος, πρέπει να υπάρχει εμπιστοσύνη προς τον πάροχο νέφους πως + δεν θα υπάρξει από μεριάς του απρόσμενη διακοπή της λειτουργίας + υποδομών που μπορεί να είναι απαραίτητες για την επιχείρηση. \end{itemize} @@ -1492,12 +1493,12 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \item \textbf{Συχνή ενημέρωση του υπερ-επόπτη}: - Ο υπερ-επόπτης είναι ο πυρήνας του συστήματος εικονικοποίησης και - επομένως η ασφάλεια του είναι ζωτικής σημασίας. Οι εταιρείες που - αναπτύσσουν το λογισμικό του, τον ενημερώνουν συχνά για να διορθώσουν - τυχόν ευπάθειες που έχουν ανακαλυφθεί. Επομένως, οι επιχειρήσεις πρέπει - να εφαρμόζουν τις ενημερώσεις αυτές το συντομότερο δυνατόν από την - στιγμή που θα είναι διαθέσιμες. + Ο υπερ-επόπτης είναι ο πυρήνας του συστήματος εικονικοποίησης και + επομένως η ασφάλειά του είναι ζωτικής σημασίας. Οι εταιρείες που + αναπτύσσουν το λογισμικό του, τον ενημερώνουν συχνά για να διορθώσουν + τυχόν ευπάθειες που έχουν ανακαλυφθεί. Επομένως, οι επιχειρήσεις πρέπει + να εφαρμόζουν τις ενημερώσεις αυτές το συντομότερο δυνατόν από την + στιγμή που θα είναι διαθέσιμες. \clearpage @@ -1554,12 +1555,12 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ \item \textbf{Ορθή διαχείριση στιγμιοτύπων εικονικών μηχανών}: - Κάθε στιγμιότυπο μιας εικονικής μηχανής, δύναται να περιέχει ευαίσθητα - δεδομένα όπως κωδικοί και προσωπικά δεδομένα χρηστών. Συνεπώς, πρέπει - κατά την αποθήκευση τους να προστατεύονται έναντι μη εξουσιοδοτημένης - πρόσβασης, τροποποίησης και αντικατάστασης. Αυτό περιλαμβάνει την ορθή - κρυπτογράφηση τους και την διαγραφή όσων στιγμιοτύπων δεν χρειάζονται - πλέον. + Κάθε στιγμιότυπο μιας εικονικής μηχανής, δύναται να περιέχει ευαίσθητα + δεδομένα όπως κωδικοί και προσωπικά δεδομένα χρηστών. Συνεπώς, πρέπει + κατά την αποθήκευσή τους να προστατεύονται έναντι μη εξουσιοδοτημένης + πρόσβασης, τροποποίησης και αντικατάστασης. Αυτό περιλαμβάνει την ορθή + κρυπτογράφησή τους και την διαγραφή όσων στιγμιοτύπων δεν χρειάζονται + πλέον. \item \textbf{Ασφάλιση του μηχανήματος φιλοξενίας}: @@ -1635,7 +1636,7 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ Η δοχειοποίηση εφαρμογών αποτελεί εν γένει την πιο δημοφιλή μορφή δοχειοποίησης που χρησιμοποιείται σήμερα. Είθισται να χρησιμοποιείται σε περιπτώσεις χρήσης -μικρο-υπηρεσιών, CI/CD pipelines, επαναλαμβανόμενες διεργασίες και εφαρμογής +μικρο-υπηρεσιών, CI/CD pipelines, επαναλαμβανόμενων διεργασιών και εφαρμογής μεθόδων DevOps \footfullcite{applicationContainerization}. \subsection{Πλεονεκτήματα Δοχειοποίησης} \label{containerizationAdvantages} @@ -1687,7 +1688,7 @@ migration and rollback attacks). Από την άλλη, όσον αφορά τ τεχνικά προβλήματα χωρίς να υπάρχει διακοπή λειτουργίας σε άλλα δοχεία. Επιπρόσθετα, ο εντοπισμός του προβλήματος είναι εύκολος διότι εστιάζει σε ένα μόνο δοχείο και όχι σε περισσότερα. Αυτό οδηγεί σε πιο γρήγορη - αποσφαλμάτωση και εν τέλει την πιο γρήγορη ανάπτυξη και συντήρηση + αποσφαλμάτωση και εν τέλει στην πιο γρήγορη ανάπτυξη και συντήρηση προγραμμάτων. \item \textbf{Αποδοτικότητα}: @@ -1795,7 +1796,7 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ \footfullcite{containerdRunc}. Επιπροσθέτως, η απόφαση αυτή κατέστησε το Docker πιο διαχειρίσιμο διότι πλέον αποτελούνταν από πολλά μικρότερα εργαλεία, όπου το καθένα από αυτά είχε συγκεκριμένους ρόλους. Αναλυτικότερα, το containerd πλέον -είναι υπεύθυνο για την απόκτηση εικόνων δοχείων και την διαχείριση τους, προτού +είναι υπεύθυνο για την απόκτηση εικόνων δοχείων και την διαχείρισή τους, προτού τις μεταβιβάσει στο runC, το οποίο είναι το εργαλείο που θα αλληλεπιδράσει με τον πυρήνα του Linux προκειμένου να χρησιμοποιήσει χαρακτηριστικά όπως οι ομάδες ελέγχου (control groups) για να δημιουργήσει δοχεία. @@ -1819,7 +1820,7 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ αντιστοιχούν σε καλούπια μέσω των οποίων παράγονται τα δοχεία της εφαρμογής, η ασφάλεια δεν είναι πάντα εγγυημένη. Αυτό είναι κάτι που συμβαίνει διότι ο καθένας έχει την δυνατότητα να ανεβάσει μια εικόνα δοχείου προς χρήση από -τρίτους. Σε περίπτωση που δεν εξετασθεί το περιεχόμενο της μπορεί είτε να +τρίτους. Σε περίπτωση που δεν εξετασθεί το περιεχόμενό της μπορεί είτε να περιέχει κακόβουλο λογισμικό, είτε να μην ακολουθούνται ορθές πρακτικές ασφαλείας με αποτέλεσμα να μένει το σύστημα που την χρησιμοποιεί ευάλωτο σε επιθέσεις. Συνεπώς, πρέπει να ληφθούν μέτρα προστασίας όπως η χρήση εικόνων @@ -1846,10 +1847,9 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την Με βάση το μοντέλο που περιγράφει το \cite{reshetova2014security}, όπως αναφέρεται στο \cite{bui2015analysis}, έχουμε ένα μηχάνημα στο οποίο εκτελούνται διάφορα δοχεία, από τα οποία ένα υποσύνολο έχει τεθεί υπό τον -έλεγχο ενός κακόβουλου χρήστη. Για να προστατευτούμε από επιθέσεις, όπως -άρνησης υπηρεσίας και κλιμάκωσης δικαιωμάτων πρέπει να πραγματοποιηθεί -απομόνωση των διεργασιών, των αρχείων της συσκευής, του IPC, του δικτύου και -των πόρων. +έλεγχο ενός κακόβουλου χρήστη. Για να προστατευτούμε από επιθέσεις, όπως άρνηση +υπηρεσίας και κλιμάκωση δικαιωμάτων, πρέπει να πραγματοποιηθεί απομόνωση των +διεργασιών, των αρχείων της συσκευής, του IPC, του δικτύου και των πόρων. Αυτά επιτυγχάνονται κατά σειρά με τη χρήση: @@ -1866,23 +1866,21 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την μονάχα ανάγνωσης και αποτρέπονται περαιτέρω remountings. \item \textbf{Device Whitelist Controller}, ενός χαρακτηριστικού των - cgroups για περιορισμό συσκευών, που αναφέρεται στο - \cite{deviceWhitelistController} - \footfullcite{deviceWhitelistController}, με τη βοήθεια του οποίου - περιορίζεται το σύνολο τον συσκευών στις οποίες έχει πρόσβαση ένα - δοχείο και το αποτρέπει από το να δημιουργήσει καινούριες - αναπαραστάσεις συσκευών. Επιπροσθέτως, επειδή τα mount γίνονται με τη - χρήση της παραμέτρου nodev\footnote{\textgreek{Μια παράμετρος της - εντολής mount κατά την οποία απαγορεύεται η δημιουργία και η - πρόσβαση αναπαραστάσεων συσκευών που βρίσκονται στον φάκελο /dev.}}, - στην περίπτωση που μια αναπαράσταση συσκευής είχε δημιουργηθεί σε - προηγούμενο χρόνο μέσα στην εικόνα δοχείου που χρησιμοποιήθηκε για να - κατασκευαστεί το δοχείο, οι διεργασίες του δοχείου αυτού δε δύνανται να - τη χρησιμοποιήσουν για να επικοινωνήσουν με τον πυρήνα. Επιπλέον, - επειδή η προεπιλεγμένη συνθήκη είναι να μη δίνονται εκτεταμένα προνόμια - σε ένα δοχείο, δεν υπάρχει πρόσβαση σε καμία συσκευή παρά μόνο εάν - γίνει εκτέλεση δοχείου ως χρήστης με ανώτατα δικαιώματα, όπου τότε - υπάρχει πρόσβαση σε όλες (τις συσκευές). + cgroups που αναφέρεται στο \cite{deviceWhitelistController} + \footfullcite{deviceWhitelistController}, για περιορισμό συσκευών, με τη + βοήθεια του οποίου περιορίζεται το σύνολο τον συσκευών στις οποίες έχει + πρόσβαση ένα δοχείο και το αποτρέπει από το να δημιουργήσει καινούριες + αναπαραστάσεις συσκευών. Επιπροσθέτως, επειδή τα mount γίνονται με τη χρήση + της παραμέτρου nodev\footnote{\textgreek{Μια παράμετρος της εντολής mount + κατά την οποία αποτρέπεται η δημιουργία και η πρόσβαση αναπαραστάσεων + συσκευών που βρίσκονται στον φάκελο /dev.}}, στην περίπτωση που μια + αναπαράσταση συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο μέσα στην + εικόνα δοχείου που χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι + διεργασίες του δοχείου αυτού δε δύνανται να τη χρησιμοποιήσουν για να + επικοινωνήσουν με τον πυρήνα. Επιπλέον, επειδή η προεπιλεγμένη συνθήκη + είναι να μη δίνονται εκτεταμένα προνόμια σε ένα δοχείο, δεν υπάρχει + πρόσβαση σε καμία συσκευή παρά μόνο εάν γίνει εκτέλεση δοχείου ως χρήστης + με ανώτατα δικαιώματα, όπου τότε υπάρχει πρόσβαση σε όλες (τις συσκευές). \item \textbf{IPC namespaces} για περιορισμό IPC, δηλαδή της επικοινωνίας των διεργασιών μεταξύ τους. Τα IPC namespaces καθιστούν δυνατή τη @@ -1890,14 +1888,14 @@ Docker ώστε να μειωθούν οι επιπτώσεις κατά την αλλά όχι με άλλες διεργασίες πέραν του υποσυνόλου. \item \textbf{Network namespaces}. Μία από τις σημαντικότερες απομονώσεις - είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος - επιθέσεων, όπως ενδιάμεσου (Man in the middle), ARP, DNS πλαστογράφηση - (spoofing) και άλλες. Για να απομονωθεί η κίνηση δικτύου που λαμβάνει - μέρος σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος πρέπει - να γίνει χρήση των network namespaces. Κάθε δοχείο θα έχει δικές του - διευθύνσεις IP, συσκευές και ό,τι χρειάζεται, προκειμένου να γίνεται - αλληλεπίδραση μεταξύ των δοχείων μέσω της διεπαφής δικτύου του καθενός - σαν να είναι εξωτερικές οντότητες. + είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος + επιθέσεων, όπως ενδιάμεσου (Man in the middle), ARP, DNS πλαστογράφησης + (spoofing) και άλλες. Για να απομονωθεί η κίνηση δικτύου που λαμβάνει μέρος + σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος πρέπει να γίνει + χρήση των network namespaces. Κάθε δοχείο θα έχει δικές του διευθύνσεις IP, + συσκευές και ό,τι χρειάζεται, προκειμένου να γίνεται αλληλεπίδραση μεταξύ + των δοχείων μέσω της διεπαφής δικτύου του καθενός σαν να είναι εξωτερικές + οντότητες. \item \textbf{Ομάδες ελέγχου (cgroups)}. Επιβάλλεται η οριοθέτηση των υπολογιστικών πόρων προκειμένου να αποφευχθεί μια επίθεση τύπου άρνησης @@ -1917,15 +1915,15 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), επίπεδο ασφαλείας, αν χρησιμοποιηθούν σωστά, περιορίζοντας τα δικαιώματα των διεργασιών των δοχείων σε μονάχα όσα χρειάζονται. Το Docker παρέχει αρκετά υπάρχοντα μέσα άμυνας προκειμένου να προστατευτεί από επιθέσεις ακόμα και χωρίς -επιπρόσθετες ρυθμίσεις. Παρ' όλα αυτά, οι αρχικές ρυθμίσεις ασφαλείας είναι πιο -ελαστικές απ' όσο χρειάζεται προκειμένου να συνεχίζει να λειτουργεί κανονικά -για όλους τους χρήστες, αφήνοντας έτσι τους διαχειριστές ασφαλείας υπεύθυνους -να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες προκειμένου να -ανταπεξέλθουν σε κάθε επίθεση ανάλογα το περιβάλλον και τις ανάγκες τους. +επιπρόσθετες ρυθμίσεις. Παρ' όλα αυτά, οι αρχικές ρυθμίσεις ασφαλείας του είναι +πιο ελαστικές απ' όσο χρειάζεται προκειμένου να συνεχίζει να λειτουργεί +κανονικά για όλους τους χρήστες, αφήνοντας έτσι τους διαχειριστές ασφαλείας +υπεύθυνους να χρησιμοποιήσουν όσες δυνατότητες είναι απαραίτητες προκειμένου να +ανταπεξέλθουν σε κάθε επίθεση ανάλογα με το περιβάλλον και τις ανάγκες τους. \clearpage -\subsubsection{Συχνά είδη επιθέσεων σε δοχεία και μέθοδοι πρόληψης τους} \label{commonAttacksAndPrevention} +\subsubsection{Συχνά είδη επιθέσεων σε δοχεία και μέθοδοι πρόληψής τους} \label{commonAttacksAndPrevention} Μερικά είδη επιθέσεων σε δοχεία με τους τρόπους αντιμετώπισής τους, όπως αναφέρονται στο \cite{yasrab2018mitigating}, είναι τα εξής: @@ -1982,15 +1980,15 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), \item \textbf{Δηλητηριασμένες εικόνες δοχείων}: - Οι εικόνες δοχείων μπορεί να περιέχουν κακόβουλο λογισμικό ή λογισμικό - για το οποίο έχουν βρεθεί πλέον ευπάθειες. Ο τωρινός τρόπος ελέγχου - εγκυρότητας τους βασίζεται μονάχα στην παρουσία ενός υπογεγραμμένου - manifest αλλά δε γίνεται ποτέ αυθεντικοποίηση του αθροίσματος ελέγχου - (checksum) της κάθε εικόνας. Αυτό αφήνει ανοιχτό το ενδεχόμενο ένας - επιτιθέμενος να διαδώσει οποιαδήποτε εικόνα μαζί με το υπογεγραμμένο - manifest της. Επιβάλλεται οι χρήστες να κατεβάζουν εικόνες από - εγκεκριμένους προμηθευτές και επιπρόσθετα να τις ελέγχουν με κατάλληλα - εργαλεία ανίχνευσης τρωτοτήτων προτού τις χρησιμοποιήσουν. + Οι εικόνες δοχείων μπορεί να περιέχουν κακόβουλο λογισμικό ή λογισμικό + για το οποίο έχουν βρεθεί πλέον ευπάθειες. Ο τωρινός τρόπος ελέγχου + εγκυρότητάς τους βασίζεται μονάχα στην παρουσία ενός υπογεγραμμένου + manifest αλλά δε γίνεται ποτέ αυθεντικοποίηση του αθροίσματος ελέγχου + (checksum) της κάθε εικόνας. Αυτό αφήνει ανοιχτό το ενδεχόμενο ένας + επιτιθέμενος να διαδώσει οποιαδήποτε εικόνα μαζί με το υπογεγραμμένο + manifest της. Επιβάλλεται οι χρήστες να κατεβάζουν εικόνες από + εγκεκριμένους προμηθευτές και επιπρόσθετα να τις ελέγχουν με κατάλληλα + εργαλεία ανίχνευσης τρωτοτήτων προτού τις χρησιμοποιήσουν. \item \textbf{Απόκτηση μυστικών κωδικών/κλειδιών}: @@ -2020,31 +2018,31 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), \item \textbf{Πλαστογράφηση ARP (ARP spoofing)}: - Σε μια Address Resource Protocol (ARP) spoofing επίθεση, ο επιτιθέμενος - επιχειρεί να στείλει ψεύτικα ARP μηνύματα σε ένα δίκτυο τοπικής - περιοχής (Local Area Network - LAN). Είναι πιθανό να προσποιηθεί πως η - συσκευή του είναι μια από τις συσκευές της επιχείρησης, αλλάζοντας τη - MAC διεύθυνση του στην IP μιας συσκευής που το σύστημα αναγνωρίζει. - Επομένως, το σύστημα της επιχείρησης, θα συμπεριφέρεται στην συσκευή - του επιτιθέμενου με τον ίδιο τρόπο που θα συμπεριφερόταν στην αυθεντική - συσκευή. Δηλαδή, στέλνοντας σε αυτόν όλα τα πακέτα και τα δεδομένα που - προορίζονταν για εκείνη. Το Docker χρησιμοποιεί το ARP για να κάνει την - αντιστοίχιση IPv4 σε MAC διευθύνσεις, οι οποίες χρησιμοποιούνται από - την εικονική γέφυρα δικτύου για να διανέμουν σωστά τα πλαίσια (frames) - Ethernet αφού δεν υπάρχει φίλτρο για τα πακέτα ARP και επομένως κανένας - μηχανισμός άμυνας. Γι' αυτό τον λόγο τα δοχεία μπορούν να προσποιηθούν - ότι είναι άλλα δοχεία ή ακόμα και το κύριο μηχάνημα. Στην περίπτωση - παραβίασης ενός δοχείου, υπάρχει κίνδυνος ο επιτιθέμενος να υποκλέψει - μυστικά της επιχείρησης ή των τελικών χρηστών της υπηρεσίας που η - επιχείρηση προσφέρει. Ένας από τους τρόπους που βοηθάει στην αποφυγή - τέτοιας επίθεσης είναι η εκτέλεση δοχείων δίχως το NET\_RAW capability, - αφού έτσι τα προγράμματα μέσα στο δοχείο δε θα μπορούν να δημιουργήσουν - PF\_PACKET sockets και θα ήταν αδύνατη η διεκπεραίωση της επίθεσης. - Βέβαια, αυτή η μέθοδος έχει μειονεκτήματα αφού μπορεί αυτή η ικανότητα - να ήταν άκρως απαραίτητη για την ορθή λειτουργία της υπηρεσίας. - Επομένως, μια εναλλακτική μέθοδος προστασίας είναι η χρήση - \textquote{ebtables} για φιλτράρισμα πλαισίων Ethernet ούτως ώστε ARP - πακέτα με λάθος πρωτόκολλο αποστολέα ή διεύθυνση MAC να ανιχνεύονται - εγκαίρως και να απορρίπτονται. + Σε μια επίθεση πλαστογράφησης Address Resource Protocol (ARP), ο + επιτιθέμενος επιχειρεί να στείλει ψεύτικα ARP μηνύματα σε ένα δίκτυο + τοπικής περιοχής (Local Area Network - LAN). Είναι πιθανό να + προσποιηθεί πως η συσκευή του είναι μια από τις συσκευές της + επιχείρησης, αλλάζοντας τη MAC διεύθυνσή του στην IP μιας συσκευής που + το σύστημα αναγνωρίζει. Επομένως, το σύστημα της επιχείρησης, θα + συμπεριφέρεται στην συσκευή του επιτιθέμενου με τον ίδιο τρόπο που θα + συμπεριφερόταν στην αυθεντική συσκευή. Δηλαδή, στέλνοντας σε αυτόν όλα + τα πακέτα και τα δεδομένα που προορίζονταν για εκείνη. Το Docker + χρησιμοποιεί το ARP για να κάνει την αντιστοίχιση IPv4 σε MAC + διευθύνσεις, οι οποίες χρησιμοποιούνται από την εικονική γέφυρα δικτύου + για να διανέμουν σωστά τα πλαίσια (frames) Ethernet αφού δεν υπάρχει + φίλτρο για τα πακέτα ARP και επομένως κανένας μηχανισμός άμυνας. Γι' + αυτό τον λόγο τα δοχεία μπορούν να προσποιηθούν ότι είναι άλλα δοχεία ή + ακόμα και το κύριο μηχάνημα. Στην περίπτωση παραβίασης ενός δοχείου, + υπάρχει κίνδυνος ο επιτιθέμενος να υποκλέψει μυστικά της επιχείρησης ή + των τελικών χρηστών της υπηρεσίας που η επιχείρηση προσφέρει. Ένας από + τους τρόπους που βοηθάει στην αποφυγή τέτοιας επίθεσης είναι η εκτέλεση + δοχείων δίχως το NET\_RAW capability, αφού έτσι τα προγράμματα μέσα στο + δοχείο δε θα μπορούν να δημιουργήσουν PF\_PACKET sockets και θα ήταν + αδύνατη η διεκπεραίωση της επίθεσης. Βέβαια, αυτή η μέθοδος έχει + μειονεκτήματα αφού μπορεί αυτή η ικανότητα να ήταν άκρως απαραίτητη για + την ορθή λειτουργία της υπηρεσίας. Επομένως, μια εναλλακτική μέθοδος + προστασίας είναι η χρήση \textquote{ebtables} για φιλτράρισμα πλαισίων + Ethernet ούτως ώστε ARP πακέτα με λάθος πρωτόκολλο αποστολέα ή + διεύθυνση MAC να ανιχνεύονται εγκαίρως και να απορρίπτονται. \end{itemize} diff --git a/Chapters/3.RelevantWork.tex b/Chapters/3.RelevantWork.tex index 49c5481..23fb2c5 100644 --- a/Chapters/3.RelevantWork.tex +++ b/Chapters/3.RelevantWork.tex @@ -6,10 +6,10 @@ επιχειρήσεων. Η χρήση τεχνολογιών εικονικοποίησης και η άνοδος υπηρεσιών IaaS, έχει ελαφρύνει τον φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών αυτών, αφού πλέον υπάρχουν πολλά εργαλεία στα οποία γίνεται καθορισμός τους. Η -αυτοματοποίηση της ασφάλισης τους όμως είναι ακόμα σε πρώιμο στάδιο. Οι +αυτοματοποίηση της ασφάλισής τους όμως είναι ακόμα σε πρώιμο στάδιο. Οι περισσότερες υπηρεσίες που διατίθενται στους χρήστες κάνουν χρήση τεχνολογιών εικονικοποίησης έμμεσα από τον πάροχο νέφους που χρησιμοποιούν και τεχνολογίες -δοχείων άμεσα από επιλογή τους λόγω της υπεροχής που παρέχουν στη διαχείριση +δοχείων άμεσα από επιλογή τους λόγω της υπεροχής που παρέχουν στη διαχείρισή τους. Όλες οι υπηρεσίες όμως είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε ληφθούν τα απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα συστήματά τους. @@ -20,7 +20,7 @@ εγκατάσταση, ασφάλιση και χρήση του Docker για τη διάθεση εφαρμογών που βρίσκονται στο Docker Hub. Το επίσημο αποθετήριο του Docker. Στην ενότητα αυτή θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για έναν ή παραπάνω από -αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκριση τους ανάλογα με τον +αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκρισή τους ανάλογα με τον τρόπο λειτουργίας τους και τις δυνατότητες που παρέχουν. \clearpage @@ -41,11 +41,11 @@ \item \textbf{Ευκολία κατά την χρήση}: - Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη - που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι - παράμετροι του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την - κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό - αποτέλεσμα. + Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη + που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι + παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την + κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό + αποτέλεσμα. \item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}: @@ -55,8 +55,8 @@ \item \textbf{Ευκολία στην επέκταση}: - Το εργαλείο πρέπει να είναι εύκολο στην επέκταση του, ώστε να μπορεί να - αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών. + Το εργαλείο πρέπει να είναι εύκολο στην επέκτασή του, ώστε να μπορεί να + αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών. \end{itemize} @@ -107,21 +107,21 @@ \item \textbf{Σύγκριση με Terraform}: - Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε - αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά - λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην - χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των - μεγάλων παρόχων. Παρόλα αυτά δεν αποτελεί εργαλείο που μπορεί να - επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές. + Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε + αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά + λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην + χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των + μεγάλων παρόχων. Παρ' όλα αυτά δεν αποτελεί εργαλείο που μπορεί να + επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές. \item \textbf{Σύγκριση με Libcloud CLI}: - Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης - libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι - αρκετά ευέλικτο και εύκολο στην χρήση, παρόλα αυτά πλέον υποστηρίζει - μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή - γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητα του αλλά έχει να - ανανεωθεί από το 2018. + Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης + libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι + αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον υποστηρίζει + μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή + γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του αλλά έχει να + ανανεωθεί από το 2018. \end{itemize} @@ -132,7 +132,7 @@ όλες τις καλές πρακτικές ενός εργαλείου γραμμής εντολών όπως ο έλεγχος σφαλμάτων κατά την εισαγωγή παραμέτρων. Επιπλέον, μπορεί εύκολα να επεκταθεί η χρήση του, είτε εισάγοντας έτοιμες εντολές σε αρχεία bash είτε προσθέτοντας -νέες ενέργειες στον κώδικα του αφού πρόκειται για ένα αρχείο python. +νέες ενέργειες στον κώδικά του αφού πρόκειται για ένα αρχείο python. \clearpage @@ -172,20 +172,20 @@ \item \textbf{JShielder} \footfullcite{jshielder}: - Το JShielder είναι ένα εργαλείο ανοιχτού κώδικα που αναπτύχθηκε από τον - Jason Soto με σκοπό την αυτοματοποίηση σκλήρυνσης λειτουργικών - συστημάτων Linux. Ο πηγαίος κώδικας του βρίσκεται στο GitHub και ο - τρόπος λειτουργίας του είναι η εκτέλεση του ως χρήστης με διαχειριστικά - δικαιώματα στο σύστημα. + Το JShielder είναι ένα εργαλείο ανοιχτού κώδικα που αναπτύχθηκε από τον + Jason Soto με σκοπό την αυτοματοποίηση σκλήρυνσης λειτουργικών + συστημάτων Linux. Ο πηγαίος κώδικάς του βρίσκεται στο GitHub και ο + τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά + δικαιώματα στο σύστημα. \clearpage \item \textbf{nixarmor} \footfullcite{nixarmor}: - Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε - από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την - σκλήρυνση διάφορων διανομών Linux τα οποία μπορούν να εκτελεστούν ως - αυτόνομα προγράμματα από τον χρήστη. + Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε + από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την + σκλήρυνση διάφορων διανομών Linux, τα οποία μπορούν να εκτελεστούν ως + αυτόνομα προγράμματα από τον χρήστη. \end{itemize} @@ -198,36 +198,36 @@ \item \textbf{Σύγκριση με JShielder}: - Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος - και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να - χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρόλα - αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που - υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε - να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του - φαίνεται να έχει σταματήσει το 2019. + Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος + και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να + χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα + αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που + υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε + να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του + φαίνεται να έχει σταματήσει το 2019. \item \textbf{Σύγκριση με το nixarmor}: - Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον - ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να - επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο - είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη - περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να - επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που - περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής - και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικα του. - Παρόλα αυτά, η ανάπτυξη του έχει παύσει από το 2015 και οι διανομές που - υποστηρίζει έχουν περιοριστεί σε μονάχα 4. + Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον + ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να + επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο + είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη + περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να + επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που + περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής + και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του. + Παρ' όλα αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι διανομές + που υποστηρίζει έχουν περιοριστεί σε μονάχα 4. \end{itemize} Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να αλλοιώσει -την συμπεριφορά του ανάλογα την διανομή. Οι υποστηριζόμενες διανομές είναι 6 -και οι λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του κεφαλαίου +την συμπεριφορά του αναλόγως. Οι υποστηριζόμενες διανομές είναι 6 και οι +λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του κεφαλαίου \ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αυτό το ένα εκτελέσιμο, -παράγει κατά την εκτέλεση του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με +παράγει κατά την εκτέλεσή του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με σκοπό την αυτόματη ενημέρωση του συστήματος και το κλείσιμο αχρησιμοποίητων θυρών. @@ -237,7 +237,7 @@ Μια από τις λειτουργίες του εκτελέσιμου harden πέρα από την σκλήρυνση του συστήματος, είναι και η αυτόματη εγκατάσταση και σκλήρυνση του Docker. Αυτό -επιτυγχάνεται με την εγκατάσταση μιας τροποποιημένης έκδοσης του, η οποία +επιτυγχάνεται με την εγκατάσταση μιας τροποποιημένης έκδοσής του, η οποία δύναται να εκτελεστεί από οποιονδήποτε χρήστη του συστήματος, δίχως την ανάγκη διαχειριστικών δικαιωμάτων. Έπειτα πραγματοποιείται αντικατάσταση του αρχικού container runtime (runC) με το runsc, από το gVisor. Αυτό, αναπτύχθηκε από την @@ -250,7 +250,7 @@ Google και αποτελεί μια ασφαλέστερη επιλογή απ Επιπροσθέτως, ρυθμίζεται ο δαίμονας του Docker ώστε να εκτελείται με μεγαλύτερη ασφάλεια. Αυτό επιτυγχάνεται χρησιμοποιώντας παραμέτρους όπως \textquote{no-new-privileges} για να μην μπορεί ένα δοχείο να λάβει περισσότερα -δικαιώματα στην συνέχεια της εκτέλεσης του, καθώς και ενεργοποιώντας τις +δικαιώματα στην συνέχεια της εκτέλεσής του, καθώς και ενεργοποιώντας τις δυνατότητες του SELinux εάν αυτό υποστηρίζεται από την εκάστοτε υποκείμενη διανομή του συστήματος. Τέλος, πραγματοποιείται εγκατάσταση της υπηρεσίας σε μορφή δοχείου ονόματι \textquote{watchtower}, η οποία έχει ως στόχο την diff --git a/Chapters/4.ProjectDevelopment.tex b/Chapters/4.ProjectDevelopment.tex index 61b73a4..7cf136f 100644 --- a/Chapters/4.ProjectDevelopment.tex +++ b/Chapters/4.ProjectDevelopment.tex @@ -1,7 +1,7 @@ \chapter{Ανάπτυξη Συστήματος} \label{projectDevelopment} \noindent Στην παρούσα ενότητα θα αναλυθούν οι τεχνολογίες που χρησιμοποιήθηκαν -για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξη +για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξή του και οι σχεδιαστικές επιλογές που έγιναν. Επίσης, θα πραγματοποιηθεί απεικόνιση των συσχετίσεων μεταξύ των συστατικών του συστήματος και θα αναλυθεί περαιτέρω η λειτουργία τους. @@ -23,18 +23,18 @@ εργαλείου και των παρόχων νέφους, οφείλεται στο γεγονός ότι οι πάροχοι νέφους δεν διαθέτουν ένα κοινό API για την διαχείριση των υποδομών τους. Απεναντίας, ο καθένας από αυτούς διαθέτει το δικό του API, το οποίο χρησιμοποιείται έμμεσα -μέσω του πίνακα ελέγχου του παρόχου που βρίσκεται στην ιστοσελίδα του, ενός -δικού του εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο -ίδιος. Η libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το -οποίο χρησιμοποιώντας τις ίδιες συναρτήσεις, επιχειρεί να προσκομίσει ίδια +μέσω του πίνακα ελέγχου του, που βρίσκεται στην ιστοσελίδα του, ενός δικού του +εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο ίδιος. Η +libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το οποίο +χρησιμοποιώντας τις ίδιες συναρτήσεις, επιχειρεί να προσκομίσει ίδια αποτελέσματα ανεξαρτήτως του παρόχου νέφους που στοχεύει. \clearpage -Παρ όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την ενοποίηση -αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν να -εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο που προτείνει η παρούσα -διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών +Παρ' όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την +ενοποίηση αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν +να εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο που προτείνει η +παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών \textquote{Compute} της βιβλιοθήκης. Στην αρχική σελίδα της, αναφέρεται υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα τεκμηρίωσης \footfullcite{libcloudProviders} για τις λειτουργίες \textquote{Compute}, @@ -44,7 +44,7 @@ τους και εν γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη λειτουργία του εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και τις 9 συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για -λόγους όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση +λόγους όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους. Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν @@ -58,7 +58,7 @@ Παρακάτω θα διαπιστώσουμε πως ακόμα και με την χρήση της βιβλιοθήκης libcloud και την επίσημη υποστήριξη όλων των λειτουργιών για κάθε πάροχο, υπήρχε η ανάγκη χρήσης της επίσημης βιβλιοθήκης της Azure για την δημιουργία Resource -Group \footfullcite{azure-mgmt-resource}, Virtual Network +Group \footfullcite{azure-mgmt-resource} και Virtual Network \footfullcite{azure-mgmt-network} διότι αυτές οι λειτουργίες δεν υποστηρίζονται μέσω της libcloud. Επιπροσθέτως, δίχως την υποστήριξη των λειτουργιών αυτών, ο χρήστης θα ήταν υποχρεωμένος να δημιουργεί αυτούς τους πόρους χειροκίνητα ή να @@ -98,7 +98,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή \end{savenotes} Ο λόγος που οι εκδόσεις είναι συγκεκριμένες για τους παρόχους AWS και Azure, -είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεων τους είναι +είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεών τους είναι υπερβολικά μεγάλος και κατά την εκτέλεση της λειτουργίας δημιουργίας λίστας τους ή κατά τον έλεγχο της ορθότητας δεδομένων που εισάγει ο χρήστης, το πρόγραμμα θα καθυστερούσε σε τεράστιο βαθμό να ολοκληρωθεί. @@ -167,7 +167,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή \item \textbf{Το εργαλείο πρέπει να εμφανίζει μηνύματα λάθους σε περίπτωση που κάτι πάει στραβά κατά την εκτέλεση} - \item \textbf{το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση + \item \textbf{Το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση του αρχείου ρυθμίσεων του} \item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εκτέλεση εξωτερικού @@ -176,7 +176,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή \item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εγκατάσταση δοχείων στις εικονικές μηχανές που δημιουργεί, κατά την διάρκεια της σκλήρυνσής τους, μέσω ενός αρχείου docker-compose.yml που θα - βρίσκεται στον ίδιο φάκελο με το εκτελέσιμο αρχείο} + βρίσκεται στον ίδιο φάκελο με το εκτελέσιμο αρχείο του} \item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης όλων των διαθέσιμων εντολών του} @@ -210,7 +210,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή που έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν} \item \textbf{Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις - ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο} + ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο του} \item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων IP των εικονικών μηχανών που δημιουργεί ώστε να μπορούν να @@ -288,10 +288,11 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή Ουσιαστικά, κατά την πραγματική χρήση του SecDep υπάρχουν πάντοτε δύο οντότητες που αλληλεπιδρούν μεταξύ τους. Ο χρήστης και ο πάροχος νέφους. Ο χρήστης μπορεί να ζητήσει πληροφορίες για διαθέσιμους πόρους όπως οι εικονικές του μηχανές ή -τα συστατικά που έχει στην διάθεση του για την δημιουργία τους όπως οι +τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους όπως οι διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του χρήστη και του παρόχου νέφους, απεικονίζεται στο σχήμα -\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο mermaid. +\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο +\textquote{mermaid}. \begin{center} \begin{figure}[!ht] @@ -368,7 +369,7 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran \clearpage -\section{Αρχιτεκτονική} \label{architecture} +\section{Αρχιτεκτονική Εργαλείου} \label{architecture} Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η @@ -424,7 +425,7 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές \item \textbf{image} \item \textbf{confirm}: Για επιβεβαίωση της δημιουργίας της - εικονικής μηχανής χωρίς να χρειαστεί επιπλέον επιβεβαίωση από + εικονικής μηχανής χωρίς να χρειαστεί χειροκίνητη επιβεβαίωση από τον χρήστη. \item \textbf{deploy}: Για την εκτέλεση του harden. diff --git a/Chapters/5.ProjectShowcase.tex b/Chapters/5.ProjectShowcase.tex index b7cc89a..61e658d 100644 --- a/Chapters/5.ProjectShowcase.tex +++ b/Chapters/5.ProjectShowcase.tex @@ -214,7 +214,7 @@ IP της και η εντολή που μπορεί να εκτελέσει π εργαλείο λαμβάνοντας υπόψιν την θύρα που θα χρησιμοποιηθεί (σε περίπτωση που η εικονική μηχανή έχει σκληρύνει), το μονοπάτι μέχρι το κλειδί SSH που δημιουργήθηκε μαζί με την μηχανή στον ίδιο φάκελο με το εργαλείο και την -διεύθυνση της. Εάν ο χρήστης δεν διαθέτει πρόγραμμα ικανό να συνδεθεί μέσω SSH +διεύθυνσή της. Εάν ο χρήστης δεν διαθέτει πρόγραμμα ικανό να συνδεθεί μέσω SSH σε έναν απομακρυσμένο διακομιστή, υποστηρίζεται και η παράμετρος \textquote{--ssh}. Χωρίς την παράμετρο \textquote{--yes}, θα ζητηθεί από τον χρήστη να επιβεβαιώσει την δημιουργία της εικονικής μηχανής παρέχοντας @@ -222,7 +222,7 @@ IP της και η εντολή που μπορεί να εκτελέσει π Με την προσθήκη της παραμέτρου \textquote{--deploy}, θα εκτελεστεί η ίδια διαδικασία αλλά με την διαφορά πως θα πραγματοποιηθεί εκτέλεση και του αρχείου -harden στην εικονική μηχανή το οποίο θα σκληρύνει το λειτουργικό της σύστημα +harden στην εικονική μηχανή, το οποίο θα σκληρύνει το λειτουργικό της σύστημα και θα εγκαταστήσει την μηχανή δοχείων Docker την οποία επίσης θα σκληρύνει. \clearpage @@ -333,8 +333,8 @@ python3 secdep.py --provider aws --awsregion us-east-2 --list Με την παρακάτω εντολή, ο χρήστης λαμβάνει μια λίστα με τις διαθέσιμες εικονικές μηχανές του παρόχου Amazon που έχουν δημιουργηθεί στην περιοχή -\textquote{eu-north-1} και επιλέγει μια από αυτές για να διαγραφεί. Μετά από -επιτυχή διαγραφή, λαμβάνει επιβεβαίωση στην οθόνη του. +eu-north-1 και επιλέγει μια από αυτές για διαγραφή. Μετά από επιτυχή διαγραφή, +λαμβάνει επιβεβαίωση στην οθόνη του. \begin{listing}[!ht] \begin{bashcode} @@ -348,27 +348,14 @@ python3 secdep.py --provider aws --action delete --awsregion eu-north-1 Εάν ήθελε να διαγράψει όλες τις εικονικές μηχανές της περιοχής, η επιλογή της παραμέτρου \textquote{--action}, από \textquote{delete} θα έπρεπε να αντικατασταθεί σε \textquote{deleteall}. Με παρόμοιο τρόπο υποστηρίζονται και -εντολές για εκκίνηση, επανεκκίνηση ή διακοπή εικονικών μηχανών. +εντολές για εκκίνηση, επανεκκίνηση ή παύση εικονικών μηχανών. \clearpage Πιο λεπτομερείς οδηγίες χρήσης και εγκατάστασης περιέχονται και στην σελίδα του αποθετηρίου του SecDep \footfullcite{secdep} μέσω του αρχείου -\textquote{README.md}. Στο σχήμα του λογότυπου του SecDep, περιέχεται -υπερσύνδεσμος που οδηγεί στο αποθετήριο όπου και εμφανίζονται τα περιεχόμενα -του αρχείου οδηγιών. - -\begin{center} - \begin{figure}[!ht] - \centering - \href{https://git.konsthol.eu/konsthol/SecDep}{ - \includegraphics[width = 1.0\textwidth]{Figures/secdep_logo.png}} - \captionof{figure}{Λογότυπο του SecDep} - \label{fig:secdep_logo} - \end{figure} -\vspace*{-30pt} -\end{center} - -Εκεί, ο χρήστης μπορεί να βρει πληροφορίες σχετικά με την παραμετροποίηση και -των υπόλοιπων παρόχων νέφους, χρήσιμες ρυθμίσεις που καθιστούν την εκτέλεση του -SecDep πιο εύκολη, καθώς και περισσότερες οθόνες εκτέλεσης. +\textquote{README.md}. Στην αρχική του σελίδα, εμφανίζονται τα περιεχόμενα του +αρχείου οδηγιών. Εκεί, ο χρήστης μπορεί να βρει πληροφορίες σχετικά με την +παραμετροποίηση και των υπόλοιπων παρόχων νέφους, χρήσιμες ρυθμίσεις που +καθιστούν την εκτέλεση του SecDep πιο εύκολη, καθώς και περισσότερες οθόνες +εκτέλεσης. diff --git a/Chapters/6.Experimentation.tex b/Chapters/6.Experimentation.tex index 6bbcd66..980118e 100644 --- a/Chapters/6.Experimentation.tex +++ b/Chapters/6.Experimentation.tex @@ -1,9 +1,9 @@ \chapter{Πειραματική Αποτίμηση Εργαλείου} \label{experimentationANDresults} -\noindent Το εργαλείο που αναπτύχθηκε στα πλαίσια της διπλωματικής εργασίας -αυτής, έχει τρεις βασικούς στόχους. Την δημιουργία εικονικών μηχανών κατά μήκος -πολλών παρόχων νέφους, την σκλήρυνση του λειτουργικού συστήματος τους και την -σκλήρυνση της μηχανής δοχείων Docker που εγκαθιστά σε αυτές. Στην παρούσα +\noindent Το εργαλείο που αναπτύχθηκε στα πλαίσια της διπλωματικής αυτής +εργασίας, έχει τρεις βασικούς στόχους. Την δημιουργία εικονικών μηχανών κατά +μήκος πολλών παρόχων νέφους, την σκλήρυνση του λειτουργικού συστήματός τους και +την σκλήρυνση της μηχανής δοχείων Docker που εγκαθιστά σε αυτές. Στην παρούσα ενότητα θα παρουσιαστούν τα αποτελέσματα της αξιολόγησης της ασφάλειας των εικονικών μηχανών που δημιουργήθηκαν, χρησιμοποιώντας τρία διαφορετικά εργαλεία αξιολόγησης. Τα εργαλεία αυτά, με την σειρά που θα αναλυθούν είναι το Vuls, το @@ -13,7 +13,7 @@ Lynis και το LUNAR. Όλα τα εργαλεία αξιολόγησης που χρησιμοποιήθηκαν στην παρούσα εργασία, είναι εργαλεία ανοιχτού κώδικα και διατίθενται δωρεάν στο κοινό. Τα εργαλεία αυτά -επιλέχθηκαν με βάση την δημοτικότητα τους, την ευκολία εγκατάστασης και χρήσης +επιλέχθηκαν με βάση την δημοτικότητά τους, την ευκολία εγκατάστασης και χρήσης τους και την ποικιλία των ελέγχων που πραγματοποιούν. Στην συνέχεια θα παρουσιαστούν τα εργαλεία αυτά και ο τρόπος με τον οποίο χρησιμοποιήθηκαν. @@ -85,11 +85,11 @@ Lynis και το LUNAR. \item \textbf{Εκτεταμένη σάρωση}: - Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας - χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση - που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που - απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή - όπως το lsof, debian-goodies και reboot-notifier. + Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας + χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση + που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που + απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή + όπως τα lsof, debian-goodies και reboot-notifier. \end{itemize} @@ -128,13 +128,14 @@ Lynis και το LUNAR. Το Lynis \footfullcite{lynis} είναι το δεύτερο εργαλείο ανοιχτού κώδικα που χρησιμοποιήθηκε για την αξιολόγηση της ασφάλειας των εικονικών μηχανών. Σε αντίθεση με το Vuls, το Lynis εκτελείται αποκλειστικά στον απομακρυσμένο -διακομιστή. Πραγματοποιεί μια εκτενή ανάλυση του συστήματος εντοπίζοντας πιθανά -σημεία που μπορεί να αποτελέσουν σημεία εισόδου για επιτιθέμενους με βάση τις -βέλτιστες πρακτικές ασφάλειας. Έπειτα, επιστρέφει στον χρήστη μια λεπτομερή -αναφορά με τα ευρήματα του και προτάσεις για την επίλυση τους. Στο τελευταίο -κομμάτι της αναφοράς, παρέχεται και μια βαθμολογία της ασφάλειας του συστήματος -η οποία κυμαίνεται από το 0 έως το 100. Εκτελείται εύκολα σε κάθε σύστημα Linux -διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο bash. +διακομιστή. Πραγματοποιεί μια εκτενή ανάλυση του συστήματος εντοπίζοντας +απροσεξίες ή ελλείψεις ρυθμίσεων που μπορεί να αποτελέσουν σημεία εισόδου για +επιτιθέμενους με βάση τις βέλτιστες πρακτικές ασφαλείας. Έπειτα, επιστρέφει +στον χρήστη μια λεπτομερή αναφορά με τα ευρήματά του και προτάσεις για την +επίλυσή τους. Στο τελευταίο κομμάτι της αναφοράς, παρέχεται και μια βαθμολογία +της ασφάλειας του συστήματος η οποία κυμαίνεται από το 0 έως το 100. Εκτελείται +εύκολα σε κάθε σύστημα Linux διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο +bash. Στο σχήμα \ref{fig:lynisScan} απεικονίζεται ένα κομμάτι της αναφοράς που επιστρέφει. @@ -156,7 +157,7 @@ Lynis και το LUNAR. και το Lynis, εκτελείται στον διακομιστή του οποίου την ασφάλεια αξιολογεί. Ο τρόπος λειτουργίας του είναι προσεγγίσιμος και απλός. Εκτελεί μια σειρά ελέγχων στο σύστημα χρησιμοποιώντας το κριτήριο αναφοράς CIS, καθώς και άλλα πλαίσια -και επιστρέφει στον χρήστη μια αναφορά με τα ευρήματα του. Παρομοίως με το +και επιστρέφει στον χρήστη μια αναφορά με τα ευρήματά του. Παρομοίως με το Lynis, στο τέλος της αναφοράς του περιέχεται ο αριθμός των ελέγχων που εκτελέστηκαν, σε συνδυασμό με τον αριθμό αποτυχιών και επιτυχιών τους. @@ -189,14 +190,14 @@ Lynis, στο τέλος της αναφοράς του περιέχεται ο Οι εντολές που χρησιμοποιήθηκαν για την δημιουργία τους, έχουν την παρακάτω μορφή διότι έχει εισαχθεί το εκτελέσιμο αρχείο secdep.py στο PATH του -συστήματος και έχει δηλωθεί ως alias της το secdep. Στην περίπτωση που αυτά τα +συστήματος και έχει δηλωθεί ως alias του το secdep. Στην περίπτωση που αυτά τα βήματα δεν έχουν ληφθεί θα πρέπει οι εντολές να είναι της μορφής: \begin{bashcode} python3 secdep.py <παράμετροι χρήστη> \end{bashcode} -Χρησιμοποιήθηκε η εξής εντολή για την δημιουργία των εικονικής μηχανής χωρίς +Χρησιμοποιήθηκε η εξής εντολή για την δημιουργία της εικονικής μηχανής χωρίς σκλήρυνση λειτουργικού συστήματος: \begin{listing}[!ht] @@ -212,8 +213,8 @@ secdep -P aws -c -n test-node -s t3.micro -i ami-08869bacfa1188ec9 --yes Για την δημιουργία εικονικής μηχανής με σκλήρυνση λειτουργικού συστήματος, εγκατάσταση και σκλήρυνση της μηχανής δοχείων Docker και εισαγωγής ενός αρχείου -docker-compose.yml που βρίσκεται στον ίδιο φάκελο με το SecDep χρησιμοποιήθηκε -η εντολή: +docker-compose.yml που βρίσκεται στον ίδιο φάκελο με το secdep.py +χρησιμοποιήθηκε η εντολή: \begin{listing}[!ht] \begin{bashcode} @@ -231,7 +232,7 @@ secdep -P aws -c -n test-node -s t3.micro -i ami-08869bacfa1188ec9 --yes --docke \section{Εγκατάσταση/Χρήση των εργαλείων αξιολόγησης} \label{toolsInstallation} Αφότου έχουν δημιουργηθεί οι εικονικές μηχανές, μπορεί να ξεκινήσει η -διαδικασία αξιολόγησης της ασφάλειας τους. Αρχικά, θα παρουσιαστεί η διαδικασία +διαδικασία αξιολόγησης της ασφάλειάς τους. Αρχικά, θα παρουσιαστεί η διαδικασία εγκατάστασης του κάθε εργαλείου και έπειτα θα παρουσιαστεί η διαδικασία χρήσης τους. @@ -253,11 +254,11 @@ https://raw.githubusercontent.com\ \end{listing} Ορθή πρακτική θα ήταν να γίνει έλεγχος του περιεχομένου του αρχείου πριν την -εκτέλεση της εντολής αυτής για να βεβαιωθεί κανείς ότι δεν περιέχει κάποιο -κακόβουλο κώδικα. Στην συνέχεια, θα πρέπει να δημιουργηθεί ο φάκελος που θα -περιέχει τα δεδομένα των πηγών από όπου και θα αντλεί τις πληροφορίες -ευπαθειών, καθώς και ένα αρχείο config.toml στο οποίο θα δηλωθούν τα -διαπιστευτήρια των διακομιστών που θα αξιολογηθούν. +εκτέλεση της εντολής αυτής για να βεβαιωθεί κανείς ότι δεν περιέχει κακόβουλο +κώδικα. Στην συνέχεια, θα πρέπει να δημιουργηθεί ο φάκελος που θα περιέχει τα +δεδομένα των πηγών από όπου και θα αντλεί τις πληροφορίες ευπαθειών, καθώς και +ένα αρχείο config.toml στο οποίο θα δηλωθούν τα διαπιστευτήρια των διακομιστών +που θα αξιολογηθούν. Αυτό επιτυγχάνεται με τις παρακάτω εντολές: @@ -265,7 +266,7 @@ https://raw.githubusercontent.com\ \begin{bashcode} mkdir -p /usr/share/vuls-data \end{bashcode} -\caption{Δημιουργία φακέλου} +\caption{Δημιουργία φακέλου δεδομένων του Vuls} \label{lst:create-vuls-data-folder} \vspace*{-10pt} \end{listing} @@ -326,10 +327,11 @@ ssh-keyscan -H -p <θύρα SSH> >> ~/.ssh/know \vspace*{-10pt} \end{listing} -Επιπροσθέτως, θα πρέπει να μεταφερθεί στον υπολογιστή που έχει εγκατεστημένο το -Vuls, το ιδιωτικό κλειδί του διακομιστή (ένα αρχείο ονόματι secdep), το οποίο -δημιουργείται στον ίδιο φάκελο με το εργαλείο SecDep. Για την αρχικοποίηση της -βάσης δεδομένων ευπαθειών του Vuls, εκτελούνται με σειρά οι εντολές: +Επιπροσθέτως, θα πρέπει να μεταφερθεί στον υπολογιστή που είναι εγκατεστημένο +το Vuls, το ιδιωτικό κλειδί του διακομιστή (ένα αρχείο ονόματι secdep), το +οποίο δημιουργείται στον ίδιο φάκελο που βρίσκεται το secdep.py. Για την +αρχικοποίηση της βάσης δεδομένων ευπαθειών του Vuls, εκτελούνται με σειρά οι +εντολές: \begin{listing}[!ht] \begin{bashcode} @@ -455,7 +457,7 @@ vuls report -format-json να κατεβάσουμε στον διακομιστή μας το εργαλείο VulsRepo \footfullcite{vulsrepo}. Θα πρέπει να μεταφερθούμε σε έναν φάκελο της επιλογής μας και έπειτα να το κατεβάσουμε μέσω της εντολής git και να αρχικοποιήσουμε το -αρχείο ρυθμίσεων του. Αυτά τα βήματα επιτυγχάνονται με τις παρακάτω εντολές: +αρχείο ρυθμίσεών του. Αυτά τα βήματα επιτυγχάνονται με τις παρακάτω εντολές: \begin{listing}[ht] \begin{bashcode} @@ -527,7 +529,7 @@ EOF απλή. Εδώ τα βήματα που πρέπει να ακολουθηθούν είναι η σύνδεση στους διακομιστές της Amazon μέσω SSH (για την οποία η εντολή είναι έτοιμη μετά την δημιουργία κάθε διακομιστή), η εγκατάσταση του εργαλείου μέσω git και η -εκτέλεση του. Αυτά πραγματοποιούνται ως εξής: +εκτέλεσή του. Αυτά πραγματοποιούνται ως εξής: \begin{listing}[!ht] \begin{bashcode} @@ -569,7 +571,7 @@ cd lynis \begin{bashcode} ./lynis audit system > ~/lynis.log \end{bashcode} -\caption{Εκκίνηση αξιολόγησης (και αποθήκευση της) μέσω του Lynis} +\caption{Εκκίνηση αξιολόγησης (και αποθήκευσή της) μέσω του Lynis} \label{lst:lynis-audit} \vspace*{-10pt} \end{listing} @@ -602,7 +604,7 @@ cd lunar \begin{bashcode} ./lunar.sh -a > ~/lunar.log \end{bashcode} -\caption{Εκκίνηση αξιολόγησης (και αποθήκευση της) μέσω του LUNAR} +\caption{Εκκίνηση αξιολόγησης (και αποθήκευσή της) μέσω του LUNAR} \label{lst:lunar-audit} \vspace*{-10pt} \end{listing} @@ -613,7 +615,7 @@ cd lunar παρήχθησαν από τα εργαλεία αξιολόγησης αναδεικνύουν τις διαφορές στην ασφάλεια των δύο διακομιστών. Στην παρούσα ενότητα θα αναλυθούν τα αποτελέσματα του κάθε εργαλείου αξιολόγησης ξεχωριστά και έπειτα θα βγει μια συμπερασματική -αξιολόγηση τους. +αξιολόγησή τους. \subsection{Αποτελέσματα αξιολόγησης με το Vuls} \label{vulsResults} @@ -867,9 +869,9 @@ cat lunar.log | grep -i "warnings:" | awk '{print $2}' Επιπρόσθετα, η σκλήρυνση της μηχανής δοχείων Docker δεν απεικονίζεται σε κανένα από τα παραπάνω γραφήματα. Αυτό συμβαίνει διότι δεν υπάρχει εργαλείο που να μπορεί να αξιολογήσει την ασφάλεια του Docker όταν αυτό χρησιμοποιείται χωρίς -διαχειριστικά δικαιώματα. Ωστόσο, η σκλήρυνση του έχει πετύχει διότι η απαλλαγή +διαχειριστικά δικαιώματα. Ωστόσο, η σκλήρυνσή του έχει πετύχει διότι η απαλλαγή από τον περιορισμό των διαχειριστικών δικαιωμάτων έχει ως αποτέλεσμα την μείωση -της επιφάνειας επίθεσης σε περίπτωση παραβίασης του, ενώ η αντικατάσταση του +της επιφάνειας επίθεσης σε περίπτωση παραβίασής του, ενώ η αντικατάσταση του runC με το runsc μειώνει την πιθανότητα παραβίασης. Για την ενίσχυση της ασφάλειας του Docker, εκτελούνται και βήματα όπως η ρύθμιση της παραμέτρου του δαίμονα \textquote{no-new-privileges} που αποτρέπει τα δοχεία από το να diff --git a/Chapters/7.Conclusions.tex b/Chapters/7.Conclusions.tex index 16edbfc..d33604a 100644 --- a/Chapters/7.Conclusions.tex +++ b/Chapters/7.Conclusions.tex @@ -7,7 +7,7 @@ τις μεγαλύτερες επαναστατικές εξελίξεις της τελευταίας δεκαετίας, δίνοντας την δυνατότητα στους προγραμματιστές να αναπτύσσουν και να εκτελούν εφαρμογές σε οποιοδήποτε περιβάλλον, χωρίς να χρειάζεται να ανησυχούν για τα χαρακτηριστικά -του συστήματος στο οποίο θα εκτελεστεί η εφαρμογή. Ωστόσο, η χρήση των παραπάνω +του συστήματος στο οποίο θα εκτελούνται. Ωστόσο, η χρήση των παραπάνω τεχνολογιών, όπως και οποιασδήποτε άλλης τεχνολογίας, προϋποθέτει την υπακοή σε κάποιους κανόνες και πρωτόκολλα, προκειμένου να επιτευχθεί η αποδοτικότερη και ασφαλέστερη λειτουργία τους. @@ -38,17 +38,17 @@ SecDep, είναι ικανό να δημιουργήσει εικονικές Επιπλέον, το SecDep μπορεί να αποτελέσει ένα χρήσιμο εργαλείο για την εκπαίδευση σε θέματα ασφάλειας, καθώς ο χρήστης έχει την δυνατότητα να -μελετήσει τον πηγαίο κώδικα του και να προσθέσει τις δικές του λειτουργίες, -προκειμένου να επεκτείνει την λειτουργικότητα του. Το εργαλείο διανέμεται με +μελετήσει τον πηγαίο κώδικά του και να προσθέσει τις δικές του λειτουργίες, +προκειμένου να επεκτείνει την λειτουργικότητά του. Το εργαλείο διανέμεται με την άδεια χρήσης \href{https://www.gnu.org/licenses/gpl-3.0.html}{GPLv3}, η οποία παρέχει το δικαίωμα στον χρήστη να το χρησιμοποιήσει, να το μελετήσει, να το τροποποιήσει και να το διανείμει ελεύθερα. \section{Προτάσεις για Μελλοντική Έρευνα} -Παρόλο που το SecDep, είναι ένα πλήρες και λειτουργικό εργαλείο, υπάρχουν -πολλές ευκαιρίες για την επέκταση του. Αρχικά, θα μπορούσε να επεκταθεί η -λειτουργικότητα του, ώστε να υποστηρίζει και άλλους παρόχους νέφους. Αυτό +Παρ' όλο που το SecDep, είναι ένα πλήρες και λειτουργικό εργαλείο, υπάρχουν +πολλές ευκαιρίες για την επέκτασή του. Αρχικά, θα μπορούσε να επεκταθεί η +λειτουργικότητά του, ώστε να υποστηρίζει και άλλους παρόχους νέφους. Αυτό βέβαια εξαρτάται άμεσα και από το εύρος της υποστήριξης συγκεκριμένων συναρτήσεων από την βιβλιοθήκη libcloud. Επιπλέον, θα μπορούσε να αλλοιωθεί με σκοπό την υποστήριξη παραπάνω μεθόδων της βιβλιοθήκης, δίνοντας στον χρήστη @@ -56,16 +56,16 @@ SecDep, είναι ικανό να δημιουργήσει εικονικές εξισορρόπησης φόρτου εργασιών. Τα παραπάνω αφορούν την επέκταση ενός από τα δύο εκτελέσιμα αρχεία του SecDep. -Το δεύτερο, το οποίο επικεντρώνεται στην σκλήρυνση του συστήματος, θα μπορούσε -και αυτό να επεκταθεί, προσθέτοντας νέες λειτουργίες. Μια από αυτές θα μπορούσε -να είναι η επιλογή του χρήστη για εφαρμογή συγκεκριμένων ρυθμίσεων ασφαλείας. -Επίσης, θα μπορούσε να χωριστεί σε δύο ανεξάρτητα εκτελέσιμα αρχεία, το ένα -υπεύθυνο για την σκλήρυνση του συστήματος και το άλλο για την εγκατάσταση και -σκλήρυνση του δαίμονα του Docker. Με αυτόν τον τρόπο, ο χρήστης θα μπορούσε να -επιλέξει να εγκαταστήσει μια σκληρυμένη έκδοση του Docker σε ένα σύστημα που -έχει ήδη σκληρύνει, χωρίς να χρειάζεται να χρησιμοποιήσει το πρώτο εκτελέσιμο -αρχείο. Τέλος, θα μπορούσε να βελτιωθεί η διαδικασία σκλήρυνσης. Τα -αποτελέσματα είναι ήδη αρκετά ικανοποιητικά, ωστόσο πάντα υπάρχουν περιθώρια -βελτίωσης. +Το δεύτερο, το οποίο επικεντρώνεται στην σκλήρυνση του συστήματος και του +Docker, θα μπορούσε και αυτό να επεκταθεί, προσθέτοντάς του νέες λειτουργίες. +Μια από αυτές θα μπορούσε να είναι η επιλογή του χρήστη για εφαρμογή +συγκεκριμένων ρυθμίσεων ασφαλείας. Επίσης, θα μπορούσε να χωριστεί σε δύο +ανεξάρτητα εκτελέσιμα αρχεία, το ένα υπεύθυνο για την σκλήρυνση του συστήματος +και το άλλο για την εγκατάσταση και σκλήρυνση του δαίμονα του Docker. Με αυτόν +τον τρόπο, ο χρήστης θα μπορούσε να επιλέξει να εγκαταστήσει μια σκληρυμένη +έκδοση του Docker σε ένα σύστημα που έχει ήδη σκληρύνει, χωρίς να χρειάζεται να +χρησιμοποιήσει το πρώτο εκτελέσιμο αρχείο. Τέλος, θα μπορούσε να βελτιωθεί η +διαδικασία σκλήρυνσης. Τα αποτελέσματα είναι ήδη αρκετά ικανοποιητικά, ωστόσο +πάντα υπάρχουν περιθώρια βελτίωσης. \clearpage