263 lines
21 KiB
TeX
263 lines
21 KiB
TeX
\chapter{Σχετικές Εργασίες} \label{relevantWork}
|
||
|
||
\noindent Με την πάροδο των χρόνων και τη ραγδαία αύξηση ενδιαφέροντος προς τον
|
||
κλάδο της υπολογιστικής νέφους, άρχισε να γίνεται όλο και πιο επιτακτική η
|
||
ανάγκη για αυτοματοποιημένο στήσιμο και προστασία των υποδομών των
|
||
επιχειρήσεων. Η χρήση τεχνολογιών εικονικοποίησης και η άνοδος υπηρεσιών IaaS,
|
||
έχει ελαφρύνει τον φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών αυτών,
|
||
αφού πλέον υπάρχουν πολλά εργαλεία στα οποία γίνεται καθορισμός τους. Η
|
||
αυτοματοποίηση της ασφάλισής τους όμως είναι ακόμα σε πρώιμο στάδιο. Οι
|
||
περισσότερες υπηρεσίες που διατίθενται στους χρήστες κάνουν χρήση τεχνολογιών
|
||
εικονικοποίησης έμμεσα από τον πάροχο νέφους που χρησιμοποιούν και τεχνολογίες
|
||
δοχείων άμεσα από επιλογή τους λόγω της υπεροχής που παρέχουν στη διαχείρισή
|
||
τους. Όλες οι υπηρεσίες όμως είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε
|
||
ληφθούν τα απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα
|
||
συστήματά τους.
|
||
|
||
Η παρούσα εργασία έχει ως στόχο την ανάπτυξη ενός εργαλείου που επιτυγχάνει την
|
||
αυτοματοποίηση τριών τομέων. Την επικοινωνία με τον πάροχο νέφους για την
|
||
αίτηση διάθεσης υπολογιστικών πόρων, την ασφάλιση των πόρων αυτών και τέλος την
|
||
εγκατάσταση, ασφάλιση και χρήση του Docker για τη διάθεση εφαρμογών που
|
||
βρίσκονται στο Docker Hub. Το επίσημο αποθετήριο του Docker. Στην ενότητα αυτή
|
||
θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για έναν ή παραπάνω από
|
||
αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκρισή τους ανάλογα με τον
|
||
τρόπο λειτουργίας τους και τις δυνατότητες που παρέχουν.
|
||
|
||
\section{Αυτοματοποίηση δημιουργίας εικονικών μηχανών}
|
||
|
||
Σε σχέση με τα εργαλεία αυτοματοποίησης δημιουργίας εικονικών μηχανών, τα
|
||
κριτήρια που θα ληφθούν υπόψιν για την σύγκριση με το εργαλείο που προτείνει η
|
||
διπλωματική εργασία είναι τα εξής:
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Ευελιξία κατά την χρήση}:
|
||
|
||
Το εργαλείο πρέπει να μπορεί να προσαρμόζεται στις ανάγκες του χρήστη
|
||
όταν αυτός χρειάζεται να πραγματοποιήσει ορισμένες παραμετροποιήσεις
|
||
κατά την χρήση του.
|
||
|
||
\clearpage
|
||
|
||
\item \textbf{Ευκολία κατά την χρήση}:
|
||
|
||
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη
|
||
που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι
|
||
παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την
|
||
κατανόηση της λειτουργίας τους και τον συνδυασμό τους για ένα επιθυμητό
|
||
αποτέλεσμα.
|
||
|
||
\item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}:
|
||
|
||
Το εργαλείο πρέπει να υποστηρίζει την επικοινωνία με τα νέφη μεγάλων
|
||
εταιρειών στον κλάδο της νεφο-υπολογιστικής, ώστε να είναι εύκολο για
|
||
να έναν χρήστη να παραμείνει στον πάροχο της επιλογής του.
|
||
|
||
\item \textbf{Ευκολία στην επέκταση}:
|
||
|
||
Το εργαλείο πρέπει να είναι εύκολο στην επέκτασή του, ώστε να μπορεί να
|
||
αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών.
|
||
|
||
\end{itemize}
|
||
|
||
\subsection{Εργαλεία δημιουργίας εικονικών μηχανών}
|
||
|
||
Τα εργαλεία με τα οποία θα γίνει σύγκριση περιγράφονται στην συνέχεια ως εξής:
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Terraform}:
|
||
|
||
Το Terraform είναι ένα δημοφιλές εργαλείο ανοιχτού κώδικα που
|
||
αναπτύχθηκε από την εταιρεία HashiCorp. Αποτελεί ένα εργαλείο, κατά την
|
||
χρήση του οποίου ο χρήστης καθορίζει τα χαρακτηριστικά της υποδομής που
|
||
θέλει να δημιουργήσει σε ένα αρχείο που ακολουθεί συγκεκριμένη σύνταξη.
|
||
Αυτό το εντάσσει στην κατηγορία \textquote{υποδομή ως κώδικας
|
||
(Infrastructure as Code - IaC)} και χρησιμοποιείται για τον καθορισμό
|
||
των υποδομών που θα χρησιμοποιηθούν για την στέγαση εφαρμογών. Το
|
||
Terraform υποστηρίζει πολλούς παρόχους νέφους και επιτρέπει την
|
||
αυτοματοποίηση της διαδικασίας δημιουργίας υποδομών σε αυτούς. Ο τρόπος
|
||
λειτουργίας του είναι αρκετά απλός. Αφού ο χρήστης έχει δημιουργήσει το
|
||
αρχείο που περιγράφει την υποδομή, το εκτελεί για να γίνουν οι
|
||
απαραίτητες ενέργειες. Έπειτα ο χρήστης μπορεί να αποδεσμεύσει τους
|
||
πόρους που δημιουργήθηκαν όταν δεν τους χρειάζεται πλέον.
|
||
|
||
\clearpage
|
||
|
||
\item \textbf{Libcloud CLI} \footfullcite{libcloud-cli}:
|
||
|
||
Αποτελεί την δεύτερη τροποποιημένη έκδοση από ένα τρίτο πρόσωπο, ενός
|
||
προγράμματος που επιχειρούσε να επιτύχει την δημιουργία ενός εργαλείου
|
||
γραμμής εντολών που χρησιμοποιεί την βιβλιοθήκη libcloud για την
|
||
δημιουργία εικονικών μηχανών κατά μήκος διαφόρων παρόχων νέφους. Είναι
|
||
ένα εργαλείο γραμμής εντολών που απαιτεί αρχείο ρυθμίσεων μονάχα για
|
||
την αυθεντικοποίηση με τους παρόχους νέφους.
|
||
|
||
\end{itemize}
|
||
|
||
\subsection{Σύγκριση με το SecDep}
|
||
|
||
Σχετικά με τα κριτήρια που έχουν οριστεί για την σύγκριση με εργαλεία που ως
|
||
κύριο στόχο έχουν την δημιουργία εικονικών μηχανών, το εργαλείο που προτείνει η
|
||
διπλωματική εργασία παρέχει όλα τα απαραίτητα χαρακτηριστικά.
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Σύγκριση με Terraform}:
|
||
|
||
Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε
|
||
αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά
|
||
λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην
|
||
χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των
|
||
μεγάλων παρόχων. Παρ' όλα αυτά δεν αποτελεί εργαλείο που μπορεί να
|
||
επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές.
|
||
|
||
\item \textbf{Σύγκριση με Libcloud CLI}:
|
||
|
||
Το δεύτερο πιο πρόσφατο εργαλείο που κάνει χρήση της βιβλιοθήκης
|
||
libcloud μετά από αυτό που προτείνει η διπλωματική εργασία. Είναι
|
||
αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον υποστηρίζει
|
||
μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή επιλογή
|
||
γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του αλλά έχει να
|
||
ανανεωθεί από το 2018.
|
||
|
||
\end{itemize}
|
||
|
||
Ο χρήστης δύναται κατά την χρήση του SecDep να επιλέξει τις ενέργειες και τα
|
||
χαρακτηριστικά που επιθυμεί για την εικονική μηχανή του. Όλες οι παράμετροι
|
||
είναι εύκολα κατανοητές και συνδυάζονται μεταξύ τους για να επιτευχθεί το
|
||
επιθυμητό αποτέλεσμα. Υποστηρίζει όλους τους δημοφιλείς παρόχους νέφους και
|
||
όλες τις καλές πρακτικές ενός εργαλείου γραμμής εντολών όπως ο έλεγχος
|
||
σφαλμάτων κατά την εισαγωγή παραμέτρων. Επιπλέον, μπορεί εύκολα να επεκταθεί η
|
||
χρήση του, είτε εισάγοντας έτοιμες εντολές σε αρχεία bash είτε προσθέτοντας
|
||
νέες ενέργειες στον κώδικά του αφού πρόκειται για ένα αρχείο python.
|
||
|
||
\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 και ο
|
||
τρόπος λειτουργίας του είναι η εκτέλεσή του ως χρήστης με διαχειριστικά
|
||
δικαιώματα στο σύστημα.
|
||
|
||
\clearpage
|
||
|
||
\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} είναι ικανοποιητικές, θα μπορούσαν εύκολα να
|
||
επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αυτό το ένα εκτελέσιμο,
|
||
παράγει κατά την εκτέλεσή του δύο ακόμα, τα οποία θα εκτελούνται περιοδικά με
|
||
σκοπό την αυτόματη ενημέρωση του συστήματος και το κλείσιμο αχρησιμοποίητων
|
||
θυρών.
|
||
|
||
\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 προσφέρει μια ολοκληρωμένη λύση, η οποία εκτελεί όλα τα παραπάνω βήματα
|
||
δίχως την ανάγκη αλληλεπίδρασης ή περαιτέρω ρυθμίσεων από τον χρήστη.
|