From 6a584b72e3b756420d9aa2e32cd54109f1f70774 Mon Sep 17 00:00:00 2001 From: konsthol Date: Thu, 11 Jan 2024 04:48:35 +0200 Subject: [PATCH] git + ipynb = :( --- Abbreviations/abbreviations.tex | 1 + Abstract/abstractenglish.tex | 67 ++++++++++++----------- Chapters/1.Introduction.tex | 54 +++++++++---------- Chapters/2.Background.tex | 87 +++++++++++++++--------------- Chapters/3.RelevantWork.tex | 36 ++++++------- Chapters/4.ProjectDevelopment.tex | 44 ++++++++------- Chapters/5.ProjectShowcase.tex | 57 +++++++++++++------- Chapters/6.Experimentation.tex | 43 +++++++-------- Chapters/7.Conclusions.tex | 17 +++--- Figures/secdep_logo.png | Bin 0 -> 150787 bytes 10 files changed, 213 insertions(+), 193 deletions(-) create mode 100644 Figures/secdep_logo.png diff --git a/Abbreviations/abbreviations.tex b/Abbreviations/abbreviations.tex index 119978c..949fa05 100644 --- a/Abbreviations/abbreviations.tex +++ b/Abbreviations/abbreviations.tex @@ -34,6 +34,7 @@ \textbf{Vuls} & \textbf{VUL}nerability \textbf{S}canner \\ \textbf{LUNAR} & \textbf{L}ockdown \textbf{UN}ix \textbf{A}uditing and \textbf{R}eporting \\ \textbf{CVE} & \textbf{C}ommon \textbf{V}ulnerabilities and \textbf{E}xposures \\ +\textbf{CVRF} & \textbf{C}ommon \textbf{V}ulnerability \textbf{R}eporting \textbf{F}ramework \\ \textbf{NVD} & \textbf{N}ational \textbf{V}ulnerability \textbf{D}atabase \\ \textbf{CVSS} & \textbf{C}ommon \textbf{V}ulnerability \textbf{S}coring \textbf{S}ystem \\ \textbf{CPE} & \textbf{C}ommon \textbf{P}latform \textbf{E}numeration \\ diff --git a/Abstract/abstractenglish.tex b/Abstract/abstractenglish.tex index 5fbc593..31b3cc6 100644 --- a/Abstract/abstractenglish.tex +++ b/Abstract/abstractenglish.tex @@ -4,26 +4,26 @@ \noindent Today, more and more people rely on IaaS services over traditional on-premise infrastructure to provide operational support to applications, -services and business processes. This is because in this way this way, the -costs of an organization or business are reduced as long as there is no need -expenditure/investment on the purchase of equipment and the operational costs -of using services IaaS is based on flexible billing models based on usage (of -infrastructure resources that offered). In addition, it is possible to scale -the offered remote infrastructure depending on the needs of the organisation -and the current workload of the services and applications to be supported. In -this way, the responsibility for and maintenance of the equipment to third -parties while at the same time introducing a new model of trust between the -user/organisation and the cloud provider. The increase interest by enterprises -in virtualisation technologies which are a key the foundation of IaaS services, -but also the rapid rise in popularity of technologies container technologies -such as Docker has in turn begun to drive the adoption of the architectural +services and business processes. This is because in this way, the costs of an +organization or business are reduced, since there is no need for an investment +on the purchase of equipment. Also, the operational costs of using IaaS +services is based on flexible billing models according to the usage (of the +offered infrastructure resources). In addition, it is possible to scale the +offered remote infrastructure, depending on the needs of the organization and +the current workload of the services and applications to be supported. In this +way, the responsibility for the equipment and its maintenance is transferred to +third parties, while at the same a new model of trust is introduced between the +user/organization and the cloud provider. The increased interest shown by +enterprises for virtualization technologies (which are a key foundation of IaaS +services) in conjunction with the rapid rise in popularity of container +technologies such as Docker, has in turn begun to drive the adoption of the microservices architecture for application development. An architecture based -on both on virtualization technologies for housing applications in cloud -infrastructures and container technologies for partitioning their functions, -providing a an appropriate level of performance and scalability -\footfullcite{awsMicroservices}. However, they remain directly addressable. -security issues that may affect the cloud itself and/or the technologies on -which it is based. +on virtualization technologies for hosting applications in cloud +infrastructures and container technologies for partitioning their functions and +thus, providing an appropriate level of performance and scalability +\footfullcite{awsMicroservices}. However, they remain vulnerable to security +issues that may affect the cloud itself and/or the technologies on which it is +based on. } @@ -31,21 +31,20 @@ which it is based. \textenglish{ -In this paper we will first analyse the security issues related to the cloud -and in particular those related to virtualization and container technologies. -Then, we will analyze how these 2 technologies can be used with more safety -security. But the purpose of the paper goes beyond that and moves to a -practical level, proposing the solution of a tool that can implement in this -way the proposed safe use of these technologies. In particular, this tool does -not not only can create virtual machines across multiple cloud providers but -also harden them in an automated manner. In addition, it is capable of -installing these virtual machines the Docker container machine, which it can -also harden. The main goal of the work is to make it easier for an organization -to install and configure in an automated manner a secure, distributed -environment (pro- host and operation) for the deployment and operation of a -microservices application. This automation lies in the correct configuration of -the tool, which does not require and does not require any special knowledge of -technical or security issues. infrastructure and operating systems. +In this paper we will first analyze the security issues related to the cloud +and in particular, those related to virtualization and container technologies. +Then, we will analyze how these 2 technologies can be used in a more secure +manner. However, the purpose of this paper goes beyond that and moves to a +practical level, proposing the solution of a tool that can implement the +proposed safe use of these technologies. In particular, this tool can not only +create virtual machines across multiple cloud providers but also harden them in +an automated manner. In addition, it is capable of installing on these virtual +machines the Docker container engine, which it can also harden. The main goal +of this work is to make it easier for an organization to install and configure +in an automated manner a secure, distributed environment for the deployment and +operation of a microservices application. This automation lies in the correct +configuration of the tool, which does not require any special knowledge of +technical or security issues in regard to infrastructure and operating systems. } diff --git a/Chapters/1.Introduction.tex b/Chapters/1.Introduction.tex index 3caba4c..fc2809d 100644 --- a/Chapters/1.Introduction.tex +++ b/Chapters/1.Introduction.tex @@ -79,7 +79,7 @@ SDKs (Software Development Kits)). Όταν επιλέξει ένας χρήστης να δημιουργήσει εικονικές μηχανές μέσω μιας από τις πλατφόρμες IaaS, προς διευκόλυνσή του η διαδικασία γίνεται και μέσω γραφικού περιβάλλοντος της μορφής Point and Click. Στις εικονικές μηχανές που -προσφέρονται τις περισσότερες φορές διατίθενται διάφορες διανομές λειτουργικού +προσφέρονται, τις περισσότερες φορές διατίθενται διάφορες διανομές λειτουργικού συστήματος Linux, οι οποίες ενδέχεται να έχουν εγκατεστημένα και ρυθμισμένα εκ των προτέρων διάφορα λογισμικά, όπως το σύστημα διαχείρισης βάσεων δεδομένων MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τρόπο, η διαδικασία @@ -245,7 +245,7 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ απομονωμένο από το υπόλοιπο σύστημα, αυτό επιτυγχάνεται με δύο διαφορετικούς τρόπους αφού οι εικονικές μηχανές και τα δοχεία χρησιμοποιούν διαφορετικού είδους εικονικοποίηση. Στην περίπτωση των δοχείων δεν έχουμε απομόνωση μηχανών -αλλά διεργασιών. Γεγονός που συμβάλει στην αποφυγή της επιβάρυνσης του +αλλά διεργασιών. Γεγονός που συμβάλλει στην αποφυγή της επιβάρυνσης του συστήματος που θα επιβάλλονταν από τις διεργασίες του υπερ-επόπτη και της καθυστέρησης που θα υπήρχε για την εκκίνηση ενός ολόκληρου λειτουργικού συστήματος. Επιπλέον, η μη χρήση τεχνολογιών εικονικοποίησης σε επίπεδο υλικού @@ -255,7 +255,7 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ Παρ' όλο που πολλές φορές τα δοχεία συγχέονται με τις εικονικές μηχανές, οι δύο αυτές έννοιες έχουν αρκετές διαφορές στην αρχιτεκτονική τους. Στην παραδοσιακή -εικονικοποίηση είτε αυτή γίνεται στις υπάρχουσες υποδομές μια επιχείρησης είτε +εικονικοποίηση είτε αυτή γίνεται στις υπάρχουσες υποδομές μιας επιχείρησης είτε σε ένα περιβάλλον νέφους, ένας υπερ-επόπτης πρέπει να χρησιμοποιηθεί για να εικονικοποιήσει φυσικό υλικό. Κάθε εικονική μηχανή έχει ένα δικό της λειτουργικό σύστημα και ένα εικονικό αντίγραφο του υλικού που απαιτεί για να @@ -298,7 +298,7 @@ MySQL και το διακομιστή ιστού Nginx. Με αυτό τον τ μπορεί να έχουν πολλαπλά στιγμιότυπα (δηλ. μεγάλο αριθμό δοχείων) ανά πάσα χρονική στιγμή, απαιτείται η χρήση μιας πλατφόρμας ενορχήστρωσης δοχείων για την αυτοματοποίηση της εγκατάστασης, εκτέλεσης και κλιμάκωσης της εφαρμογής -κατά μήκος πολλαπλών πόρων (δηλ. εικονικών ή φυσική μηχανών) όπως είναι το +κατά μήκος πολλαπλών πόρων (δηλ. εικονικών ή φυσικών μηχανών) όπως είναι το Kubernetes ή το Docker Swarm. Το μόνο μειονέκτημα της τεχνολογίας των δοχείων, το οποίο δεν επηρεάζει κατά @@ -321,7 +321,7 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το \subsection{Εργαλεία διαχείρισης δοχείων και έλευση του Docker} \label{containerManagement} Στις μέρες μας, η δημοτικότητα του Docker έχει συνταυτίσει του όρους Docker και -Container (δοχείο) αν και είναι διαφορετικοί. Παρόλα αυτά η ιδέα της +Container (δοχείο) αν και είναι διαφορετικοί. Παρόλα αυτά, η ιδέα της δημιουργίας απομονωμένων περιβαλλόντων εκτέλεσης λογισμικού υπήρχε προτού βγει το Docker στην αγορά. Ιστορικά, οι πρώτες τεχνολογίες περί δοχείων έκαναν την είσοδο τους από το 1979, όταν εισήχθη το chroot \footfullcite{chrootCommand} @@ -382,7 +382,7 @@ Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθε Οι μέθοδοι ανάπτυξης και παράδοσης εφαρμογών έχουν αλλάξει δραματικά τα τελευταία χρόνια. Από τις παραδοσιακές μεθόδους όπως το μοντέλο καταρράκτη -(waterfall) \footfullcite{waterfall} με βάση του οποίου υπήρχε ένα συγκεκριμένο +(waterfall) \footfullcite{waterfall} βάσει του οποίου υπήρχε ένα συγκεκριμένο αμετάβλητο σχέδιο που καλούνταν να ακολουθήσει μια ομάδα ανάπτυξης λογισμικού, έχουμε φτάσει σε μια εποχή όπου οι απαιτήσεις της αγοράς αλλάζουν συνεχώς, με αποτέλεσμα να υπάρχει ανάγκη για καινούριες μεθόδους που να ανταποκρίνονται @@ -403,14 +403,14 @@ Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθε Τα δοχεία αποτελούν ιδανική επιλογή για την εφαρμογή των παραπάνω μεθοδολογιών και πρακτικών καθώς επιτρέπουν το γρήγορο και αποτελεσματικό πακετάρισμα εφαρμογών και την εκτέλεση τους σε οποιοδήποτε περιβάλλον. Λόγω των -χαρακτηριστικών τους, εξαλείφουν τυχόν προβλήματα συμβατότητας μεταξύ των +χαρακτηριστικών τους, εξαλείφουν τυχόν προβλήματα ασυμβατότητας μεταξύ των περιβαλλόντων εκτέλεσης τους και προσφέρουν μεγαλύτερη αποδοτικότητα πόρων αφού μπορεί κανείς να εκτελέσει πολλά περισσότερα αντίγραφα ενός προγράμματος για συγκεκριμένη ποσότητα πόρων σε σχέση με τον αριθμό που θα μπορούσε να εκτελέσει -χρησιμοποιώντας εικονικές μηχανές πάνω από αυτούς τους πόρους, κάτι που μειώνει -ιδιαίτερα το κόστος λειτουργίας και αυξάνει την κλιμακωσιμότητα. Επιπλέον, λόγω -της ταχείας διάθεσης και εκτέλεσης τους, συμβαδίζουν πλήρως με τον ρυθμό -ανάπτυξης και παράδοσης που υποστηρίζουν οι παραπάνω μεθοδολογίες. +χρησιμοποιώντας εικονικές μηχανές πάνω από αυτούς τους πόρους. Γεγονός που +μειώνει ιδιαίτερα το κόστος λειτουργίας και αυξάνει την κλιμακωσιμότητα. +Επιπλέον, λόγω της ταχείας διάθεσης και εκτέλεσης τους, συμβαδίζουν πλήρως με +τον ρυθμό ανάπτυξης και παράδοσης που υποστηρίζουν οι παραπάνω μεθοδολογίες. Έχοντας αυτά υπόψιν, γίνεται εμφανής και ο λόγος που τα δοχεία είναι η προτιμότερη επιλογή για την ανάπτυξη και παράδοση εφαρμογών που ακολουθούν την @@ -419,7 +419,7 @@ Docker, το Quay \footfullcite{quay}, ένα εναλλακτικό αποθε λειτουργία της (μικρο-υπηρεσία). Τα δοχεία αυτά είναι ανεξάρτητα μεταξύ τους και κατά την ανάγκη κλιμάκωσης μιας συγκεκριμένης λειτουργίας της εφαρμογής αυτό μπορεί να επιτευχθεί δίχως την περιττή κλιμάκωση όλων των υπολοίπων. -Επιπρόσθετα, η ανεξαρτησία των δοχείων μεταξύ τους καθιστά πιο σταθερή την +Επιπρόσθετα, η ανεξαρτησία των δοχείων μεταξύ τους, καθιστά πιο σταθερή την εφαρμογή αφού σε περίπτωση που κάποιο από αυτά αποτύχει, η υπόλοιπη εφαρμογή θα συνεχίσει να λειτουργεί κανονικά και η ανακατασκευή του δοχείου που απέτυχε μπορεί να επιτευχθεί εύκολα και γρήγορα με μια απλή τροποποίηση της εκάστοτε @@ -484,7 +484,7 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία εύκολη τη μεταφορά τους σε οποιοδήποτε μηχάνημα (εφόσον αυτό υποστηρίζει την εκτέλεση της μηχανής δοχείων του Docker) ή ακόμα και νέφος, θέτοντας το κορυφαία επιλογή για επιχειρήσεις που επιλέγουν να ακολουθήσουν την στρατηγική -πολλαπλών νεφών (multi-cloud computing) κατά την κατασκευή εφαρμογών, δηλαδή να +πολλαπλών νεφών (multi-cloud computing) κατά την κατασκευή εφαρμογών. Δηλαδή να μην βασίζονται αποκλειστικά σε έναν πάροχο νέφους για όλες τις λειτουργίες μιας εφαρμογής \footfullcite{multiCloud} αλλά να εκμεταλλεύονται οφέλη από πολλούς παρόχους με βάση τις ανάγκες τους. @@ -512,8 +512,8 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία μέσω της εικονικοποίησης υλικού ανάμεσα στα προγράμματα και το μηχάνημα στο οποίο εκτελούνται αποτελεί ένα παραπάνω εμπόδιο που θα πρέπει να ξεπεράσει ένας επιτιθέμενος για να προκαλέσει ζημιές στο κύριο σύστημα, αφού θα πρέπει πρώτα -να περάσει από τον εικονικό πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, η -ο συνδυασμός με την αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο +να περάσει από τον εικονικό πυρήνα και έπειτα από τον υπερ-επόπτη. Παράλληλα, ο +συνδυασμός με την αρχιτεκτονική δοχείων παρέχει ένα επιπρόσθετο επίπεδο απομόνωσης εφόσον στην προκειμένη περίπτωση η άμεση επικοινωνία με τον πυρήνα του συστήματος αφορά το ΛΣ φιλοξενίας και όχι το κύριο σύστημα. @@ -542,15 +542,15 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία Με τη χρήση της αρχιτεκτονικής δοχείων και ειδικότερα του Docker, έρχονται αρκετά εγγενή οφέλη ασφαλείας \footfullcite{dockerInherentSecurity}. Ένα βασικό όφελος αποτελεί η διαφάνεια. Λόγω της φύσης τους, τα δοχεία επιτρέπουν την -ακριβή κατανόηση του κώδικα που εκτελείται μέσα σε αυτά σε αντίθεση με την +ακριβή κατανόηση του κώδικα που εκτελείται μέσα σε αυτά, σε αντίθεση με την περίπτωση χρήσης αποκλειστικά εικονικών μηχανών. Επιπρόσθετα, κατά την εμφάνιση προβλημάτων σε μία υπηρεσία με αρχιτεκτονική μικρο-υπηρεσιών που κάνει χρήση δοχείων, είναι διακριτή η διευκόλυνση στον εντοπισμό της πηγής τους. Ένα εξίσου σημαντικό όφελος αποτελεί το επιπρόσθετο επίπεδο ασφάλειας που -παρέχεται. Σε περιβάλλον εικονικής μηχανής θα πρέπει να σκληρυνθεί το ΛΣ +παρέχεται. Σε περιβάλλον εικονικής μηχανής θα πρέπει να σκληρύνει το ΛΣ φιλοξενίας (αν υπάρχει), ο υπερ-επόπτης, το φιλοξενούμενο ΛΣ και η εκτελούμενη -υπηρεσία. Σε περιβάλλον δοχείου, πρέπει να σκληρυνθεί το ΛΣ που φιλοξενεί τη +υπηρεσία. Σε περιβάλλον δοχείου, πρέπει να σκληρύνει το ΛΣ που φιλοξενεί τη μηχανή δοχείων, η μηχανή δοχείων και η υπηρεσία. Πράγμα που σημαίνει πως σε ένα εικονικό περιβάλλον με την χρήση του Docker έχουμε επιπρόσθετα επίπεδα που χρειάζονται σκλήρυνση. Συνεπώς, σε εικονικά περιβάλλοντα, η χρήση δοχείων @@ -599,7 +599,7 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία ένα δοχείο μπορεί να εκμεταλλευτεί μια ευπάθεια του πυρήνα προκειμένου να αποκτήσει πρόσβαση στο κύριο σύστημα και εφόσον η εκτέλεση του Docker γίνεται με διαχειριστικά δικαιώματα, μετά από μια επιτυχημένη επίθεση Container Escape -θα έχει διαχειριστικά δικαιώματα και ο επιτιθέμενος +θα έχει διαχειριστικά δικαιώματα και ο ίδιος \footfullcite{containerEscapeRepercussions}. \clearpage @@ -607,8 +607,8 @@ ECS (Elastic Container Service) της Amazon. Μια υποκατηγορία \subsection{Ξεπερνώντας τα μειονεκτήματα ασφαλείας του Docker} \label{overcomingDockerDisadvantages} Οι πιο συνήθεις τρόποι αντιμετώπισης της ανεπαρκούς προκαθορισμένης ασφάλειας -του Docker (δηλ. της ελαστικής απομόνωσης) είναι η ρύθμιση καλύτερων AppArmor -προφίλ ή κανόνων SELinux προκειμένου να απομονωθεί καλύτερα από το κύριο +του Docker (δηλ. της ελαστικής απομόνωσης) είναι η ρύθμιση καλύτερων προφίλ +AppArmor ή κανόνων SELinux προκειμένου να απομονωθεί καλύτερα από το κύριο σύστημα. Στην πραγματικότητα, αυτές οι πρακτικές λαμβάνουν υπόψιν τους κυρίως τα δοχεία και όχι τη μηχανή δοχείων καθ' αυτού. Γι' αυτό τον λόγο, πολλές φορές πρέπει να ακολουθούνται και καλύτερες πρακτικές κατά τη λειτουργία/χρήση του @@ -623,10 +623,10 @@ Docker, όπως η αποφυγή χρήσης του διαχειριστικ \ref{installationANDShowcase}, θα επιτευχθεί η ασφάλιση του Docker και του συστήματος με αυτοματοποιημένο τρόπο ακολουθώντας ορθές πρακτικές, χρησιμοποιώντας ένα ασφαλέστερο από το αρχικό Container Runtime και εκτελώντας -το Docker εξολοκλήρου χωρίς την ανάγκη διαχειριστικών δικαιωμάτων. Το εργαλείο +το Docker εξ ολοκλήρου χωρίς την ανάγκη διαχειριστικών δικαιωμάτων. Το εργαλείο αυτό επικοινωνεί με πολλούς παρόχους νέφους στέλνοντας τους παραμέτρους για τις προδιαγραφές εικονικών μηχανών προκειμένου να μπορέσουν να δημιουργηθούν με -αυτοματοποιημένο τρόπο επιτρέποντας έτσι την δημιουργία πολλαπλών ασφαλών +αυτοματοποιημένο τρόπο, επιτρέποντας έτσι την δημιουργία πολλαπλών ασφαλών περιβαλλόντων ώστε να μπορεί ένας χρήστης να εγκαθιστά εκεί τα δοχεία της εφαρμογής του. Η σκλήρυνση του ΛΣ επιτυγχάνεται με την εκτέλεση πολλών βημάτων στα οποία μεταξύ άλλων περιλαμβάνεται η σκλήρυνση του SSH, ο εντοπισμός, η @@ -639,7 +639,7 @@ Akihiro Suda πάνω στο rootlesskit \footfullcite{AkihiroSuda}, επιτρ έναν πλαστό διαχειριστικό λογαριασμό προκειμένου να μπορέσει η μηχανή δοχείων να εκτελεστεί υπό την κυριότητα οποιουδήποτε χρήστη του συστήματος. Τέλος, η αντικατάσταση του αρχικού Container Runtime με το αντίστοιχο του gVisor -\footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τοίχος προστασίας απέναντι σε +\footfullcite{gVisor}, εισάγει ένα πιο συμπαγές τείχος προστασίας απέναντι σε συνηθισμένες επιθέσεις κατά των δοχείων, καθιστώντας το σύστημα μας πιο ασφαλές συγκριτικά με τις αρχικές/προκαθορισμένες ρυθμίσεις. @@ -649,9 +649,9 @@ Akihiro Suda πάνω στο rootlesskit \footfullcite{AkihiroSuda}, επιτρ Η υπόλοιπη δομή της αναφοράς είναι η εξής. Στο κεφάλαιο \ref{background} θα μελετήσουμε τον όρο νεφο-υπολογιστική, θα αναλύσουμε τις διάφορες τεχνολογίες -εικονικοποίησης και θα εμβαθύνουμε στην τεχνολογία των δοχείων και συγκεκριμένα -στην ασφάλεια του Docker. Στο επόμενο κεφάλαιο (δηλαδή το \ref{relevantWork}), -θα δούμε εργασίες σχετικές με την παρούσα και θα πραγματοποιηθεί ανάλυση και +εικονικοποίησης και θα εμβαθύνουμε στην τεχνολογία των δοχείων με επίκεντρο την +ασφάλεια του Docker. Στο επόμενο κεφάλαιο (δηλαδή το \ref{relevantWork}), θα +δούμε εργασίες σχετικές με την παρούσα και θα πραγματοποιηθεί ανάλυση και σύγκριση αυτών με την προτεινόμενη εργασία της διπλωματικής. Αμέσως μετά, στο κεφάλαιο \ref{projectDevelopment}, αναφερόμαστε στην ανάπτυξη του προτεινόμενου εργαλείου και τα παράγωγά της (απαιτήσεις, σχεδιαστικά μοντέλα, κώδικα diff --git a/Chapters/2.Background.tex b/Chapters/2.Background.tex index 8decb36..d46b260 100644 --- a/Chapters/2.Background.tex +++ b/Chapters/2.Background.tex @@ -57,7 +57,7 @@ βρίσκεται ένας τελικός χρήστης μπορεί να χρησιμοποιήσει πόρους από οποιοδήποτε κέντρο δεδομένων επιθυμεί. Παραδείγματα πόρων που παρέχονται αποτελούν μεταξύ άλλων το εύρος ζώνης δικτύου, ο - αποθηκευτικός χώρος και εικονικές μηχανές. + αποθηκευτικός χώρος και οι εικονικές μηχανές. \item \textbf{Ελαστικότητα (Elasticity)}: @@ -139,7 +139,7 @@ ανάπτυξης/εκτέλεσης, των εγκατεστημένων εφαρμογών και των ρυθμίσεων διαμόρφωσης τους. Το μοντέλο χρέωσης υπηρεσιών IaaS συνήθως αποτελείται από μια συνεχόμενη χρέωση ανά χρονική περίοδο λόγω της ανάθεσης των - πόρων στον καταναλωτή η οποία αυξάνεται μετά την υπέρβαση ενός ορίου + πόρων στον καταναλωτή, η οποία αυξάνεται μετά την υπέρβαση ενός ορίου χρήσης για ορισμένους πόρους όπως το εύρος ζώνης δικτύου. \end{itemize} @@ -165,7 +165,7 @@ μια επιχείρηση να ακολουθήσει. Επιπλέον, λόγω της αποκλειστικής αφιέρωσης του σε έναν μόνο οργανισμό, εξασφαλίζεται η διαθεσιμότητα των δεδομένων κατά παραγγελία, όπως επίσης και η αξιοπιστία του για - κρίσιμους φόρτους εργασίας + κρίσιμους φόρτους εργασίας. \clearpage @@ -221,7 +221,7 @@ αποκλειστικούς πόρους από ένα μόνο, φυσικό σύστημα υλικού. Ένα λογισμικό ονόματι υπερ-επόπτης (hypervisor) συνδέεται στο υλικό αυτό\footnote{Απευθείας στην εικονικοποίηση υποβοηθούμενη από το υλικό και έμμεσα στην -εικονικοποίηση υποβοηθούμενη από το λογισμικό} και δίνει τη δυνατότητα +εικονικοποίηση υποβοηθούμενη από το λογισμικό.} και δίνει τη δυνατότητα διαμερισμού ενός συστήματος σε ξεχωριστά, διακριτά και ασφαλή περιβάλλοντα, γνωστά και ως εικονικές μηχανές (Virtual Machines - VMs). Επομένως, αυτές οι εικονικές μηχανές βασίζονται στην ικανότητα του υπερ-επόπτη να διαχωρίζει τους @@ -245,7 +245,7 @@ όλες τις δυνατότητες ενός φυσικού μηχανήματος διανέμοντας τις σε πολλούς χρήστες και περιβάλλοντα. Με άλλα λόγια, υποστηρίζεται η πολλαπλή μίσθωση ανά φυσικό μηχάνημα με τη μορφή εικονικών μηχανημάτων καθώς και η αυξημένη χρήση -πόρων των φυσικών μηχανημάτων (στα κέντρα δεδομένων του νέφους) +πόρων των φυσικών μηχανημάτων (στα κέντρα δεδομένων του νέφους). \clearpage @@ -270,10 +270,10 @@ Παραδοσιακά, αυτή η αρχιτεκτονική όπου εκτελούνται μεμονωμένες εργασίες σε μεμονωμένους διακομιστές ήταν ευκολότερη και πιο αξιόπιστη αλλά δεν παύει να -μην είναι η πιο αποδοτική λύση. Με την άφιξη της τεχνολογίας της -εικονικοποίησης, όμως είναι πλέον εφικτό να χωριστεί ένας διακομιστής σε -περισσότερα μέρη, έχοντας πλέον δύο ή παραπάνω εικονικά μηχανήματα με τη χρήση -ενός φυσικού. +είναι η λιγότερο αποδοτική λύση. Με την άφιξη της τεχνολογίας της +εικονικοποίησης όμως, είναι πλέον εφικτό να χωριστεί ένας διακομιστής σε +περισσότερα μέρη, έχοντας δύο ή παραπάνω εικονικά μηχανήματα με τη χρήση ενός +φυσικού. \begin{center} \begin{figure}[!ht] @@ -288,7 +288,7 @@ Εφόσον ένας διακομιστής χωρίζεται σε δύο ή παραπάνω εικονικά μέρη, μπορεί να αυξηθεί ραγδαία η αξιοποίηση των δυνατοτήτων του. Με βάση το προηγούμενο παράδειγμα, αν μια εικονική μηχανή λαμβάνει το 30\% των πόρων ενός -διακομιστή/φυσικού μηχανήματος, τότε όλες οι προαναφερόμενες τρεις +διακομιστή/φυσικού μηχανήματος, τότε και οι τρεις προαναφερόμενες λειτουργικότητες (παροχής υπηρεσιών ιστού, ηλεκτρονικού ταχυδρομείου και εφαρμογών) θα μπορούσαν να εγκατασταθούν στον ίδιο διακομιστή με την μορφή τριών διαφορετικών εικονικών μηχανημάτων, αντίστοιχα. @@ -298,11 +298,11 @@ Αφού η δημιουργία και καταστροφή των εικονικών μηχανών σε ένα μηχάνημα πραγματοποιείται δυναμικά ανάλογα με τη ζήτηση, αυτό σημαίνει πως ένας διακομιστής μπορεί να συνεχίσει να χρησιμοποιείται για νέους σκοπούς σε σχέση -με τους αρχικούς είτε να αποσυρθεί τελείως σταματώντας την λειτουργία του -(switch off). Το τελευταίο είναι χρήσιμο κυρίως όταν η ζήτηση σε ένα κέντρο -δεδομένων είναι μικρή και επομένως υπάρχει οικονομικό συμφέρον (λόγω -ενεργειακού κόστους) ως προς το κλείσιμο των διακομιστών που δεν απαιτούνται -για την κάλυψη της παρούσας ζήτησης. +με τους αρχικούς ή να αποσυρθεί τελείως σταματώντας την λειτουργία του (switch +off). Το τελευταίο είναι χρήσιμο κυρίως όταν η ζήτηση σε ένα κέντρο δεδομένων +είναι μικρή και επομένως υπάρχει οικονομικό συμφέρον (λόγω ενεργειακού κόστους) +ως προς το κλείσιμο των διακομιστών που δεν απαιτούνται για την κάλυψη της +παρούσας ζήτησης. \subsection{Ιστορική αναδρομή της εικονικοποίησης} \label{virtualizationHistory} @@ -313,7 +313,7 @@ δεκαετίες για να δώσουν σε πολλούς χρήστες ταυτόχρονη πρόσβαση σε υπολογιστές που επεξεργαζόντουσαν πολλά δεδομένα ταυτόχρονα. Κάτι ιδιαίτερα δημοφιλές στον τομέα των επιχειρήσεων για καθήκοντα ρουτίνας που έπρεπε να εκτελεστούν -χιλιάδες φορές πολύ γρήγορα όπως η μισθοδοσία υπαλλήλων. +χιλιάδες φορές και πολύ γρήγορα όπως η μισθοδοσία υπαλλήλων. Ωστόσο, μέσα στις επόμενες δεκαετίες, ήρθαν στο προσκήνιο άλλες λύσεις στο πρόβλημα διαμοιρασμού ενός μηχανήματος σε πολλούς χρήστες, μειώνοντας έτσι το @@ -335,7 +335,7 @@ \clearpage -Από εκείνο το σημείο και έπειτα άρχισε να γίνεται εμφανής η ανάγκη της +Από εκείνο το σημείο και έπειτα, άρχισε να γίνεται εμφανής η ανάγκη της εικονικοποίησης και να ανεβαίνει η δημοτικότητα της. Οι εταιρείες μπορούσαν πλέον να διαμερίσουν τους διακομιστές τους και να εκτελούν ακόμα και τις παλαιές τους εφαρμογές σε πολλούς τύπους και εκδόσεις λειτουργικών συστημάτων. @@ -369,8 +369,8 @@ για μια στρώση λογισμικού που καθιστά δυνατή την εκτέλεση πολλαπλών λειτουργικών συστημάτων, το ένα δίπλα στο άλλο, μοιράζοντας τους ίδιους φυσικούς πόρους σε κάθε ένα από αυτά. Η πράξη αυτή ονομάζεται εικονικοποίηση -και τα στιγμιότυπα των λειτουργικών συστημάτων λέγονται εικονικές μηχανές οι -οποίες αντιπροσωπεύουν προσομοιώσεις φυσικών υπολογιστών. +και τα στιγμιότυπα των λειτουργικών συστημάτων λέγονται εικονικές μηχανές και +αντιπροσωπεύουν προσομοιώσεις φυσικών υπολογιστών. \clearpage @@ -820,7 +820,7 @@ Machine), που επιτρέπει στο Linux να συμπεριφέρετα εκτελούνται μέσω της δημιουργίας δοχείων. Στα δοχεία αυτά, εικονικοποιούνται οι απαραίτητοι υπολογιστικοί πόροι όπως το λειτουργικό σύστημα, η μνήμη και η κεντρική μονάδα επεξεργασίας - \footfullcite{geeksforgeeksApplicationVirtualization} κάνοντας χρήση + \footfullcite{geeksforgeeksApplicationVirtualization}, κάνοντας χρήση των διαθέσιμων μηχανισμών απομόνωσης του πυρήνα του λειτουργικού συστήματος. Περισσότερες λεπτομέρειες για τον τρόπο κατά τον οποίο επιτυγχάνεται αυτό, παρουσιάζονται στο \ref{osVirtualization}. @@ -1193,7 +1193,7 @@ API, ώστε να μπορεί να κάνει χρήση των υπερ-κλ Έτσι κακόβουλοι εισβολείς θα προσπαθήσουν να βρουν τρωτότητες στη διαδικασία παράδοσης των υπηρεσιών του παρόχου, τις υπηρεσίες τις ίδιες ή και τις διεπαφές με τις οποίες παρέχονται. Ένας συνηθισμένος τρόπος για να γίνει αυτό είναι -εκτελώντας επιθέσεις τύπου Cross site scripting (XSS), έκχυση SQL (SQL +εκτελώντας επιθέσεις τύπου Cross site scripting (XSS), έγχυση SQL (SQL injection), χειραγώγησης cookies ή εκμετάλλευσης μη ασφαλούς ρύθμισης, θέτοντας έτσι σε κίνδυνο ευαίσθητες πληροφορίες και δεδομένα των επιχειρήσεων. Επιπλέον, επειδή όλα τα δίκτυα είναι επιρρεπή σε επιθέσεις αν δεν έχουν ληφθεί τα @@ -1393,7 +1393,7 @@ SQL Injection Attacks\Tstrut\Bstrut \\ \item \textbf{Συχνή ενημέρωση του υπερ-επόπτη}: Ο υπερ-επόπτης είναι ο πυρήνας του συστήματος εικονικοποίησης και - επομένως η ασφάλεια του είναι ζωτικής σημασίας. Οι εταιρίες που + επομένως η ασφάλεια του είναι ζωτικής σημασίας. Οι εταιρείες που αναπτύσσουν το λογισμικό του, τον ενημερώνουν συχνά για να διορθώσουν τυχόν ευπάθειες που έχουν ανακαλυφθεί. Επομένως, οι επιχειρήσεις πρέπει να εφαρμόζουν τις ενημερώσεις αυτές το συντομότερο δυνατόν από την @@ -1437,7 +1437,7 @@ SQL Injection Attacks\Tstrut\Bstrut \\ για τον διαμοιρασμό αποθηκευτικού χώρου). Επιβάλλεται να εφαρμοστούν πολιτικές που να διαχειρίζονται την φυσική και λογική κατάτμηση πόρων. Αυτό θα αποτρέψει την μη εξουσιοδοτημένη πρόσβαση, θα μειώσει τις - επιθέσεις έκχυσης κώδικα από μια εικονική μηχανή σε μια άλλη, καθώς και + επιθέσεις έγχυσης κώδικα από μια εικονική μηχανή σε μια άλλη, καθώς και το ρίσκο επίθεσης τύπου άρνησης υπηρεσίας. \item \textbf{Παρακολούθηση των πόρων}: @@ -1485,7 +1485,7 @@ SQL Injection Attacks\Tstrut\Bstrut \\ σε ένα συγκεκριμένο περιβάλλον να μη λειτουργεί με τον αναμενόμενο τρόπο κατά τη μεταφορά του σε ένα άλλο, εκτός εάν έχει ελεγχθεί ότι υπάρχουν όλες οι εξαρτήσεις που χρειάζεται στις εκδόσεις που τις χρειάζεται. Ακόμα και σε αυτήν -την περίπτωση όμως, πέραν του κόπου για τον έλεγχο είναι αρκετά πιθανό ένα +την περίπτωση όμως, πέραν του κόπου για τον έλεγχο, είναι αρκετά πιθανό ένα δεύτερο πρόγραμμα να χρειάζεται διαφορετικές εκδόσεις των ίδιων εξαρτήσεων. Αυτό πρακτικά σήμαινε πως το δεύτερο αυτό πρόγραμμα θα έπρεπε να στεγαστεί σε διαφορετικό διακομιστή, αυξάνοντας το σχετικό κόστος. @@ -1615,11 +1615,11 @@ SQL Injection Attacks\Tstrut\Bstrut \\ από το να επηρεάσει τα υπόλοιπα δοχεία ή το σύστημα στο οποίο εκτελούνται. Συγκεκριμένα, χρησιμοποιώντας Kernel Security Modules όπως AppArmor ή SELinux μπορούν να ορισθούν άδειες ασφαλείας με σκοπό τον - περιορισμό του εύρους πρόσβασης του Docker στο σύστημα και με access + περιορισμό του εύρους πρόσβασης του Docker στο σύστημα, ενώ με access authorization plugins \footfullcite{accessAuthorizationPlugin}, περιορίζεται η πρόσβαση στον δαίμονα του Docker. Επιπροσθέτως, πολύ εύκολα μπορεί να περιοριστεί και η επικοινωνία μεταξύ δοχείων, καθώς - και του δικτύου του συστήματος. + και με το δίκτυο του συστήματος. \end{itemize} @@ -1635,8 +1635,8 @@ Container Initiative (OCI), η οποία ιδρύθηκε τον Ιούνιο είναι εγκλωβισμένοι στην τεχνολογία ενός συγκεκριμένου προμηθευτή. Απεναντίας, θα μπορούν να επωφεληθούν από τις πιστοποιημένες από την OCI τεχνολογίες που θα τους επιτρέπουν να δημιουργούν εφαρμογές σε δοχεία χρησιμοποιώντας ένα ευρύ -σύνολο εργαλείων DevOps και να τις εκτελούν με τον ίδιο τρόπο σε οποιεσδήποτε -υποδομές της επιλογής τους. +σύνολο εργαλείων DevOps, τις οποίες θα μπορούν να εκτελούν με τον ίδιο τρόπο σε +οποιεσδήποτε υποδομές της επιλογής τους. Σήμερα αν και το Docker αποτελεί μία από τις πιο γνωστές και ευρέως χρησιμοποιούμενες μηχανές δοχείων, υπάρχουν πολλές άλλες υλοποιήσεις. @@ -1723,15 +1723,16 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ επιθέσεις. Συνεπώς, πρέπει να ληφθούν μέτρα προστασίας όπως η χρήση εικόνων προερχόμενες μόνο από εγκεκριμένες πηγές, δηλαδή να υπάρχει εμπιστοσύνη ανάμεσα στον προμηθευτή μιας εικόνας δοχείου και τον τελικό χρήστη. Επιπροσθέτως, πριν -την χρήση μιας εικόνας δοχείου πρέπει να εξετάζεται με εργαλεία ανίχνευσης -τρωτοτήτων, καθώς και να έχει πραγματοποιηθεί επαρκώς σκλήρυνση του Docker ώστε -να μειωθούν οι επιπτώσεις κατά την χρήση της. +την χρήση μιας εικόνας δοχείου, πρέπει αυτή να εξετάζεται με εργαλεία +ανίχνευσης τρωτοτήτων, καθώς και να έχει πραγματοποιηθεί επαρκώς σκλήρυνση του +Docker ώστε να μειωθούν οι επιπτώσεις κατά την χρήση της εαν περιέχει κακόβουλο +λογισμικό. Οι πάροχοι τεχνολογίας δοχείων έχουν αποκτήσει μια προσέγγιση ασφαλούς σχεδιασμού ώστε πολλά από τα απαραίτητα μέτρα να είναι ενεργοποιημένα χωρίς την -απαίτηση επιπρόσθετης αλληλεπίδρασης από τον χρήστη. Πλέον η μηχανή δοχείων +απαίτηση επιπρόσθετης αλληλεπίδρασης από τον χρήστη. Πλέον, η μηχανή δοχείων υποστηρίζει όλες τις ιδιότητες απομόνωσης που υποστηρίζει και το λειτουργικό -σύστημα στο οποίο εκτελείται και άδειες ασφαλείας μπορούν να δοθούν στα δοχεία +σύστημα στο οποίο εκτελείται, ενώ άδειες ασφαλείας μπορούν να δοθούν στα δοχεία και τον δαίμονα του Docker μέσω του πυρήνα του ΛΣ, με σκοπό τον επιπρόσθετο περιορισμό χρήσης πόρων και του εύρους του συστήματος στο οποίο έχει πρόσβαση η μηχανή δοχείων \footfullcite{ibmContainerizationDefinition}. @@ -1796,7 +1797,7 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ αλληλεπίδραση μεταξύ των δοχείων μέσω της διεπαφής δικτύου του καθενός σαν να είναι εξωτερικές οντότητες. - \item \textbf{Ομάδες ελέγχου (cgroups)}. Έπιβάλλεται η οριοθέτηση των + \item \textbf{Ομάδες ελέγχου (cgroups)}. Επιβάλλεται η οριοθέτηση των υπολογιστικών πόρων προκειμένου να αποφευχθεί μια επίθεση τύπου άρνησης υπηρεσίας, όπου μια διεργασία ή ένα σύνολο αυτών προσπαθεί να καταναλώσει όλους τους πόρους του συστήματος. Με τη βοήθεια των ομάδων @@ -1809,7 +1810,7 @@ Docker να δουλεύουν ευκολότερα σε διαφορετικέ εκμεταλλευτεί για να προστατεύσει το περιβάλλον του από επιθέσεις. Επιπλέον, υπάρχει και η δυνατότητα υποστήριξης Kernel Security Modules, όπως SELinux \footfullcite{selinux} και AppArmor \footfullcite{apparmor} αλλά και του -Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), όπως επίσης και +Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), καθώς επίσης και συμβατότητα με Linux capabilities, που θα μπορούσαν να εισάγουν ένα ακόμα επίπεδο ασφαλείας, αν χρησιμοποιηθούν σωστά, περιορίζοντας τα δικαιώματα των διεργασιών των δοχείων σε μονάχα όσα χρειάζονται. Το Docker παρέχει αρκετά @@ -1875,7 +1876,7 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), πρόληψη μελλοντικών μεθόδων διεκπεραίωσης τέτοιου είδους επίθεσης, συνίσταται να τίθενται τα δοχεία και οι αποθηκευτικοί τους χώροι σε κατάσταση μονάχα ανάγνωσης, καθώς και να αποφεύγεται η χρήση της - παραμέτρου privileged. + παραμέτρου \textquote{privileged}. \item \textbf{Δηλητηριασμένες εικόνες δοχείων}: @@ -1891,16 +1892,16 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), \item \textbf{Απόκτηση μυστικών κωδικών/κλειδιών}: - Η απόκτηση επιχειρησιακών ή προσωπικών μυστικών ελοχεύει πολλούς + Η απόκτηση επιχειρησιακών ή προσωπικών μυστικών ελλοχεύει πολλούς κινδύνους για μια επιχείρηση. Σε περίπτωση που κάτι τέτοιο συμβεί, ένας επιτιθέμενος μπορεί να έχει πρόσβαση σε βάσεις δεδομένων ή άλλα κομμάτια του συστήματος απειλώντας έτσι την ακεραιότητα, την εμπιστευτικότητα και διαθεσιμότητα των δεδομένων. Προκειμένου να - αποφευχθεί μια εισβολή σε κάποιο δοχείο που θα προκαλούσε την απόκτηση + αποφευχθεί η εισβολή σε κάποιο δοχείο που θα προκαλούσε την απόκτηση τέτοιων μυστικών, καθίσταται επιτακτική η χρήση δοχείων σε κατάσταση ανάγνωσης και όχι εγγραφής αλλά και η αποφυγή χρήσης μεταβλητών για την αποθήκευση κωδικών. Χρήσιμη επίσης θα ήταν και η εσκεμμένη παράλειψη - της παραμέτρου privileged. + της παραμέτρου \textquote{privileged}. \clearpage @@ -1933,14 +1934,14 @@ Seccomp \footfullcite{seccomp} (στην περίπτωση χρήσης LXC), ότι είναι άλλα δοχεία ή ακόμα και το κύριο μηχάνημα. Στην περίπτωση παραβίασης ενός δοχείου, υπάρχει κίνδυνος ο επιτιθέμενος να υποκλέψει μυστικά της επιχείρησης ή των τελικών χρηστών της υπηρεσίας που η - επιχείρηση προσφέρει. Ένας από τους τρόπους για την αποφυγή τέτοιας - επίθεσης είναι η εκτέλεση δοχείων δίχως το NET\_RAW capability αφού - έτσι τα προγράμματα μέσα στο δοχείο δε θα μπορούν να δημιουργήσουν + επιχείρηση προσφέρει. Ένας από τους τρόπους που βοηθάει στην αποφυγή + τέτοιας επίθεσης είναι η εκτέλεση δοχείων δίχως το NET\_RAW capability, + αφού έτσι τα προγράμματα μέσα στο δοχείο δε θα μπορούν να δημιουργήσουν PF\_PACKET sockets και θα ήταν αδύνατη η διεκπεραίωση της επίθεσης. Βέβαια, αυτή η μέθοδος έχει μειονεκτήματα αφού μπορεί αυτή η ικανότητα να ήταν άκρως απαραίτητη για την ορθή λειτουργία της υπηρεσίας. Επομένως, μια εναλλακτική μέθοδος προστασίας είναι η χρήση - \textquote{ebtables} για φιλτράρισμα Ethernet frames ούτως ώστε ARP + \textquote{ebtables} για φιλτράρισμα πλαισίων Ethernet ούτως ώστε ARP πακέτα με λάθος πρωτόκολλο αποστολέα ή διεύθυνση MAC να ανιχνεύονται εγκαίρως και να απορρίπτονται. diff --git a/Chapters/3.RelevantWork.tex b/Chapters/3.RelevantWork.tex index 39084c9..8dfa63e 100644 --- a/Chapters/3.RelevantWork.tex +++ b/Chapters/3.RelevantWork.tex @@ -9,10 +9,10 @@ αυτοματοποίηση της ασφάλισης τους όμως είναι ακόμα σε πρώιμο στάδιο. Οι περισσότερες υπηρεσίες που διατίθενται στους χρήστες κάνουν χρήση τεχνολογιών εικονικοποίησης έμμεσα από τον πάροχο νέφους που χρησιμοποιούν και τεχνολογίες -δοχείων άμεσα από επιλογή τους λόγω της υπεροχής που παρέχουν στη διαχείριση. -Όλες οι υπηρεσίες όμως είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε ληφθούν τα -απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα συστήματά -τους. +δοχείων άμεσα από επιλογή τους λόγω της υπεροχής που παρέχουν στη διαχείριση +τους. Όλες οι υπηρεσίες όμως είναι εν δυνάμει ευάλωτες σε επιθέσεις εάν δε +ληφθούν τα απαραίτητα μέτρα προστασίας και αφήσουν ανοιχτά σημεία εισόδου στα +συστήματά τους. Η παρούσα εργασία έχει ως στόχο την ανάπτυξη ενός εργαλείου που επιτυγχάνει την αυτοματοποίηση τριών τομέων. Την επικοινωνία με τον πάροχο νέφους για την @@ -37,8 +37,8 @@ \item \textbf{Ευελιξία κατά την χρήση}: Το εργαλείο πρέπει να μπορεί να προσαρμόζεται στις ανάγκες του χρήστη - όταν αυτός χρειάζεται να πραγματοποιήσει ορισμένες αλλαγές κατά την - χρήση του. + όταν αυτός χρειάζεται να πραγματοποιήσει ορισμένες παραμετροποιήσεις + κατά την χρήση του. \item \textbf{Ευκολία κατά την χρήση}: @@ -75,7 +75,7 @@ αναπτύχθηκε από την εταιρεία HashiCorp. Αποτελεί ένα εργαλείο, κατά την χρήση του οποίου ο χρήστης καθορίζει τα χαρακτηριστικά της υποδομής που θέλει να δημιουργήσει σε ένα αρχείο που ακολουθεί συγκεκριμένη σύνταξη. - Αυτό το εντάσσει στην κατηγορίας \textquote{υποδομή ως κώδικας + Αυτό το εντάσσει στην κατηγορία \textquote{υποδομή ως κώδικας (Infrastructure as Code - IaC)} και χρησιμοποιείται για τον καθορισμό των υποδομών που θα χρησιμοποιηθούν για την στέγαση εφαρμογών. Το Terraform υποστηρίζει πολλούς παρόχους νέφους και επιτρέπει την @@ -90,7 +90,7 @@ Αποτελεί την δεύτερη τροποποιημένη έκδοση από ένα τρίτο πρόσωπο, ενός προγράμματος που επιχειρούσε να επιτύχει την δημιουργία ενός εργαλείου γραμμής εντολών που χρησιμοποιεί την βιβλιοθήκη libcloud για την - δημιουργία εικονικών μηχανών κατά μήκος διάφορων παρόχων νέφους. Είναι + δημιουργία εικονικών μηχανών κατά μήκος διαφόρων παρόχων νέφους. Είναι ένα εργαλείο γραμμής εντολών που απαιτεί αρχείο ρυθμίσεων μονάχα για την αυθεντικοποίηση με τους παρόχους νέφους. @@ -108,12 +108,12 @@ \item \textbf{Σύγκριση με Terraform}: - Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε αλλαγή - απαιτεί την τροποποίηση του. Αυτό το καθιστά λιγότερο ευέλικτο σε σχέση με άλλα - εργαλεία. Είναι σχετικά εύκολο στην χρήση όπως τα υπόλοιπα και δύναται να - χρησιμοποιήσει τα νέφη όλων των μεγάλων παρόχων. Παρόλα αυτά δεν αποτελεί - εργαλείο που μπορεί να επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το - καθιστά αυτοτελές. + Χρειάζεται την δημιουργία ενός αρχείου πριν την χρήση του και κάθε + αλλαγή απαιτεί την τροποποίηση του αρχείου αυτού. Αυτό το καθιστά + λιγότερο ευέλικτο σε σχέση με άλλα εργαλεία. Είναι σχετικά εύκολο στην + χρήση όπως τα υπόλοιπα και δύναται να χρησιμοποιήσει τα νέφη όλων των + μεγάλων παρόχων. Παρόλα αυτά δεν αποτελεί εργαλείο που μπορεί να + επεκταθεί εύκολα καθώς ο τρόπος λειτουργίας του το καθιστά αυτοτελές. \item \textbf{Σύγκριση με Libcloud CLI}: @@ -139,8 +139,8 @@ \section{Αυτοματοποίηση σκλήρυνσης εικονικών μηχανών} -Τα κριτήρια που θα ληφθούν υπόψιν για α εργαλεία αυτοματοποίησης σκλήρυνσης -εικονικών μηχανών είναι τα εξής: +Τα κριτήρια που θα ληφθούν υπόψιν για εργαλεία αυτοματοποίησης σκλήρυνσης +εικονικών μηχανών είναι τα παρακάτω: \begin{itemize} @@ -166,8 +166,8 @@ \subsection{Εργαλεία σκλήρυνσης εικονικών μηχανών} Τα παρακάτω εργαλεία θα συγκριθούν με το harden. Το δεύτερο εκτελέσιμο αρχείο -του εργαλείου SecDep, το οποίο κατά την επιλογή του χρήστη εκτελείται σε μια -εικονική μηχανή μετά την δημιουργία της. +του εργαλείου SecDep, το οποίο μετά από επιλογή του χρήστη εκτελείται σε μια +εικονική μηχανή αφότου αυτή δημιουργηθεί. \begin{itemize} diff --git a/Chapters/4.ProjectDevelopment.tex b/Chapters/4.ProjectDevelopment.tex index 278ab91..a97a1cd 100644 --- a/Chapters/4.ProjectDevelopment.tex +++ b/Chapters/4.ProjectDevelopment.tex @@ -27,7 +27,7 @@ δικού του εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο ίδιος. Η libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το οποίο χρησιμοποιώντας τις ίδιες συναρτήσεις, επιχειρεί να προσκομίσει ίδια -αποτελέσματα ανεξαρτήτως του παρόχου νέφους που επιλέχθηκε. +αποτελέσματα ανεξαρτήτως του παρόχου νέφους που στοχεύει. \clearpage @@ -197,8 +197,8 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή την λειτουργία σύνδεσης μέσω ssh} \item \textbf{Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα - ενός παρόχου δίχως την συμπλήρωση από τον χρήστη κενών πεδίων για - τους υπόλοιπους} + ενός παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους από + τον χρήστη} \end{itemize} @@ -219,9 +219,9 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή διαμορφωθούν περαιτέρω εάν ο χρήστης επιθυμεί να χρησιμοποιήσει άλλα προγράμματα όπως το Ansible} - \item \textbf{Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που - να μπορεί ο χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα - τις ανάγκες του} + \item \textbf{Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να + μπορεί ο χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις + ανάγκες του} \item \textbf{Το εργαλείο πρέπει να δημιουργεί κλειδιά ssh σε περίπτωση που δεν υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο @@ -255,7 +255,7 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή \textquote{yuml} \footfullcite{yuml}. Επιπλέον, με το εργαλείο \textquote{mermaid} \footfullcite{mermaid}, δημιουργήθηκε ένα διάγραμμα ροής για το SecDep που απεικονίζεται στο σχήμα \ref{fig:flowchartDiagram}. Το -διάγραμμα αυτό, απεικονίζει την ροή των εντολών που μπορεί να επιλεγούν από τον +διάγραμμα ροής, απεικονίζει την ροή των εντολών που μπορεί να επιλεγούν από τον χρήστη κατά την εκτέλεση του προγράμματος. \begin{center} @@ -397,13 +397,13 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran \clearpage -Το SecDep αποτελείται από δύο εκτελέσιμα αρχεία. Το πρώτο αρχείο, το secdep.py, -είναι το κύριο αρχείο του προγράμματος. Αυτό το αρχείο είναι υπεύθυνο για την -επικοινωνία με τους παρόχους νέφους και την διαχείριση των εικονικών μηχανών. -Το δεύτερο αρχείο, το \textquote{harden}, είναι υπεύθυνο για την σκλήρυνση των -εικονικών μηχανών και την εγκατάσταση/σκλήρυνση του Docker. Το harden, -εκτελείται μόνο στις εικονικές μηχανές κατά την δημιουργία τους και μόνο εάν ο -χρήστης το επιθυμεί. +Το SecDep αποτελείται από δύο εκτελέσιμα αρχεία. Το πρώτο αρχείο, το +\textquote{secdep.py}, είναι το κύριο αρχείο του προγράμματος. Αυτό το αρχείο +είναι υπεύθυνο για την επικοινωνία με τους παρόχους νέφους και την διαχείριση +των εικονικών μηχανών. Το δεύτερο αρχείο, το \textquote{harden}, είναι υπεύθυνο +για την σκλήρυνση των εικονικών μηχανών και την εγκατάσταση/σκλήρυνση του +Docker. Το harden, εκτελείται μόνο στις εικονικές μηχανές κατά την δημιουργία +τους και μόνο εάν ο χρήστης το επιθυμεί. Οι βασικότερες συναρτήσεις του secdep.py είναι οι εξής: @@ -424,7 +424,9 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran \item \textbf{image} \item \textbf{confirm}: Για επιβεβαίωση της δημιουργίας της - εικονικής μηχανής χωρίς να χρειαστεί η επιβεβαίωση του χρήστη. + εικονικής μηχανής χωρίς να χρειαστεί επιπλέον επιβεβαίωση από + τον χρήστη. + \item \textbf{deploy}: Για την εκτέλεση του harden. \end{itemize} @@ -471,7 +473,7 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran Το αρχείο harden, αποτελείται από πολλές συναρτήσεις που εκτελούνται με την σειρά προκειμένου να ασφαλιστεί το σύστημα στο οποίο εκτελείται. Οι πιο -αξιοσημείωτες από αυτές είναι: +αξιοσημείωτες αυτών είναι: \begin{itemize} @@ -481,15 +483,17 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran \item \textbf{dockerInit}: - Η συνάρτηση υπεύθυνση για την εγκατάσταση/σκλήρυνση του Docker. + Η συνάρτηση υπεύθυνη για την εγκατάσταση/σκλήρυνση του Docker. \item \textbf{kernelSecurityModuleInit}: Η συνάρτηση υπεύθυνη για την εγκατάσταση/ρύθμιση του κατάλληλου για την διανομή kernel security module. - \item \textbf{configureFail2ban}: Αφότου έχει προηγηθεί η εγκατάσταση του - κατάλληλου για την διανομή προγράμματος firewall, η συνάρτηση αυτή - ρυθμίζει το fail2ban για την προστασία από επιθέσεις brute force. + \item \textbf{configureFail2ban}: + + Αφότου έχει προηγηθεί η εγκατάσταση του κατάλληλου για την διανομή + προγράμματος αναχώματος ασφαλείας, η συνάρτηση αυτή ρυθμίζει το + fail2ban για την προστασία από επιθέσεις brute force. \end{itemize} diff --git a/Chapters/5.ProjectShowcase.tex b/Chapters/5.ProjectShowcase.tex index 729d30d..75775c4 100644 --- a/Chapters/5.ProjectShowcase.tex +++ b/Chapters/5.ProjectShowcase.tex @@ -12,7 +12,7 @@ Amazon. Μετά την ολοκλήρωση των παραπάνω διαδι χρήστης δεν έχει εγκατεστημένο το git, πρέπει να μεταβεί στην ιστοσελίδα του αποθετηρίου \footfullcite{secdep} και να επιλέξει είτε την επιλογή αποθήκευσης ως αρχείο zip, είτε ως tar.gz όπως απεικονίζεται παρακάτω. Έπειτα, πρέπει να -αποσυμπιεστεί με τα κατάλληλα για τον τύπο αρχείου προγράμματα. +αποσυμπιεστεί με το κατάλληλο για τον τύπο αρχείου πρόγραμμα. \begin{center} \begin{figure}[!ht] @@ -76,7 +76,7 @@ pip install -r requirements.txt --break-system-packages πάροχοι υπηρεσιών IaaS, επιλέχθηκε για την παρούσα ενότητα η κάλυψη της χρήσης των υπηρεσιών της Amazon έναντι της Azure και της GCE, λόγω της ευκολότερης και απλούστερης διαδικασίας αυθεντικοποίησης που παρέχει. Συγκεκριμένα, απαιτεί την -συμπλήρωση μονάχα δύο πεδίων. Αυτά είναι, το +συμπλήρωση μονάχα δύο πεδίων. Αυτά είναι, τα \textquote{SECDEP\_AWS\_ACCESS\_KEY} και \textquote{SECDEP\_AWS\_SECRET\_KEY}. \subsection{Δημιουργία κλειδιού πρόσβασης με την AWS} @@ -158,12 +158,12 @@ python3 secdep.py --init aws \vspace*{-10pt} \end{listing} -Όπου και θα ζητηθούν από τον χρήστη τα αντίστοιχα διαπιστευτήρια. Οι μεταβλητές +Έπειτα, θα ζητηθούν από τον χρήστη τα αντίστοιχα διαπιστευτήρια. Οι μεταβλητές αυτές θα αποθηκευτούν στο αρχείο \textquote{.env} που θα δημιουργηθεί στον φάκελο που βρίσκεται το εκτελέσιμο του SecDep. Στην περίπτωση που ο χρήστης μελλοντικά θέλει να αλλάξει τις τιμές των μεταβλητών ή να προσθέσει νέες, μπορεί να το κάνει αλλάζοντας τα περιεχόμενα του αρχείου \textquote{.env} -χειροκίνητα ή με την εκτέλεση της εντολής: +χειροκίνητα με έναν επεξεργαστή κειμένου ή με την εκτέλεση της εντολής: \begin{listing}[!ht] \begin{bashcode} @@ -212,7 +212,7 @@ python3 secdep.py --provider aws --create --name test-node --size t3.micro --ima IP της και η εντολή που μπορεί να εκτελέσει προκειμένου να συνδεθεί σε αυτήν χρησιμοποιώντας το πρωτόκολλο SSH. Η εντολή αυτή σχηματίζεται δυναμικά από το εργαλείο λαμβάνοντας υπόψιν την θύρα που θα χρησιμοποιηθεί (σε περίπτωση που η -εικονική μηχανή έχει σκληρυνθεί), το μονοπάτι μέχρι το κλειδί SSH που +εικονική μηχανή έχει σκληρύνει), το μονοπάτι μέχρι το κλειδί SSH που δημιουργήθηκε μαζί με την μηχανή στον ίδιο φάκελο με το εργαλείο και την διεύθυνση της. @@ -249,7 +249,7 @@ harden στην εικονική μηχανή το οποίο θα σκληρύ φάκελο με το εργαλείο. Για οποιαδήποτε παράμετρο που δεν έχει δοθεί ή έχει δοθεί λανθασμένα, θα -προτρέπεται ο χρήστης να την δώσει ξανά εως ότου ολοκληρωθεί η διαδικασία ή +προτρέπεται ο χρήστης να την δώσει ξανά έως ότου ολοκληρωθεί η διαδικασία ή ακυρωθεί από τον χρήστη. Εάν ο χρήστης δεν γνωρίζει τις διαθέσιμες επιλογές για τις παραμέτρους που @@ -269,7 +269,9 @@ python3 secdep.py --provider aws --listimages --print λίστα με τις διαθέσιμες εικόνες που μπορεί να χρησιμοποιήσει ο χρήστης για την δημιουργία εικονικών μηχανών. Έπειτα, με την επιλογή μιας από αυτές, θα εμφανιστούν πληροφορίες σχετικά με την εικόνα που επιλέχθηκε οι οποίες θα είναι -της μορφής: +της μορφής που απεικονίζεται στο \ref{lst:secdep_image_info}. + +\clearpage \begin{listing}[!ht] \begin{bashcode} @@ -280,10 +282,9 @@ python3 secdep.py --provider aws --listimages --print \vspace*{-10pt} \end{listing} -Από την παραπάνω πληροφορία, ο χρήστης χρειάζεται το αναγνωριστικό (id) της εικόνας. - -Εάν χρειάζεται πληροφορίες σχετικά με τα διαθέσιμα μεγέθη των εικονικών -μηχανών, αυτό επιτυγχάνεται με την εντολή: +Από την παραπάνω πληροφορία, ο χρήστης χρειάζεται το αναγνωριστικό (id) της +εικόνας. Εάν χρειάζεται πληροφορίες σχετικά με τα διαθέσιμα μεγέθη των +εικονικών μηχανών, αυτό επιτυγχάνεται με την εντολή: \begin{listing}[!ht] \begin{bashcode} @@ -306,11 +307,10 @@ python3 secdep.py --provider aws --listsizes --print \vspace*{-10pt} \end{listing} -Από την παραπάνω πληροφορία, το σημαντικό είναι το αναγνωριστικό (id) του μεγέθους. - -Μερικές από τις εντολές που δύναται να χρησιμοποιεί ένας χρήστης συχνά μπορεί -να είναι για την διαγραφή εικονικών μηχανών ή την εμφάνιση τους. Αυτές οι δύο -λειτουργίες υποστηρίζονται με τις παρακάτω εντολές: +Από την παραπάνω πληροφορία, το σημαντικό πάλι είναι το αναγνωριστικό (id) του +μεγέθους. Μερικές από τις εντολές που δύναται να χρησιμοποιήσει ένας χρήστης +συχνά μπορεί να είναι για την εμφάνιση εικονικών μηχανών ή την διαγραφή τους. +Αυτές οι δύο λειτουργίες υποστηρίζονται με τις παρακάτω εντολές: \begin{listing}[!ht] \begin{bashcode} @@ -328,7 +328,7 @@ python3 secdep.py --provider aws --awsregion us-east-2 --list \begin{center} \begin{figure}[!ht] \centering - \includegraphics[width = .8\textwidth]{Figures/AWS_listing/aws-instances.png} + \includegraphics[width = 1.0\textwidth]{Figures/AWS_listing/aws-instances.png} \captionof{figure}{Λίστα με τις εικονικές μηχανές που έχουν δημιουργηθεί} \label{fig:instance_list_output} \end{figure} @@ -349,7 +349,7 @@ python3 secdep.py --provider aws --awsregion us-east-2 --list \begin{bashcode} python3 secdep.py --provider aws --action delete --awsregion eu-north-1 \end{bashcode} -\caption{Εκτέλεση της παράμετρου delete του SecDep} +\caption{Εκτέλεση της παραμέτρου delete του SecDep} \label{lst:secdep_delete} \vspace*{-10pt} \end{listing} @@ -359,6 +359,25 @@ python3 secdep.py --provider aws --action delete --awsregion eu-north-1 αντικατασταθεί σε \textquote{deleteall}. Με παρόμοιο τρόπο υποστηρίζονται και εντολές για εκκίνηση, επανεκκίνηση ή διακοπή εικονικών μηχανών. +\clearpage + Πιο λεπτομερείς οδηγίες χρήσης και εγκατάστασης περιέχονται και στην σελίδα του αποθετηρίου του SecDep \footfullcite{secdep} μέσω του αρχείου -\textquote{README.md}. +\textquote{README.md}. Στο σχήμα του λογότυπου του SecDep, περιέχεται +υπερσύνδεσμος που οδηγεί στο αποθετήριο όπου και εμφανίζονται τα περιεχόμενα +του αρχείου οδηγιών. + +\begin{center} + \begin{figure}[!ht] + \centering + \href{https://git.konsthol.eu/konsthol/SecDep}{ + \includegraphics[width = 1.0\textwidth]{Figures/secdep_logo.png}} + \captionof{figure}{Λογότυπο του SecDep} + \label{fig:secdep_logo} + \end{figure} +\vspace*{-30pt} +\end{center} + +Εκεί, ο χρήστης μπορεί να βρει πληροφορίες σχετικά με την παραμετροποίηση και +των υπόλοιπων παρόχων νέφους, χρήσιμες ρυθμίσεις που καθιστούν την εκτέλεση του +SecDep πιο εύκολη, καθώς και περισσότερες οθόνες εκτέλεσης. diff --git a/Chapters/6.Experimentation.tex b/Chapters/6.Experimentation.tex index 87818bc..e51bcad 100644 --- a/Chapters/6.Experimentation.tex +++ b/Chapters/6.Experimentation.tex @@ -62,7 +62,7 @@ Lynis και το LUNAR. \item \textbf{Cyber Threat Intelligence(MITRE ATT\&CK and CAPEC)} - \item \textbf{Βιβλιοθήκες ευπαθειών όπως αυτή της Aquasecurity} + \item \textbf{Βιβλιοθήκες ευπαθειών όπως αυτή της Aqua Security} \end{itemize} @@ -254,12 +254,10 @@ https://raw.githubusercontent.com\ Ορθή πρακτική θα ήταν να γίνει έλεγχος του περιεχομένου του αρχείου πριν την εκτέλεση της εντολής αυτής για να βεβαιωθεί κανείς ότι δεν περιέχει κάποιο -κακόβουλο κώδικα. - -Στην συνέχεια, θα πρέπει να δημιουργηθεί ο φάκελος που θα περιέχει τα δεδομένα -των πηγών από όπου και θα αντλεί τις πληροφορίες ευπαθειών, καθώς και ένα -αρχείο config.toml στο οποίο θα δηλωθούν τα διαπιστευτήρια των διακομιστών που -θα αξιολογηθούν. +κακόβουλο κώδικα. Στην συνέχεια, θα πρέπει να δημιουργηθεί ο φάκελος που θα +περιέχει τα δεδομένα των πηγών από όπου και θα αντλεί τις πληροφορίες +ευπαθειών, καθώς και ένα αρχείο config.toml στο οποίο θα δηλωθούν τα +διαπιστευτήρια των διακομιστών που θα αξιολογηθούν. Αυτό επιτυγχάνεται με τις παρακάτω εντολές: @@ -330,10 +328,8 @@ ssh-keyscan -H -p <θύρα ssh> >> ~/.ssh/know Επιπροσθέτως, θα πρέπει να μεταφερθεί στον υπολογιστή που έχει εγκατεστημένο το Vuls, το ιδιωτικό κλειδί του διακομιστή (ένα αρχείο ονόματι secdep), το οποίο -δημιουργείται στον ίδιο φάκελο με το εργαλείο SecDep. - -Για την αρχικοποίηση της βάσης δεδομένων ευπαθειών του Vuls, εκτελούνται με -σειρά οι εντολές: +δημιουργείται στον ίδιο φάκελο με το εργαλείο SecDep. Για την αρχικοποίηση της +βάσης δεδομένων ευπαθειών του Vuls, εκτελούνται με σειρά οι εντολές: \begin{listing}[!ht] \begin{bashcode} @@ -441,8 +437,8 @@ vuls scan <όνομα διακομιστή> \vspace*{-10pt} \end{listing} -Αφότου έχει ολοκληρωθεί η διαδικασία αξιολόγησης, μπορούμε να εκτελέσουμε την -παρακάτω εντολή προκειμένου να παραχθεί η αναφορά σε μορφή json: +Μετά το πέρας της διαδικασίας αξιολόγησης, μπορούμε να εκτελέσουμε την παρακάτω +εντολή προκειμένου να παραχθεί η αναφορά σε μορφή json: \begin{listing}[!ht] \begin{bashcode} @@ -525,9 +521,9 @@ EOF \subsection{Εγκατάσταση και προετοιμασία του Lynis} \label{lynisInstallation} -Σε αντίθεση με το Vuls, η εγκατάσταση του Lynis και λειτουργία του Lynis είναι -πιο απλή. Εδώ τα βήματα που πρέπει να ακολουθηθούν είναι η σύνδεση στους -διακομιστές της Amazon μέσω ssh (για την οποία οι εντολή είναι έτοιμη μετά την +Σε αντίθεση με το Vuls, η εγκατάσταση του Lynis και η λειτουργία του είναι πιο +απλή. Εδώ τα βήματα που πρέπει να ακολουθηθούν είναι η σύνδεση στους +διακομιστές της Amazon μέσω ssh (για την οποία η εντολή είναι έτοιμη μετά την δημιουργία κάθε διακομιστή), η εγκατάσταση του εργαλείου μέσω git και η εκτέλεση του. Αυτά πραγματοποιούνται ως εξής: @@ -535,7 +531,7 @@ EOF \begin{bashcode} ssh -p <θύρα του διακομιστή> -i <πλήρες μονοπάτι ιδιωτικού κλειδιού ssh> secdep@ \end{bashcode} -\caption{Σύνδεση στον διακομιστή της Amazon} +\caption{Σύνδεση στο διακομιστή της Amazon} \label{lst:ssh-to-amazon-server} \vspace*{-10pt} \end{listing} @@ -579,7 +575,7 @@ cd lynis \subsection{Εγκατάσταση και προετοιμασία του LUNAR} \label{lunarInstallation} Όπως και το Lynis, το LUNAR εγκαθίσταται και εκτελείται με τον ίδιο τρόπο. -Αφότου έχει πραγματοποιηθεί η σύνδεση στον διακομιστή και έχουμε μεταβεί σε +Αφότου έχει πραγματοποιηθεί η σύνδεση στο διακομιστή και έχουμε μεταβεί σε χρήστη με διαχειριστικά δικαιώματα, πρέπει να εκτελεστούν οι εξής εντολές: \begin{listing}[!ht] @@ -611,7 +607,7 @@ cd lunar \section{Αποτελέσματα αξιολόγησης} \label{evaluationResults} -Μετά το πέρας της αξιολόγησης των δύο διακομιστών, τα αποτελέσματα που +Μετά την ολοκλήρωση της αξιολόγησης των δύο διακομιστών, τα αποτελέσματα που παρήχθησαν από τα εργαλεία αξιολόγησης αναδεικνύουν τις διαφορές στην ασφάλεια των δύο διακομιστών. Στην παρούσα ενότητα θα αναλυθούν τα αποτελέσματα του κάθε εργαλείου αξιολόγησης ξεχωριστά και έπειτα θα βγει μια συμπερασματική @@ -669,7 +665,7 @@ cd lunar διακομιστές μας, ο διακομιστής secdepawsHardened, σχετικά με τα CVEs που εντοπίστηκαν, έχει ασφαλιστεί κατά 26.615\%. -Επιπροσθέτως, με βάση τα γραφήματα που παράχθηκαν από το VulsRepo, μπορούμε να +Επιπροσθέτως, με βάση τα γραφήματα που παρήχθησαν από το VulsRepo, μπορούμε να διακρίνουμε μια άμεση πτώση των ευπαθειών με βάση την κατηγορία σοβαρότητας τους στο σχήμα \ref{fig:vuls-cvss-severity-table}. @@ -757,7 +753,7 @@ cat lynis.log | grep -i index | sed 's/^ *//g' | cut -d' ' -f4 \vspace*{-10pt} \end{listing} -Το αποτέλεσμα της εντολής \ref{lst:lynis-security-index} είναι διαφέρει προς το +Το αποτέλεσμα της εντολής \ref{lst:lynis-security-index} διαφέρει προς το καλύτερο όταν το SecDep χρησιμοποιείται με την παράμετρο σκλήρυνσης όπως δείχνουν τα αποτελέσματα: @@ -788,7 +784,7 @@ cat lynis.log | grep -i index | sed 's/^ *//g' | cut -d' ' -f4 \end{table} \end{savenotes} -H αύξηση ασφαλείας του διακομιστή ανέρχεται στο 9.23077\% και απεικονίζεται +H αύξηση ασφάλειας του διακομιστή ανέρχεται στο 9.23077\% και απεικονίζεται γραφικά στο σχήμα \ref{fig:lynis-security-index}. \begin{center} @@ -809,8 +805,7 @@ H αύξηση ασφαλείας του διακομιστή ανέρχεται προειδοποιήσεων για σημεία που ενδέχεται να χρήζουν βελτίωσης. Προκειμένου να εξάγουμε μια βαθμολογία, θα λάβουμε υπόψιν τον αριθμό των -προειδοποιήσεων, τον οποίο θα αποκτήσουμε με την εκτέλεση της παρακάτων -εντολής: +προειδοποιήσεων, τον οποίο θα αποκτήσουμε με την εκτέλεση της παρακάτω εντολής: \begin{listing}[!ht] \begin{bashcode} diff --git a/Chapters/7.Conclusions.tex b/Chapters/7.Conclusions.tex index 7d7b4a8..330d3dc 100644 --- a/Chapters/7.Conclusions.tex +++ b/Chapters/7.Conclusions.tex @@ -27,14 +27,14 @@ Με βάση τα αποτελέσματα των πειραμάτων που πραγματοποιήθηκαν στο κεφάλαιο \ref{experimentationANDresults}, μπορούμε να συμπεράνουμε ότι το εργαλείο -SecDep, είναι ικανό να δημιουργήσει εικονικές μηχανές που έχουν σκληρυνθεί σε +SecDep, είναι ικανό να δημιουργήσει εικονικές μηχανές που έχουν σκληρύνει σε ικανοποιητικό βαθμό, χωρίς περαιτέρω παρέμβαση από τον χρήστη. Μπορεί λοιπόν να αποτελέσει ένα χρήσιμο εργαλείο για την αυτοματοποιημένη δημιουργία και διαμόρφωση ενός ασφαλούς κατανεμημένου περιβάλλοντος, έτοιμο να υποδεχτεί δοχεία Docker για την στέγαση εφαρμογών μικρο-υπηρεσιών. Μιας αρχιτεκτονικής που έχει αρχίσει να αποκτά ιδιαίτερη δημοτικότητα τα τελευταία χρόνια. -Επιπλέον, το εργαλείο SecDep, μπορεί να αποτελέσει ένα χρήσιμο εργαλείο για την +Επιπλέον, το SecDep μπορεί να αποτελέσει ένα χρήσιμο εργαλείο για την εκπαίδευση σε θέματα ασφάλειας, καθώς ο χρήστης έχει την δυνατότητα να μελετήσει τον πηγαίο κώδικα του και να προσθέσει τις δικές του λειτουργίες, προκειμένου να επεκτείνει την λειτουργικότητα του. Το εργαλείο διανέμεται με @@ -45,7 +45,7 @@ SecDep, είναι ικανό να δημιουργήσει εικονικές \section{Προτάσεις για Μελλοντική Έρευνα} Παρόλο που το SecDep, είναι ένα πλήρες και λειτουργικό εργαλείο, υπάρχουν -πολλές δυνατότητες για την επέκταση του. Αρχικά, θα μπορούσε να επεκταθεί η +πολλές ευκαιρίες για την επέκταση του. Αρχικά, θα μπορούσε να επεκταθεί η λειτουργικότητα του, ώστε να υποστηρίζει και άλλους παρόχους νέφους. Αυτό βέβαια εξαρτάται άμεσα και από το εύρος της υποστήριξης συγκεκριμένων συναρτήσεων από την βιβλιοθήκη libcloud. Επιπλέον, θα μπορούσε να αλλοιωθεί με @@ -59,8 +59,9 @@ SecDep, είναι ικανό να δημιουργήσει εικονικές να είναι η επιλογή του χρήστη για εφαρμογή συγκεκριμένων ρυθμίσεων ασφαλείας. Επίσης, θα μπορούσε να χωριστεί σε δύο ανεξάρτητα εκτελέσιμα αρχεία, το ένα υπεύθυνο για την σκλήρυνση του συστήματος και το άλλο για την εγκατάσταση και -σκλήρυνση του δαίμονα Docker. Με αυτόν τον τρόπο, ο χρήστης θα μπορούσε να -επιλέξει να εγκαταστήσει τον δαίμονα Docker σε ένα σύστημα που έχει ήδη -σκληρυνθεί, χωρίς να χρειάζεται να εκτελέσει το πρώτο εκτελέσιμο αρχείο. Τέλος, -θα μπορούσε να βελτιωθεί η διαδικασία σκλήρυνσης. Τα αποτελέσματα είναι ήδη -αρκετά ικανοποιητικά, ωστόσο πάντα υπάρχουν περιθώρια βελτίωσης. +σκλήρυνση του δαίμονα του Docker. Με αυτόν τον τρόπο, ο χρήστης θα μπορούσε να +επιλέξει να εγκαταστήσει μια σκληρυμένη έκδοση του Docker σε ένα σύστημα που +έχει ήδη σκληρύνει, χωρίς να χρειάζεται να χρησιμοποιήσει το πρώτο εκτελέσιμο +αρχείο. Τέλος, θα μπορούσε να βελτιωθεί η διαδικασία σκλήρυνσης. Τα +αποτελέσματα είναι ήδη αρκετά ικανοποιητικά, ωστόσο πάντα υπάρχουν περιθώρια +βελτίωσης. diff --git a/Figures/secdep_logo.png b/Figures/secdep_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..51ac6c8becc207c65a18f34319e0dd1160888a62 GIT binary patch literal 150787 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%0A) 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 literal 0 HcmV?d00001