\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 παρέχει ένα σύνολο δυνατοτήτων που δεν προσφέρονται από κανένα άλλο
αυτοτελές εργαλείο και επιτυγχάνει τον σκοπό του με ευκολία και
αποτελεσματικότητα. Για την απόκτηση ίδιου επιπέδου λειτουργιών και
αποτελεσμάτων, θα απαιτούνταν η εκτέλεση και η τροποποίηση πολλών ξεχωριστών
εργαλείων. Επομένως, μπορεί να θεωρηθεί πως είναι ένα πιο ολοκληρωμένο εργαλείο
που όμοιό του δεν υπάρχει ακόμα διαθέσιμο.
