\chapter{Υπόβαθρο} \label{background}

\section{Ασφάλεια στο \textlatin{Cloud Computing} Στις Μέρες Μας} \label{cloudComputingSecurityNowadays}

Πλέον όλοι γνωρίζουμε την σημασία της ασφάλειας.

\subsection{\textlatin{Attack Vector Mitigation}} \label{attackVectorMitigation}

Με βάση το μοντέλο που περιγράφει το \cite{reshetova2014security} όπως αναφέρεται στο \cite{bui2015analysis} όπου έχουμε ένα μηχάνημα στο οποίο εκτελούνται διάφορα δοχεία, από τα οποία ένα υποσύνολο έχει τεθεί υπό τον έλεγχο ενός κακόβουλου χρήστη. Για να προστατευτούμε από επιθέσεις, όπως άρνηση υπηρεσίας και κλιμάκωση δικαιωμάτων πρέπει να πραγματοποιηθεί απομόνωση των
διεργασιών, αρχείων, της συσκευής, του \textlatin{IPC}, δικτύου και τέλος, των πόρων.

\pagebreak

Αυτά επιτυγχάνονται κατά σειρά με την χρήση \textlatin{namespaces} όπου οριοθετείται η ορατότητα των διεργασιών ανάμεσα στα δοχεία και το σύστημα όπως επίσης, τα δικαιώματά τους. Χρήση \textlatin{mount namespaces}, με τα οποία οι διεργασίες κάθε δοχείου βλέπουν διαφορετικά το αρχείο του συστήματος. Όλες οι δράσεις \textlatin{mount}, που γίνονται στο εκάστοτε δοχείο, περιορίζονται σε αυτό όπως επίσης, οριοθετούνται τα δικαιώματα των αρχείων του πυρήνα σε μονάχα ανάγνωσης και αποτρέπονται περαιτέρω \textlatin{remountings}. Ο περιορισμός συσκευών επιτυγχάνεται με το χαρακτηριστικό \textlatin{Device Whitelist Controller} των \textlatin{cgroups} που αναφέρεται στο \cite{deviceWhitelistController} με την βοήθεια του οποίου περιορίζεται το σύνολο τον συσκευών στις οποίες έχει πρόσβαση ένα δοχείο και αποτρέπει αυτό από το να δημιουργήσει καινούριες αναπαραστάσεις συσκευών. Επιπροσθέτως επειδή τα \textlatin{mount} γίνονται με την χρήση του \textlatin{nodev}, στην περίπτωση που μια αναπαράσταση συσκευής είχε δημιουργηθεί σε προηγούμενο χρόνο στο στιγμιότυπου που χρησιμοποιήθηκε για να κατασκευαστεί το δοχείο, οι διεργασίες του δεν δύνανται να την χρησιμοποιήσουν για να επικοινωνήσουν με τον πυρήνα. Επιπλέον επειδή η προεπιλεγμένη συνθήκη είναι να μην δίνονται εκτεταμένα προνόμια σε ένα δοχείο, δεν υπάρχει πρόσβαση σε καμία συσκευή παρά μόνο εάν γίνει εκτέλεση δοχείου ως χρήστης με ανώτατα δικαιώματα όπου υπάρχει πρόσβαση σε όλες. Ο περιορισμός \textlatin{IPC}, δηλαδή της επικοινωνίας των διεργασιών μεταξύ τους, επιτυγχάνεται με την χρήση \textlatin{IPC namespaces} που καθιστούν δυνατή την δημιουργία ξεχωριστών συνόλων αυτών, οι διεργασίες των οποίων επικοινωνούν μόνο μεταξύ τους. Μία από τις σημαντικότερες απομονώσεις είναι αυτή του δικτύου. Χωρίς δικτυακή απομόνωση υπάρχει κίνδυνος επιθέσεων όπως \textlatin{Man in the middle}, \textlatin{ARP, DNS spoofing} και άλλες. Για να απομονωθεί η κίνηση δικτύου που λαμβάνει μέρος σε ένα δοχείο από αυτήν των υπολοίπων και του συστήματος πρέπει να γίνει χρήση των \textlatin{network namespaces}. Κάθε δοχείο θα έχει δικές του διευθύνσεις \textlatin{IP}, συσκευές και ό,τι χρειάζεται, προκειμένου να γίνεται αλληλεπίδραση μεταξύ των δοχείων μέσω την διεπαφή δικτύου του καθενός σαν να είναι εξωτερικές οντότητες. Τέλος, επιβάλλεται η οριοθέτηση των υπολογιστικών πόρων προκειμένου να αποφευχθεί μια επίθεση τύπου άρνησης υπηρεσίας όπου μια διεργασία ή ένα σύνολο αυτών προσπαθεί να καταναλώσει όλους τους πόρους του συστήματος. Με την βοήθεια των \textlatin{cgroup}, επιτυγχάνεται ο έλεγχος του ποσοστού πόρων όπως \textlatin{CPU}, μνήμη, και χωρητικότητα που μπορεί να έχει κάθε δοχείο στην διάθεση του.
