git + ipynb = :(
This commit is contained in:
@@ -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 \\
|
||||
|
||||
@@ -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.
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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}, αναφερόμαστε στην ανάπτυξη του προτεινόμενου
|
||||
εργαλείου και τα παράγωγά της (απαιτήσεις, σχεδιαστικά μοντέλα, κώδικα
|
||||
|
||||
@@ -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 να ανιχνεύονται
|
||||
εγκαίρως και να απορρίπτονται.
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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 πιο εύκολη, καθώς και περισσότερες οθόνες εκτέλεσης.
|
||||
|
||||
@@ -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> <ip του διακομιστή> >> ~/.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@<ip του διακομιστή>
|
||||
\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}
|
||||
|
||||
@@ -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 σε ένα σύστημα που
|
||||
έχει ήδη σκληρύνει, χωρίς να χρειάζεται να χρησιμοποιήσει το πρώτο εκτελέσιμο
|
||||
αρχείο. Τέλος, θα μπορούσε να βελτιωθεί η διαδικασία σκλήρυνσης. Τα
|
||||
αποτελέσματα είναι ήδη αρκετά ικανοποιητικά, ωστόσο πάντα υπάρχουν περιθώρια
|
||||
βελτίωσης.
|
||||
|
||||
BIN
Figures/secdep_logo.png
Normal file
BIN
Figures/secdep_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 147 KiB |
Reference in New Issue
Block a user