Fixed compilation errors
This commit is contained in:
@@ -1,24 +1,267 @@
|
||||
\chapter{Σχετικές Εργασίες} \label{relevantWork}
|
||||
|
||||
Με την πάροδο των χρόνων και τη ραγδαία αύξηση ενδιαφέροντος προς τον κλάδο της
|
||||
υπολογιστικής νέφους, άρχισε να γίνεται όλο και πιο επιτακτική η ανάγκη για
|
||||
αυτοματοποιημένο στήσιμο και προστασία των υποδομών των επιχειρήσεων. Η χρήση
|
||||
τεχνολογιών εικονικοποίησης και η άνοδος υπηρεσιών IaaS, έχει ελαφρύνει τον
|
||||
φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών αφού πλέον υπάρχουν πολλά
|
||||
εργαλεία στα οποία γίνεται καθορισμός τους. Η αυτοματοποίηση της ασφάλισης τους
|
||||
όμως είναι ακόμα σε πρώιμο στάδιο. Οι περισσότερες υπηρεσίες που διατίθενται
|
||||
στους χρήστες κάνουν χρήση τεχνολογιών εικονικοποίησης έμμεσα από τον πάροχο
|
||||
νέφους που χρησιμοποιούν και τεχνολογίες δοχείων άμεσα από επιλογή τους λόγω
|
||||
της υπεροχής που παρέχουν στη διαχείριση. Όλες οι υπηρεσίες όμως είναι εν
|
||||
δυνάμει ευάλωτες σε επιθέσεις εάν δε ληφθούν τα απαραίτητα μέτρα προστασίας και
|
||||
αφήσουν ανοιχτά σημεία εισόδου στο δίκτυο τους.
|
||||
\noindent Με την πάροδο των χρόνων και τη ραγδαία αύξηση ενδιαφέροντος προς τον
|
||||
κλάδο της υπολογιστικής νέφους, άρχισε να γίνεται όλο και πιο επιτακτική η
|
||||
ανάγκη για αυτοματοποιημένο στήσιμο και προστασία των υποδομών των
|
||||
επιχειρήσεων. Η χρήση τεχνολογιών εικονικοποίησης και η άνοδος υπηρεσιών IaaS,
|
||||
έχει ελαφρύνει τον φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών αυτών,
|
||||
αφού πλέον υπάρχουν πολλά εργαλεία στα οποία γίνεται καθορισμός τους. Η
|
||||
αυτοματοποίηση της ασφάλισης τους όμως είναι ακόμα σε πρώιμο στάδιο. Οι
|
||||
περισσότερες υπηρεσίες που διατίθενται στους χρήστες κάνουν χρήση τεχνολογιών
|
||||
εικονικοποίησης έμμεσα από τον πάροχο νέφους που χρησιμοποιούν και τεχνολογίες
|
||||
δοχείων άμεσα από επιλογή τους λόγω της υπεροχής που παρέχουν στη διαχείριση.
|
||||
Όλες οι υπηρεσίες όμως είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε ληφθούν τα
|
||||
απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα συστήματά
|
||||
τους.
|
||||
|
||||
Η παρούσα εργασία έχει ως στόχο την ανάπτυξη ενός εργαλείου που επιτυγχάνει την
|
||||
αυτοματοποίηση τριών τομέων. Την επικοινωνία με τον πάροχο νέφους για την
|
||||
αίτηση διάθεσης υπολογιστικών πόρων, την ασφάλιση των πόρων αυτών και τέλος την
|
||||
εγκατάσταση, ασφάλιση και χρήση του Docker για τη διάθεση εφαρμογών που
|
||||
βρίσκονται στο Dockerhub. Το επίσημο αποθετήριο του Docker.
|
||||
βρίσκονται στο Docker Hub. Το επίσημο αποθετήριο του Docker.
|
||||
|
||||
Στην παρούσα ενότητα θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για έναν
|
||||
ή παραπάνω από αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκριση τους
|
||||
Στην ενότητα αυτή θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για έναν ή
|
||||
παραπάνω από αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκριση τους
|
||||
ανάλογα με τον τρόπο λειτουργίας τους και τις δυνατότητες που παρέχουν.
|
||||
|
||||
\clearpage
|
||||
|
||||
\section{Αυτοματοποίηση δημιουργίας εικονικών μηχανών}
|
||||
|
||||
Σε σχέση με τα εργαλεία αυτοματοποίησης δημιουργίας εικονικών μηχανών, τα
|
||||
κριτήρια που θα ληφθούν υπόψιν για την σύγκριση με το εργαλείο που προτείνει η
|
||||
διπλωματική εργασία είναι τα εξής:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item \textbf{Ευελιξία κατά την χρήση}:
|
||||
|
||||
Το εργαλείο πρέπει να μπορεί να προσαρμόζεται στις ανάγκες του χρήστη
|
||||
όταν αυτός χρειάζεται να πραγματοποιήσει ορισμένες αλλαγές κατά την
|
||||
χρήση του.
|
||||
|
||||
\item \textbf{Ευκολία κατά την χρήση}:
|
||||
|
||||
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη
|
||||
που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι
|
||||
παράμετροι του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την
|
||||
κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό
|
||||
αποτέλεσμα.
|
||||
|
||||
\item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}:
|
||||
|
||||
Το εργαλείο πρέπει να υποστηρίζει την επικοινωνία με τα νέφη μεγάλων
|
||||
εταιρειών στον κλάδο της νεφο-υπολογιστικής, ώστε να είναι εύκολο για
|
||||
να έναν χρήστη να παραμείνει στον πάροχο της επιλογής του.
|
||||
|
||||
\item \textbf{Ευκολία στην επέκταση}:
|
||||
|
||||
Το εργαλείο πρέπει να είναι εύκολο στην επέκταση του, ώστε να μπορεί να
|
||||
αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Εργαλεία δημιουργίας εικονικών μηχανών}
|
||||
|
||||
Τα εργαλεία με τα οποία θα γίνει σύγκριση περιγράφονται στην συνέχεια ως εξής:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item \textbf{Terraform}:
|
||||
|
||||
Το Terraform είναι ένα δημοφιλές εργαλείο ανοιχτού κώδικα που
|
||||
αναπτύχθηκε από την εταιρεία HashiCorp. Αποτελεί ένα εργαλείο, κατά την
|
||||
χρήση του οποίου ο χρήστης καθορίζει τα χαρακτηριστικά της υποδομής που
|
||||
θέλει να δημιουργήσει σε ένα αρχείο που ακολουθεί συγκεκριμένη σύνταξη.
|
||||
Αυτό το εντάσσει στην κατηγορίας \textquote{υποδομή ως κώδικας
|
||||
(Infrastructure as Code - IaC)} και χρησιμοποιείται για τον καθορισμό
|
||||
των υποδομών που θα χρησιμοποιηθούν για την στέγαση εφαρμογών. Το
|
||||
Terraform υποστηρίζει πολλούς παρόχους νέφους και επιτρέπει την
|
||||
αυτοματοποίηση της διαδικασίας δημιουργίας υποδομών σε αυτούς. Ο τρόπος
|
||||
λειτουργίας του είναι αρκετά απλός. Αφού ο χρήστης έχει δημιουργήσει το
|
||||
αρχείο που περιγράφει την υποδομή, το εκτελεί για να γίνουν οι
|
||||
απαραίτητες ενέργειες. Έπειτα ο χρήστης μπορεί να αποδεσμεύσει τους
|
||||
πόρους που δημιουργήθηκαν όταν δεν τους χρειάζεται πλέον.
|
||||
|
||||
\item \textbf{Libcloud CLI} \footfullcite{libcloud-cli}:
|
||||
|
||||
Αποτελεί την δεύτερη τροποποιημένη έκδοση από ένα τρίτο πρόσωπο, ενός
|
||||
προγράμματος που επιχειρούσε να επιτύχει την δημιουργία ενός εργαλείου
|
||||
γραμμής εντολών που χρησιμοποιεί την βιβλιοθήκη libcloud για την
|
||||
δημιουργία εικονικών μηχανών κατά μήκος διάφορων παρόχων νέφους. Είναι
|
||||
ένα εργαλείο γραμμής εντολών που απαιτεί αρχείο ρυθμίσεων μονάχα για
|
||||
την αυθεντικοποίηση με τους παρόχους νέφους.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Σύγκριση με το SecDep}
|
||||
|
||||
Σχετικά με τα κριτήρια που έχουν οριστεί για την σύγκριση με εργαλεία που ως
|
||||
κύριο στόχο έχουν την δημιουργία εικονικών μηχανών, το εργαλείο που προτείνει η
|
||||
διπλωματική εργασία παρέχει όλα τα απαραίτητα χαρακτηριστικά.
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item \textbf{Σύγκριση με Terraform}:
|
||||
|
||||
Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε αλλαγή
|
||||
απαιτεί την τροποποίηση του. Αυτό το καθιστά λιγότερο ευέλικτο σε σχέση με άλλα
|
||||
εργαλεία. Είναι σχετικά εύκολο στην χρήση όπως τα υπόλοιπα και δύναται να
|
||||
χρησιμοποιήσει τα νέφη όλων των μεγάλων παρόχων. Παρόλα αυτά δεν αποτελεί
|
||||
εργαλείο που μπορεί να επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το
|
||||
καθιστά αυτοτελές.
|
||||
|
||||
\item \textbf{Σύγκριση με Libcloud CLI}:
|
||||
|
||||
Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης
|
||||
libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι
|
||||
αρκετά ευέλικτο και εύκολο στην χρήση, παρόλα αυτά πλέον υποστηρίζει
|
||||
μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή
|
||||
γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητα του αλλά έχει να
|
||||
ανανεωθεί από το 2018.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
Ο χρήστης δύναται κατά την χρήση του SecDep να επιλέξει τις ενέργειες και τα
|
||||
χαρακτηριστικά που επιθυμεί για την εικονική μηχανή του. Όλες οι παράμετροι
|
||||
είναι εύκολα κατανοητές και συνδυάζονται μεταξύ τους για να επιτευχθεί το
|
||||
επιθυμητό αποτέλεσμα. Υποστηρίζει όλους τους δημοφιλείς παρόχους νέφους και
|
||||
όλες τις καλές πρακτικές ενός εργαλείου γραμμής εντολών όπως ο έλεγχος
|
||||
σφαλμάτων κατά την εισαγωγή παραμέτρων. Επιπλέον, μπορεί εύκολα να επεκταθεί η
|
||||
χρήση του, είτε εισάγοντας έτοιμες εντολές σε αρχεία bash είτε προσθέτοντας
|
||||
νέες ενέργειες στον κώδικα του αφού πρόκειται για ένα αρχείο python.
|
||||
|
||||
\clearpage
|
||||
|
||||
\section{Αυτοματοποίηση σκλήρυνσης εικονικών μηχανών}
|
||||
|
||||
Τα κριτήρια που θα ληφθούν υπόψιν για α εργαλεία αυτοματοποίησης σκλήρυνσης
|
||||
εικονικών μηχανών είναι τα εξής:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item \textbf{Υποστήριξη πολλών διανομών}:
|
||||
|
||||
Το εργαλείο πρέπει να υποστηρίζει διάφορες διανομές Linux και να είναι
|
||||
αρκετά ευέλικτο ώστε να μπορεί να ξεχωρίσει την διανομή στην οποία
|
||||
εκτελείται.
|
||||
|
||||
\item \textbf{Ευκολία κατά την χρήση}:
|
||||
|
||||
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη.
|
||||
Ιδανικά να αρκεί η εκτέλεσή του σε μια εικονική μηχανή χωρίς την ανάγκη
|
||||
εγκατάστασης εξαρτήσεων.
|
||||
|
||||
\item \textbf{Εύρος σκλήρυνσης}:
|
||||
|
||||
Το εργαλείο πρέπει να μπορεί να σκληρύνει την εικονική μηχανή σε
|
||||
ικανοποιητικό βαθμό και να μην περιορίζεται σε λίγες μονάχα επιλογές.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Εργαλεία σκλήρυνσης εικονικών μηχανών}
|
||||
|
||||
Τα παρακάτω εργαλεία θα συγκριθούν με το harden. Το δεύτερο εκτελέσιμο αρχείο
|
||||
του εργαλείου SecDep, το οποίο κατά την επιλογή του χρήστη εκτελείται σε μια
|
||||
εικονική μηχανή μετά την δημιουργία της.
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item \textbf{JShielder} \footfullcite{jshielder}:
|
||||
|
||||
Το JShielder είναι ένα εργαλείο ανοιχτού κώδικα που αναπτύχθηκε από τον
|
||||
Jason Soto με σκοπό την αυτοματοποίηση σκλήρυνσης λειτουργικών
|
||||
συστημάτων Linux. Ο πηγαίος κώδικας του βρίσκεται στο GitHub και ο
|
||||
τρόπος λειτουργίας του είναι η εκτέλεση του ως χρήστης με διαχειριστικά
|
||||
δικαιώματα στο σύστημα.
|
||||
|
||||
\item \textbf{nixarmor} \footfullcite{nixarmor}:
|
||||
|
||||
Ένα εργαλείο ανοιχτού κώδικα που στεγάζεται στο GitHub και αναπτύχθηκε
|
||||
από τον Emir Ozer. Περιέχει διαφορετικά εκτελέσιμα αρχεία για την
|
||||
σκλήρυνση διάφορων διανομών Linux τα οποία μπορούν να εκτελεστούν ως
|
||||
αυτόνομα προγράμματα από τον χρήστη.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Σύγκριση με το harden}
|
||||
|
||||
Σχετικά με τα δηλωθέντα κριτήρια, το SecDep ικανοποιεί όλους τους παραπάνω
|
||||
στόχους.
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item \textbf{Σύγκριση με JShielder}:
|
||||
|
||||
Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος
|
||||
και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να
|
||||
χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρόλα
|
||||
αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που
|
||||
υποστηρίζονται μέσω αυτού είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε
|
||||
να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του
|
||||
φαίνεται να έχει σταματήσει το 2019.
|
||||
|
||||
\item \textbf{Σύγκριση με το nixarmor}:
|
||||
|
||||
Σε αντίθεση με το JShielder, το nixarmor για να χρησιμοποιηθεί με τον
|
||||
ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία θα πρέπει να
|
||||
επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο
|
||||
είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Στην αντίθετη
|
||||
περίπτωση, πάλι η χρήση του είναι εύκολη διότι ο χρήστης μπορεί να
|
||||
επιλέξει και να εκτελέσει χειροκίνητα ένα από τα εκτελέσιμα αρχεία που
|
||||
περιέχει. Η σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής
|
||||
και μπορεί εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικα του.
|
||||
Παρόλα αυτά, η ανάπτυξη του έχει παύσει από το 2015 και οι διανομές που
|
||||
υποστηρίζει έχουν περιοριστεί σε μονάχα 4.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα
|
||||
αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να αλλοιώσει
|
||||
την συμπεριφορά του ανάλογα την διανομή. Οι υποστηριζόμενες διανομές είναι 6
|
||||
και οι λειτουργίες του αν και σύμφωνα με τα αποτελέσματα του κεφαλαίου
|
||||
\ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να
|
||||
επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αυτό το ένα εκτελέσιμο,
|
||||
παράγει κατά την εκτέλεση του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με
|
||||
σκοπό την αυτόματη ενημέρωση του συστήματος και το κλείσιμο αχρησιμοποίητων
|
||||
θυρών.
|
||||
|
||||
\clearpage
|
||||
|
||||
\section{Αυτοματοποίηση εγκατάστασης/σκλήρυνσης του Docker}
|
||||
|
||||
Μια από τις λειτουργίες του εκτελέσιμου harden πέρα από την σκλήρυνση του
|
||||
συστήματος, είναι και η αυτόματη εγκατάσταση και σκλήρυνση του Docker. Αυτό
|
||||
επιτυγχάνεται με την εγκατάσταση μιας τροποποιημένης έκδοσης του, η οποία
|
||||
δύναται να εκτελεστεί από οποιονδήποτε χρήστη του συστήματος, δίχως την ανάγκη
|
||||
διαχειριστικών δικαιωμάτων. Έπειτα πραγματοποιείται αντικατάσταση του αρχικού
|
||||
container runtime (runC) με το runsc, από το gVisor. Αυτό, αναπτύχθηκε από την
|
||||
Google και αποτελεί μια ασφαλέστερη επιλογή από το αρχικό, διότι περιορίζει τις
|
||||
κλήσεις του συστήματος (system calls) στις άκρως απαραίτητες για την λειτουργία
|
||||
του Docker. Ο συνδυασμός αυτών των δύο βημάτων έχει ήδη περιορίσει την
|
||||
επιφάνεια επίθεσης σε περίπτωση απόδρασης από ένα δοχείο και έχει μειώσει την
|
||||
πιθανότητα κάτι τέτοιο να συμβεί.
|
||||
|
||||
Επιπροσθέτως, ρυθμίζεται ο δαίμονας του Docker ώστε να εκτελείται με μεγαλύτερη
|
||||
ασφάλεια. Αυτό επιτυγχάνεται χρησιμοποιώντας παραμέτρους όπως
|
||||
\textquote{no-new-privileges} για να μην μπορεί ένα δοχείο να λάβει περισσότερα
|
||||
δικαιώματα στην συνέχεια της εκτέλεσης του, καθώς και ενεργοποιώντας τις
|
||||
δυνατότητες του SELinux εάν αυτό υποστηρίζεται από την εκάστοτε υποκείμενη
|
||||
διανομή του συστήματος. Τέλος, πραγματοποιείται εγκατάσταση της υπηρεσίας σε
|
||||
μορφή δοχείου ονόματι \textquote{watchtower}, η οποία έχει ως στόχο την
|
||||
αυτόματη ενημέρωση των δοχείων που εκτελούνται στο σύστημα.
|
||||
|
||||
\subsection{Καινοτομία του SecDep}
|
||||
|
||||
Δεδομένου ότι πολλές από τις παραπάνω τεχνολογίες είναι σχετικά νέες, δεν
|
||||
υπάρχουν στην αγορά εργαλεία που να έχουν ως κύριο στόχο την αυτόματη εφαρμογή
|
||||
τους. Τα περισσότερα επικεντρώνονται στην σκλήρυνση των δοχείων και όχι του
|
||||
δαίμονα, ενώ όσα επιχειρούν να σκληρύνουν τον δαίμονα έχουν να ανανεωθούν πολύ
|
||||
προτού έρθουν στο προσκήνιο οι τεχνολογίες που χρησιμοποιεί το harden.
|
||||
Επομένως, δεν θα υπήρχε δίκαιη σύγκριση με αυτά. Στον συγκεκριμένο τομέα, το
|
||||
SecDep προσφέρει μια ολοκληρωμένη λύση, η οποία εκτελεί όλα τα παραπάνω βήματα
|
||||
δίχως την ανάγκη αλληλεπίδρασης ή περαιτέρω ρυθμίσεων από τον χρήστη.
|
||||
|
||||
Reference in New Issue
Block a user