591 lines
40 KiB
TeX
591 lines
40 KiB
TeX
\chapter{Σχετικές Εργασίες} \label{relevantWork}
|
||
|
||
\noindent Με την πάροδο των χρόνων και τη ραγδαία αύξηση ενδιαφέροντος προς τον
|
||
κλάδο της υπολογιστικής νέφους, άρχισε να γίνεται όλο και πιο επιτακτική η
|
||
ανάγκη για αυτοματοποιημένο στήσιμο και προστασία των υποδομών των
|
||
επιχειρήσεων. Η χρήση τεχνολογιών εικονικοποίησης και η άνοδος των υπηρεσιών
|
||
IaaS, έχει ελαφρύνει τον φόρτο εργασίας όσον αφορά το στήσιμο των υποδομών
|
||
αυτών, αφού πλέον υπάρχουν πολλά εργαλεία στα οποία γίνεται καθορισμός τους.
|
||
Πέραν από εργαλεία στα οποία δηλώνονται οι προδιαγραφές μιας εικονικής μηχανής
|
||
σε πραγματικό χρόνο με την χρήση παραμέτρων, υπάρχουν και άλλα που ανήκουν στην
|
||
οικογένεια εργαλείων IaC (Infrastructure as Code - \emph{Υποδομή ως Κώδικας}).
|
||
Σε αυτού του είδους τα εργαλεία, όλα τα χαρακτηριστικά μιας εικονικής μηχανής
|
||
δηλώνονται σε ένα αρχείο κειμένου και με βάση αυτό, ξεκινάει η διαδικασία
|
||
δημιουργίας τους. Η αυτοματοποίηση της ασφάλισης αυτών των εικονικών μηχανών
|
||
όμως, είναι ακόμα σε πρώιμο στάδιο. Οι περισσότερες υπηρεσίες που διατίθενται
|
||
στους χρήστες κάνουν χρήση τεχνολογιών εικονικοποίησης έμμεσα από τον πάροχο
|
||
νέφους που χρησιμοποιούν και τεχνολογίες δοχείων άμεσα από επιλογή τους λόγω
|
||
της υπεροχής που προσφέρουν στη διαχείριση και τη διασφάλιση των εφαρμογών
|
||
τους. Όλες οι υπηρεσίες όμως, είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε
|
||
ληφθούν τα απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα
|
||
συστήματά τους.
|
||
|
||
Η παρούσα εργασία έχει ως στόχο την ανάπτυξη ενός εργαλείου που επιτυγχάνει την
|
||
αυτοματοποίηση τριών τομέων. Την επικοινωνία με παρόχους νέφους για την αίτηση
|
||
διάθεσης υπολογιστικών πόρων, την ασφάλιση των πόρων αυτών και τέλος, την
|
||
εγκατάσταση, ασφάλιση και χρήση του Docker για τη διάθεση εφαρμογών που
|
||
βρίσκονται στο Docker Hub, δηλ. το επίσημο αποθετήριο εικόνων δοχείων του
|
||
Docker. Στην ενότητα αυτή θα γίνει αναφορά σε εργαλεία που έχουν αναπτυχθεί για
|
||
έναν ή παραπάνω από αυτούς τους τρεις τομείς και θα πραγματοποιηθεί σύγκρισή
|
||
τους ανάλογα με τον τρόπο λειτουργίας τους και τις δυνατότητες που παρέχουν.
|
||
|
||
\section{Αυτοματοποίηση δημιουργίας εικονικών μηχανών}
|
||
|
||
Σε σχέση με τα εργαλεία αυτοματοποίησης δημιουργίας εικονικών μηχανών, τα
|
||
κριτήρια που θα ληφθούν υπόψιν για την σύγκριση με το εργαλείο που προτείνει η
|
||
διπλωματική εργασία είναι τα εξής:
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Ευελιξία κατά την χρήση}:
|
||
|
||
Το εργαλείο πρέπει να μπορεί να προσαρμόζεται στις ανάγκες του χρήστη
|
||
όταν αυτός χρειάζεται να πραγματοποιήσει ορισμένες παραμετροποιήσεις
|
||
κατά την χρήση του.
|
||
|
||
\item \textbf{Ευκολία κατά την χρήση}:
|
||
|
||
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη
|
||
που έχει χρησιμοποιήσει στο παρελθόν εργαλεία γραμμής εντολών. Οι
|
||
παράμετροί του πρέπει να ακολουθούν ένα μοτίβο που θα διευκολύνει την
|
||
κατανόηση της σημασιολογίας τους και θα επιτρέπει τον συνδυασμό τους
|
||
για ένα επιθυμητό αποτέλεσμα.
|
||
|
||
\item \textbf{Υποστήριξη μεγάλων ονομάτων στον κλάδο}:
|
||
|
||
Το εργαλείο πρέπει να υποστηρίζει την επικοινωνία με τα νέφη μεγάλων
|
||
εταιρειών στον κλάδο της νεφο-υπολογιστικής, τα οποία κατέχουν μεγάλο
|
||
μερίδιο της σχετικής αγοράς, ώστε να είναι εύκολο για να έναν χρήστη να
|
||
παραμείνει στον πάροχο της επιλογής του.
|
||
|
||
\item \textbf{Ευκολία στην επέκταση}:
|
||
|
||
Το εργαλείο πρέπει να είναι εύκολο στην επέκτασή του, ώστε να μπορεί να
|
||
αυτοματοποιηθεί περισσότερο η διαδικασία δημιουργίας εικονικών μηχανών.
|
||
|
||
\end{itemize}
|
||
|
||
\subsection{Εργαλεία δημιουργίας εικονικών μηχανών}
|
||
|
||
Τα εργαλεία με τα οποία θα γίνει σύγκριση στον τομέα δημιουργίας εικονικών
|
||
μηχανών, περιγράφονται στην συνέχεια ως εξής:
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Terraform}:
|
||
|
||
Το Terraform είναι ένα δημοφιλές εργαλείο ανοιχτού κώδικα που
|
||
αναπτύχθηκε από την εταιρεία HashiCorp. Αποτελεί ένα εργαλείο, κατά την
|
||
χρήση, του οποίου ο χρήστης καθορίζει τα χαρακτηριστικά της υποδομής
|
||
που θέλει να δημιουργήσει σε ένα αρχείο που ακολουθεί συγκεκριμένη
|
||
σύνταξη. Αυτό το χαρακτηριστικό, εντάσσει το Terraform στην κατηγορία
|
||
εργαλείων \textquote{υποδομή ως κώδικας (Infrastructure as Code - IaC)}
|
||
και χρησιμοποιείται για τον καθορισμό των υποδομών που θα
|
||
χρησιμοποιηθούν για την στέγαση εφαρμογών. Το Terraform υποστηρίζει
|
||
πολλούς παρόχους νέφους και επιτρέπει την αυτοματοποίηση της
|
||
διαδικασίας δημιουργίας υποδομών σε αυτούς. Ο τρόπος λειτουργίας του
|
||
είναι αρκετά απλός. Αφού ο χρήστης έχει δημιουργήσει το αρχείο που
|
||
περιγράφει την υποδομή, το εκτελεί για να γίνουν οι απαραίτητες
|
||
ενέργειες. Έπειτα, δημιουργούνται οι εικονικές μηχανές που
|
||
περιγράφονται στο αρχείο. Ο χρήστης μπορεί να αποδεσμεύσει τους πόρους
|
||
που δημιουργήθηκαν όταν δεν τους χρειάζεται πλέον και η διαδικασία της
|
||
αποδέσμευσης, είναι όσο απλή όσο και η δημιουργία τους.
|
||
|
||
\item \textbf{Libcloud CLI} \footfullcite{libcloud-cli}:
|
||
|
||
Το Libcloud CLI, αποτελεί την δεύτερη τροποποιημένη έκδοση από ένα
|
||
τρίτο πρόσωπο, ενός προγράμματος που επιχειρούσε να επιτύχει την
|
||
ανάπτυξη ενός εργαλείου γραμμής εντολών που χρησιμοποιεί την βιβλιοθήκη
|
||
libcloud για την δημιουργία εικονικών μηχανών κατά μήκος διαφόρων
|
||
παρόχων νέφους. Είναι ένα εργαλείο γραμμής εντολών που απαιτεί αρχείο
|
||
ρυθμίσεων μονάχα για την αυθεντικοποίηση με τους παρόχους νέφους.
|
||
|
||
\end{itemize}
|
||
|
||
\subsection{Σύγκριση με το SecDep}
|
||
|
||
Σχετικά με τα κριτήρια που έχουν οριστεί για την σύγκριση με εργαλεία που ως
|
||
κύριο στόχο έχουν την δημιουργία εικονικών μηχανών, το εργαλείο που προτείνει η
|
||
διπλωματική εργασία παρέχει όλα τα απαραίτητα χαρακτηριστικά.
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Σύγκριση με Terraform}:
|
||
|
||
Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του, ενώ κάθε
|
||
αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά
|
||
λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην
|
||
χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των
|
||
μεγάλων παρόχων. Παρ' όλα αυτά δεν αποτελεί εργαλείο που μπορεί να
|
||
επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές.
|
||
|
||
\item \textbf{Σύγκριση με Libcloud CLI}:
|
||
|
||
Είναι αρκετά ευέλικτο και εύκολο στην χρήση, παρ' όλα αυτά πλέον
|
||
υποστηρίζει μονάχα έναν πάροχο νέφους, ο οποίος δεν αποτελεί δημοφιλή
|
||
επιλογή γενικότερα. Θα μπορούσε να επεκταθεί η λειτουργικότητά του,
|
||
αλλά έχει να ανανεωθεί από το 2018.
|
||
|
||
\end{itemize}
|
||
|
||
Ο χρήστης δύναται κατά την χρήση του SecDep (μέσω της εκτέλεσης του secdep.py)
|
||
να επιλέξει τις ενέργειες και τα χαρακτηριστικά που επιθυμεί για την εικονική
|
||
μηχανή του. Όλες οι παράμετροι είναι εύκολα κατανοητές και συνδυάζονται μεταξύ
|
||
τους για να επιτευχθεί το επιθυμητό αποτέλεσμα. Υποστηρίζει όλους τους
|
||
δημοφιλείς παρόχους νέφους και όλες τις καλές πρακτικές ενός εργαλείου γραμμής
|
||
εντολών, όπως ο έλεγχος σφαλμάτων κατά την εισαγωγή παραμέτρων. Επιπλέον,
|
||
μπορεί εύκολα να επεκταθεί η χρήση του, είτε εισάγοντας έτοιμες εντολές σε
|
||
αρχεία bash είτε προσθέτοντας νέες ενέργειες στον κώδικά του, αφού πρόκειται
|
||
για ένα αρχείο python.
|
||
|
||
\begin{savenotes} % by the package footnote because footfullcite did not work inside a tabular
|
||
\selectfont
|
||
\begin{table}[!ht]
|
||
\caption{Σύγκριση εργαλείων δημιουργίας εικονικών μηχανών}
|
||
\renewcommand{\arraystretch}{1.5}
|
||
\centering
|
||
\newcolumntype{C}{>{\centering\arraybackslash}m{3.5cm}}
|
||
\textgreek{\begin{tabular}{||C|C|C|C||}
|
||
\hline
|
||
|
||
Κριτήρια & Terraform & Libcloud CLI & SecDep \\ [0.5ex]
|
||
|
||
\hline\hline
|
||
|
||
Ευελιξία κατά την χρήση &
|
||
|
||
Όλες οι προδιαγραφές δηλώνονται σε αρχείο κειμένου. &
|
||
|
||
Οι παράμετροι επιλέγονται κατά την δημιουργία της εντολής. &
|
||
|
||
Οι παράμετροι επιλέγονται κατά την δημιουργία της εντολής. \\
|
||
|
||
\hline
|
||
|
||
Ευκολία χρήσης &
|
||
|
||
Κάθε αλλαγή απαιτεί τροποποίηση του αρχείου προδιαγραφών. &
|
||
|
||
Οι παράμετροι είναι εύκολες στην κατανόηση και την χρήση. &
|
||
|
||
Οι παράμετροι είναι εύκολες στην κατανόηση και την χρήση. \\
|
||
|
||
\hline
|
||
|
||
Εύρος υποστήριξης παρόχων &
|
||
|
||
Όλοι οι μεγάλοι και μικροί πάροχοι υποστηρίζονται. &
|
||
|
||
Μονάχα ένας πάροχος υποστηρίζεται. &
|
||
|
||
Υποστηρίζονται όλοι οι μεγάλοι πάροχοι. \\
|
||
|
||
\hline
|
||
|
||
Επεκτασιμότητα &
|
||
|
||
Λόγω της αρχιτεκτονικής του είναι δυσκολότερη η επέκτασή του. &
|
||
|
||
Επεκτείνεται εύκολα με τροποποίηση του εκτελέσιμου αρχείου. &
|
||
|
||
Επεκτείνεται εύκολα με τροποποίηση του εκτελέσιμου αρχείου. \\
|
||
|
||
\hline
|
||
\end{tabular}}
|
||
\label{table:vmCreationTools}
|
||
\renewcommand{\arraystretch}{1}
|
||
\end{table}
|
||
\end{savenotes}
|
||
|
||
\section{Αυτοματοποίηση σκλήρυνσης εικονικών μηχανών}
|
||
|
||
Τα κριτήρια που θα ληφθούν υπόψιν για εργαλεία αυτοματοποίησης σκλήρυνσης
|
||
εικονικών μηχανών είναι τα παρακάτω:
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Υποστήριξη πολλών διανομών}:
|
||
|
||
Το εργαλείο πρέπει να υποστηρίζει διάφορες διανομές Linux και να είναι
|
||
αρκετά ευέλικτο ώστε να μπορεί να ξεχωρίσει την διανομή στην οποία
|
||
εκτελείται.
|
||
|
||
\item \textbf{Ευκολία κατά την χρήση}:
|
||
|
||
Το εργαλείο πρέπει να μπορεί να χρησιμοποιηθεί εύκολα από έναν χρήστη.
|
||
Ιδανικά, να αρκεί η εκτέλεσή του σε μια εικονική μηχανή χωρίς την
|
||
ανάγκη εγκατάστασης εξαρτήσεων.
|
||
|
||
\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}:
|
||
|
||
Το nixarmor, αποτελεί και αυτό ένα εργαλείο ανοιχτού κώδικα, το οποίο
|
||
στεγάζεται στο GitHub και αναπτύχθηκε από τον Emir Ozer. Περιέχει
|
||
διαφορετικά εκτελέσιμα αρχεία για την σκλήρυνση διάφορων διανομών
|
||
Linux, τα οποία μπορούν να εκτελεστούν ως αυτόνομα προγράμματα από τον
|
||
χρήστη.
|
||
|
||
\end{itemize}
|
||
|
||
\subsection{Σύγκριση με τον τομέα σκλήρυνσης VM του harden}
|
||
|
||
Σχετικά με τα δηλωθέντα κριτήρια, το SecDep (μέσω του harden) ικανοποιεί όλους
|
||
τους παραπάνω στόχους.
|
||
|
||
\begin{itemize}
|
||
|
||
\clearpage
|
||
|
||
\item \textbf{Σύγκριση με JShielder}:
|
||
|
||
Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος
|
||
και η ευκολία στην χρήση του το καθιστά ένα εργαλείο που μπορεί να
|
||
χρησιμοποιηθεί από έναν χρήστη με μικρή εμπειρία στον κλάδο. Παρ' όλα
|
||
αυτά, δεν υποστηρίζει πολλές διανομές και οι εκδόσεις των διανομών που
|
||
υποστηρίζονται μέσω αυτού, είναι αρκετό καιρό ξεπερασμένες. Θα μπορούσε
|
||
να βελτιωθεί με μια ανανέωση του πηγαίου του κώδικα αλλά η ανάπτυξή του
|
||
φαίνεται να έχει σταματήσει το 2019.
|
||
|
||
\item \textbf{Σύγκριση με το nixarmor}:
|
||
|
||
Σε αντίθεση με το JShielder, το nixarmor, για να χρησιμοποιηθεί με τον
|
||
ίδιο τρόπο που χρησιμοποιούνται τα υπόλοιπα εργαλεία, θα πρέπει να
|
||
επεκταθεί με την προσθήκη κώδικα που να του επιτρέπει να ξεχωρίζει ποιο
|
||
είναι το κατάλληλο εκτελέσιμο για την κάθε διανομή. Αν αγνοήσουμε το
|
||
μειονέκτημα αυτό, μπορούμε να χαρακτηρίσουμε τη χρήση του εύκολη για
|
||
χρήστες που έχουν την εμπειρία να διακρίνουν με κάποιο τρόπο τη
|
||
τρέχουσα διανομή και άρα είναι σε θέση να επιλέξουν και να εκτελέσουν
|
||
χειροκίνητα ένα από τα εκτελέσιμα αρχεία που το nixarmor περιέχει. Η
|
||
σκλήρυνση που παρέχει καλύπτει πολλούς τομείς μιας διανομής και μπορούν
|
||
εύκολα να προστεθούν επιπλέον συναρτήσεις στον κώδικά του. Παρ' όλα
|
||
αυτά, η ανάπτυξή του έχει παύσει από το 2015 και οι υποστηριζόμενες
|
||
διανομές του έχουν περιοριστεί σε μονάχα 4.
|
||
|
||
\end{itemize}
|
||
|
||
Συγκριτικά με τα παραπάνω εργαλεία, το harden υποστηρίζει την ικανότητα
|
||
αναγνώρισης της διανομής στην οποία εκτελείται και μπορεί δυναμικά να
|
||
διαμορφώσει την συμπεριφορά του αναλόγως. Οι υποστηριζόμενες διανομές είναι 6
|
||
και οι λειτουργίες του, αν και σύμφωνα με τα αποτελέσματα του Κεφαλαίου
|
||
\ref{experimentationANDresults} είναι ικανοποιητικές, θα μπορούσαν εύκολα να
|
||
επεκταθούν με την προσθήκη νέων συναρτήσεων. Επιπλέον, αν και το harden
|
||
αποτελεί ένα εκτελέσιμο, παράγει κατά την εκτέλεσή του δύο ακόμα εκτελέσιμα, τα
|
||
οποία μπορούν να εκτελούνται περιοδικά με σκοπό την αυτόματη ενημέρωση του
|
||
συστήματος και το κλείσιμο αχρησιμοποίητων θυρών. Αυτό σημαίνει πως η σκλήρυνση
|
||
μπορεί να είναι διαρκής και όχι στατική, εκτελούμενη μόνο μια φορά.
|
||
|
||
\begin{savenotes} % by the package footnote because footfullcite did not work inside a tabular
|
||
\selectfont
|
||
\begin{table}[!ht]
|
||
\caption{Σύγκριση εργαλείων σκλήρυνσης εικονικών μηχανών}
|
||
\renewcommand{\arraystretch}{1.5}
|
||
\centering
|
||
\newcolumntype{C}{>{\centering\arraybackslash}m{3.5cm}}
|
||
\textgreek{\begin{tabular}{||C|C|C|C||}
|
||
\hline
|
||
|
||
Κριτήρια & JShielder & nixarmor & SecDep \\ [0.5ex]
|
||
|
||
\hline\hline
|
||
|
||
Εύρος υποστήριξης διανομών &
|
||
|
||
Υποστηρίζεται μια διανομή με δύο εκδόσεις. &
|
||
|
||
Υποστηρίζονται 4 διανομές. &
|
||
|
||
Υποστηρίζονται 6 διανομές με πολλαπλές εκδόσεις τους. \\
|
||
|
||
\hline
|
||
|
||
Ευκολία χρήσης &
|
||
|
||
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. &
|
||
|
||
Αρκεί η εκτέλεση ενός εκτελέσιμου αρχείου του με διαχειριστικά δικαιώματα. &
|
||
|
||
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. \\
|
||
|
||
\hline
|
||
|
||
Εύρος σκλήρυνσης &
|
||
|
||
Παρέχεται ικανοποιητικό εύρος σκλήρυνσης, καλύπτοντας πολλούς τομείς. &
|
||
|
||
Το εύρος σκλήρυνσης του συστήματος είναι μικρότερο από τα άλλα εργαλεία. &
|
||
|
||
Η σκλήρυνση του συστήματος επιτυγχάνεται σε ικανοποιητικό βαθμό. \\
|
||
|
||
\hline
|
||
|
||
Υποστήριξη διαρκούς σκλήρυνσης &
|
||
|
||
Υποστηρίζεται η διαρκής ενημέρωση πακέτων. &
|
||
|
||
Υποστηρίζονται οι διαρκείς ενημερώσεις ασφαλείας σε μια διανομή. &
|
||
|
||
Υποστηρίζεται η δημιουργία δύο περιοδικά εκτελέσιμων αρχείων για την ενημέρωση
|
||
των πακέτων κάθε υποστηριζόμενης διανομής και το κλείσιμο των αχρησιμοποίητων
|
||
θυρών. \\
|
||
|
||
\hline
|
||
\end{tabular}}
|
||
\label{table:vmHardeningTools}
|
||
\renewcommand{\arraystretch}{1}
|
||
\end{table}
|
||
\end{savenotes}
|
||
|
||
\clearpage
|
||
|
||
\section{Αυτοματοποίηση εγκατάστασης/σκλήρυνσης του Docker}
|
||
|
||
Για τα εργαλεία αυτοματοποίησης της διαδικασίας εγκατάστασης/σκλήρυνσης του
|
||
Docker, τα κριτήρια που θα πρέπει να ικανοποιούνται είναι τα παρακάτω:
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Ευκολία κατά την χρήση}:
|
||
|
||
Ιδανικά, θα πρέπει να αρκεί η εκτέλεση του εργαλείου με διαχειριστικά
|
||
δικαιώματα, δίχως την ανάγκη περαιτέρω ενεργειών από τον χρήστη.
|
||
|
||
\item \textbf{Εύρος σκλήρυνσης}:
|
||
|
||
Αναμένεται η σκλήρυνση του Docker να επιτευχθεί σε ικανοποιητικό βαθμό,
|
||
πραγματοποιώντας τις απαραίτητες ρυθμίσεις στον δαίμονά του.
|
||
|
||
\item \textbf{Υποστήριξη διαρκούς σκλήρυνσης}:
|
||
|
||
Το εργαλείο πρέπει να πραγματοποιεί βήματα που θα διασφαλίσουν την
|
||
διαρκή σκλήρυνση του Docker ή/και των δοχείων του.
|
||
|
||
\item \textbf{Επεκτασιμότητα}:
|
||
|
||
Θα πρέπει να μπορεί ένας έμπειρος χρήστης να προσθέσει νέες λειτουργίες
|
||
με σκοπό την επέκταση των δυνατοτήτων του.
|
||
|
||
\end{itemize}
|
||
|
||
\subsection{Εργαλεία εγκατάστασης/σκλήρυνσης του Docker}
|
||
|
||
Μια από τις λειτουργίες του εκτελέσιμου harden πέρα από την σκλήρυνση του
|
||
συστήματος, είναι και η αυτόματη εγκατάσταση και σκλήρυνση του Docker. Τα
|
||
εργαλεία που αποσκοπούν στην αυτοματοποίηση της διαδικασίας αυτής, τα οποία θα
|
||
συγκριθούν με το harden σε αυτόν τον τομέα, είναι τα παρακάτω:
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{docker-rootless-setup} \footfullcite{docker-rootless-setup}:
|
||
|
||
Το docker-rootless-setup είναι ένα εργαλείο ανοιχτού κώδικα, το οποίο
|
||
στεγάζεται στο GitHub. Θεωρείται πως ανήκει στην κατηγορία εργαλείων
|
||
σκλήρυνσης του Docker διότι αποσκοπεί στην αυτοματοποίηση της
|
||
εγκατάστασης του Rootless Docker. Το αποτέλεσμα μετά την εγκατάστασή
|
||
αυτού, είναι να μπορεί πλέον το Docker να λειτουργεί χωρίς την ανάγκη
|
||
διαχειριστικών δικαιωμάτων, αυξάνοντας έτσι την ασφάλεια του
|
||
συστήματος. Για την χρήση του αρκεί μονάχα η εκτέλεσή του στο σύστημα
|
||
που θέλουμε να εγκαταστήσουμε το Rootless Docker. Η επέκτασή του είναι
|
||
εύκολα εφικτή, μιας και πρόκειται για ένα εκτελέσιμο αρχείο bash.
|
||
|
||
\item \textbf{docksec} \footfullcite{docksec}:
|
||
|
||
Το docksec είναι ένα ακόμα εργαλείο ανοιχτού κώδικα, το οποίο επιχειρεί
|
||
να ασφαλίσει τον δαίμονα του Docker. Ο τρόπος με τον οποίο γίνεται
|
||
αυτό, είναι με την διασφάλιση ορισμένων ενεργειών που συστήνει το
|
||
docker-bench-security \footfullcite{docker-bench-security}. Το
|
||
docker-bench-security είναι ένα εργαλείο που στεγάζεται στο GitHub υπό
|
||
τον επίσημο λογαριασμό της ομάδας ανάπτυξης του Docker. Χρησιμοποιείται
|
||
για τον έλεγχο των ρυθμίσεων ασφαλείας μιας εγκατάστασης του Docker και
|
||
παρέχει οδηγίες για την βελτίωσή τους. Το docksec πραγματοποιεί
|
||
παρόμοιους ελέγχους για την ύπαρξη ορισμένων ρυθμίσεων που προτείνει το
|
||
docker-bench-security και προσφέρει την δυνατότητα αυτόματης εφαρμογής
|
||
τους. Αρκεί να εκτελεστεί στο σύστημα που είναι εγκατεστημένο το
|
||
Docker, ενώ η επέκταση των δυνατοτήτων του πραγματοποιείται το ίδιο
|
||
εύκολα με τα υπόλοιπα εργαλεία.
|
||
|
||
\end{itemize}
|
||
|
||
\subsection{Σύγκριση με τον τομέα σκλήρυνσης του Docker μέσω του harden}
|
||
|
||
Σε σχέση με τα κριτήρια που πρέπει να ικανοποιούνται, το harden μπορεί και πάλι
|
||
να τα καλύψει όλα.
|
||
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Σύγκριση με docker-rootless-setup}:
|
||
|
||
Όπως το docker-rootless-setup, έτσι και το harden εκτελείται στο
|
||
σύστημα για το οποίο θέλει να πραγματοποιήσει την εγκατάσταση/σκλήρυνση
|
||
του Docker. Αυτό που συμβαίνει και στις δύο περιπτώσεις είναι η
|
||
εγκατάσταση μιας τροποποιημένης έκδοσης του Docker, η οποία δύναται να
|
||
εκτελεστεί από οποιονδήποτε χρήστη του συστήματος, δίχως την ανάγκη
|
||
διαχειριστικών δικαιωμάτων. Ωστόσο, το harden υποστηρίζει περισσότερες
|
||
διανομές από το docker-rootless-setup (που περιορίζεται μόνο σε
|
||
διανομές βασισμένες στο Debian) και παρέχει περισσότερες δυνατότητες
|
||
σκλήρυνσης. Πέρα από την εγκατάσταση του Rootless Docker, με το harden
|
||
πραγματοποιείται αντικατάσταση του αρχικού container runtime (runC) με
|
||
το runsc, από το gVisor. Αυτό, αναπτύχθηκε από την Google και αποτελεί
|
||
μια ασφαλέστερη επιλογή από το αρχικό (runC), διότι περιορίζει τις
|
||
κλήσεις του συστήματος (system calls) στις άκρως απαραίτητες για την
|
||
λειτουργία του Docker. Ο συνδυασμός αυτών των δύο βημάτων, όχι μόνο
|
||
περιορίζει την επιφάνεια επίθεσης σε περίπτωση απόδρασης από ένα
|
||
δοχείο, αλλά μειώνει και την πιθανότητα κάτι τέτοιο να συμβεί.
|
||
|
||
\item \textbf{Σύγκριση με docksec}:
|
||
|
||
Το docksec, ενώ επιτυγχάνει την σκλήρυνση του δαίμονα του Docker,
|
||
βασιζόμενο σε οδηγίες του docker-bench-security, περιορίζεται μονάχα σε
|
||
αυτό. Δεν πραγματοποιεί ούτε την εγκατάσταση του Rootless Docker, ούτε
|
||
την αντικατάσταση του runC με το runsc. Επιπλέον, δεν υποστηρίζει την
|
||
αυτόματη ενημέρωση των δοχείων που εκτελούνται στο σύστημα, όπως κάνει
|
||
το harden. Με την εκτέλεση του harden, πέρα από τα παραπάνω βήματα,
|
||
ρυθμίζεται ο δαίμονας του Docker ώστε να εκτελείται με μεγαλύτερη
|
||
ασφάλεια. Αυτό επιτυγχάνεται χρησιμοποιώντας παραμέτρους όπως
|
||
\textquote{no-new-privileges} για να μην μπορεί ένα δοχείο να λάβει
|
||
περισσότερα δικαιώματα στην συνέχεια της εκτέλεσής του, καθώς και
|
||
ενεργοποιώντας τις δυνατότητες του SELinux εάν αυτό υποστηρίζεται από
|
||
την εκάστοτε υποκείμενη διανομή του συστήματος. Τέλος, πραγματοποιείται
|
||
εγκατάσταση της υπηρεσίας σε μορφή δοχείου ονόματι
|
||
\textquote{watchtower}, η οποία έχει ως στόχο την αυτόματη ενημέρωση
|
||
των δοχείων που εκτελούνται στο σύστημα.
|
||
|
||
\end{itemize}
|
||
|
||
Επομένως, το harden παρέχει μια ολοκληρωμένη λύση για την εγκατάσταση και
|
||
σκλήρυνση του Docker, η οποία εκτελεί όλα τα παραπάνω βήματα δίχως την ανάγκη
|
||
αλληλεπίδρασης ή περαιτέρω ρυθμίσεων από τον χρήστη. Υποστηρίζει πολλές
|
||
διανομές για τις οποίες μπορεί να κατεβάσει τα απαραίτητα πακέτα για την
|
||
λειτουργία του Rootless Docker και πέρα από την εγκατάσταση αυτού, επιτυγχάνει
|
||
να σκληρύνει τον δαίμονα του Docker με κατάλληλες ρυθμίσεις και αντικατάσταση
|
||
του προκαθορισμένου container runtime.
|
||
|
||
\clearpage
|
||
|
||
\begin{savenotes} % by the package footnote because footfullcite did not work inside a tabular
|
||
\selectfont
|
||
\begin{table}[!ht]
|
||
\caption{Σύγκριση εργαλείων σκλήρυνσης του Docker}
|
||
\renewcommand{\arraystretch}{1.5}
|
||
\centering
|
||
\newcolumntype{C}{>{\centering\arraybackslash}m{3.5cm}}
|
||
\textgreek{\begin{tabular}{||C|C|C|C||}
|
||
\hline
|
||
|
||
Κριτήρια & docker-rootless-setup & docksec & SecDep \\ [0.5ex]
|
||
|
||
\hline\hline
|
||
|
||
Ευκολία χρήσης &
|
||
|
||
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. &
|
||
|
||
Αρκεί να εκτελεστεί με διαχειριστικά δικαιώματα. &
|
||
|
||
Αρκεί η εκτέλεσή του με διαχειριστικά δικαιώματα. \\
|
||
|
||
\hline
|
||
|
||
Εύρος σκλήρυνσης &
|
||
|
||
Περιορίζεται στην εγκατάσταση του Rootless Docker. &
|
||
|
||
Περιορίζεται στη σκλήρυνση του Docker μέσω καλύτερων ρυθμίσεων. &
|
||
|
||
Καταφέρνει να ρυθμίσει καλύτερα τον δαίμονα, να εγκαταστήσει το Rootless Docker
|
||
και να αντικαταστήσει το προκαθορισμένο container runtime με ένα ασφαλέστερο.
|
||
\\
|
||
|
||
\hline
|
||
|
||
Υποστήριξη διαρκούς σκλήρυνσης &
|
||
|
||
Δεν λαμβάνονται βήματα για την διασφάλιση διαρκούς σκλήρυνσης. &
|
||
|
||
Μετά την εκτέλεσή του δεν πραγματοποιεί παραπάνω βήματα. &
|
||
|
||
Πέρα από την σκλήρυνση του Docker, εγκαθιστά και το watchtower για να
|
||
διασφαλίσει πως τα δοχεία του συστήματος θα ενημερώνονται διαρκώς. \\
|
||
|
||
\hline
|
||
|
||
Επεκτασιμότητα &
|
||
|
||
Αρκεί η προσθήκη νέων λειτουργιών στο εκτελέσιμο αρχείο του. &
|
||
|
||
Αρκεί η προσθήκη νέων λειτουργιών στο εκτελέσιμο αρχείο του. &
|
||
|
||
Αρκεί η προσθήκη νέων λειτουργιών στο εκτελέσιμο αρχείο του. \\
|
||
|
||
\hline
|
||
\end{tabular}}
|
||
\label{table:dockerHardeningTools}
|
||
\renewcommand{\arraystretch}{1}
|
||
\end{table}
|
||
\end{savenotes}
|
||
|
||
\section{Συμπεράσματα συγκρίσεων}
|
||
|
||
Μετά από τις συγκρίσεις του SecDep με τα προαναφερθέντα εργαλεία, ακολουθώντας
|
||
τα κριτήρια που έχουν οριστεί για τον κύριο σκοπό του καθενός, μπορούμε να
|
||
συμπεράνουμε πως το SecDep όχι μόνο υπερτερεί σε σχέση με τα υπόλοιπα, αλλά
|
||
προσφέρει μια ολοκληρωμένη λύση με τις δυνατότητες όλων των παραπάνω. Παρέχει
|
||
δηλαδή, λειτουργίες αυτοματοποίησης για την δημιουργία και σκλήρυνση ενός
|
||
συστήματος νέφους, ειδικά ρυθμισμένο για την ασφαλή εκτέλεση εφαρμογών που
|
||
προσφέρονται σε μορφή δοχείων.
|
||
|
||
Στον τομέα της αυτοματοποίησης δημιουργίας εικονικών μηχανών, με την χρήση της
|
||
βιβλιοθήκης libcloud, προσφέρεται μια πληθώρα επιλογών για την χρήση νεφών όλων
|
||
των μεγάλων παρόχων νέφους. Υποστηρίζονται πολλές διανομές, διάφορα μεγέθη
|
||
εικονικών μηχανών και αρκετές τοποθεσίες. Επιπροσθέτως, ακολουθούνται όλες οι
|
||
ορθές πρακτικές εργαλείων γραμμής εντολών, όπως ο έλεγχος εγκυρότητας των
|
||
παραμέτρων και η ευκολία στην κατανόηση της σημασιολογίας και της χρήσης τους.
|
||
Τέλος, επιτρέπει και την αποδοτική διαχείριση όλων των εικονικών μηχανών που
|
||
δημιουργήθηκαν μέσω αυτού, κατά μήκος όλων των παρόχων νέφους που υποστηρίζει.
|
||
|
||
Σχετικά με την σκλήρυνση των εικονικών μηχανών, το SecDep υποστηρίζει πολλές
|
||
διανομές, σκληραίνει τα συστήματα σε ικανοποιητικό βαθμό και επιπρόσθετα,
|
||
προσφέρει μηχανισμούς για την υποστήριξη διαρκούς σκλήρυνσης.
|
||
|
||
Για την σκλήρυνση του Docker, δεδομένου ότι πολλές από τις τεχνολογίες που
|
||
χρησιμοποιεί είναι σχετικά νέες, δεν υπάρχουν στην αγορά εργαλεία που να έχουν
|
||
ως κύριο στόχο την αυτόματη εφαρμογή τους. Τα περισσότερα επικεντρώνονται στην
|
||
σκλήρυνση των δοχείων και όχι του δαίμονα, ενώ όσα επιχειρούν να σκληρύνουν τον
|
||
δαίμονα έχουν να ανανεωθούν πολύ προτού έρθουν στο προσκήνιο οι τεχνολογίες που
|
||
χρησιμοποιεί το harden.
|
||
|
||
Το SecDep παρέχει ένα σύνολο δυνατοτήτων που δεν προσφέρονται από κανένα άλλο
|
||
αυτοτελές εργαλείο και επιτυγχάνει τον σκοπό του με ευκολία και
|
||
αποτελεσματικότητα. Για την απόκτηση ίδιου επιπέδου λειτουργιών και
|
||
αποτελεσμάτων, θα απαιτούνταν η εκτέλεση και η τροποποίηση πολλών ξεχωριστών
|
||
εργαλείων. Επομένως, μπορεί να θεωρηθεί πως είναι ένα πιο ολοκληρωμένο εργαλείο
|
||
που όμοιό του δεν υπάρχει ακόμα διαθέσιμο.
|