QuickFix.

This commit is contained in:
2024-02-28 00:59:14 +02:00
parent e6fa5928c5
commit ef5cb33f23
25 changed files with 2143 additions and 1398 deletions

View File

@@ -27,8 +27,10 @@
\textbf{CVRF} & \textbf{C}ommon \textbf{V}ulnerability \textbf{R}eporting \textbf{F}ramework \\ \textbf{CVRF} & \textbf{C}ommon \textbf{V}ulnerability \textbf{R}eporting \textbf{F}ramework \\
\textbf{CWE} & \textbf{C}ommon \textbf{W}eakness \textbf{E}numeration \\ \textbf{CWE} & \textbf{C}ommon \textbf{W}eakness \textbf{E}numeration \\
\textbf{DDoS} & \textbf{D}istributed \textbf{D}enial \textbf{o}f \textbf{S}ervice \\
\textbf{DevOps} & \textbf{Dev}elopment \textbf{Op}eration\textbf{s} \\ \textbf{DevOps} & \textbf{Dev}elopment \textbf{Op}eration\textbf{s} \\
\textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\ \textbf{DNS} & \textbf{D}omain \textbf{N}ame \textbf{S}ystem \\
\textbf{DoS} & \textbf{D}enial \textbf{o}f \textbf{S}ervice \\
\textbf{EBS} & \textbf{E}lastic \textbf{B}lock \textbf{S}tore \\ \textbf{EBS} & \textbf{E}lastic \textbf{B}lock \textbf{S}tore \\
\textbf{EC2} & \textbf{E}lastic \textbf{C}ompute \textbf{C}loud \\ \textbf{EC2} & \textbf{E}lastic \textbf{C}ompute \textbf{C}loud \\
@@ -44,6 +46,7 @@
\textbf{IP} & \textbf{I}nternet \textbf{P}rotocol \\ \textbf{IP} & \textbf{I}nternet \textbf{P}rotocol \\
\textbf{IPC} & \textbf{I}nter \textbf{P}rocess \textbf{C}ommunication \\ \textbf{IPC} & \textbf{I}nter \textbf{P}rocess \textbf{C}ommunication \\
\textbf{IPv4} & \textbf{I}nternet \textbf{P}rotocol \textbf{v}ersion \textbf{4} \\ \textbf{IPv4} & \textbf{I}nternet \textbf{P}rotocol \textbf{v}ersion \textbf{4} \\
\textbf{IPv6} & \textbf{I}nternet \textbf{P}rotocol \textbf{v}ersion \textbf{6} \\
\textbf{KVM} & \textbf{K}ernel-based \textbf{V}irtual \textbf{M}achine \\ \textbf{KVM} & \textbf{K}ernel-based \textbf{V}irtual \textbf{M}achine \\
@@ -82,10 +85,12 @@
\textbf{VBS} & \textbf{V}irtualization-\textbf{B}ased \textbf{S}ecurity \\ \textbf{VBS} & \textbf{V}irtualization-\textbf{B}ased \textbf{S}ecurity \\
\textbf{VM} & \textbf{V}irtual \textbf{M}achine \\ \textbf{VM} & \textbf{V}irtual \textbf{M}achine \\
\textbf{VMBR} & \textbf{V}irtual \textbf{M}achine \textbf{B}ased \textbf{R}ootkits \\
\textbf{VMM} & \textbf{V}irtual \textbf{M}achine \textbf{M}onitor \\ \textbf{VMM} & \textbf{V}irtual \textbf{M}achine \textbf{M}onitor \\
\textbf{Vuls} & \textbf{VUL}nerability \textbf{S}canner \\ \textbf{Vuls} & \textbf{VUL}nerability \textbf{S}canner \\
\textbf{XSS} & \textbf{C}ross \textbf{S}ite \textbf{S}cripting \\ \textbf{XML} & E\textbf{x}tensive \textbf{M}arkup \textbf{L}anguage \\
\textbf{XSS} & Cross (\textbf{X}) \textbf{S}ite \textbf{S}cripting \\
\textbf{ΛΣ} & \textbf{Λ}ειτουργικό \textbf{Σ}ύστημα \\ \textbf{ΛΣ} & \textbf{Λ}ειτουργικό \textbf{Σ}ύστημα \\
\textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφοριών \\ \textbf{ΤΠ} & \textbf{Τ}εχνολογίες \textbf{Π}ληροφοριών \\

View File

@@ -578,7 +578,7 @@
@article{yasrab2018mitigating, @article{yasrab2018mitigating,
title = {Mitigating docker security issues}, title = {Mitigating docker security issues},
author = {Yasrab, Robail}, author = {Yasrab, Robail},
year = {2018}, year = {2023},
journal = {arXiv preprint arXiv:1804.05039}, journal = {arXiv preprint arXiv:1804.05039},
urldate = {2023-07-29}, urldate = {2023-07-29},
} }
@@ -741,6 +741,109 @@
urldate = {2023-08-07}, urldate = {2023-08-07},
} }
@article{litchfield2016virtualization,
title={Virtualization technology: Cross-vm cache side channel attacks make it vulnerable},
author={Litchfield, Alan and Shahzad, Abid},
journal={arXiv preprint arXiv:1606.01356},
year={2016},
urldate = {2024-02-04},
}
@inproceedings{zhang2012crossvmkeys,
author = {Zhang, Yinqian and Juels, Ari and Reiter, Michael K. and Ristenpart, Thomas},
title = {Cross-VM side channels and their use to extract private keys},
year = {2012},
isbn = {9781450316514},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/2382196.2382230},
doi = {10.1145/2382196.2382230},
booktitle = {Proceedings of the 2012 ACM Conference on Computer and Communications Security},
pages = {305316},
numpages = {12},
keywords = {cache-based side channel, cross-vm side channel, side-channel attack},
location = {Raleigh, North Carolina, USA},
series = {CCS '12},
urldate = {2024-02-04},
}
@inproceedings{vmrollbackattack,
author = {Xia, Yubin and Liu, Yutao and Chen, Haibo and Zang, Binyu},
year = {2012},
month = {06},
pages = {1-5},
title = {Defending against VM rollback attack},
isbn = {978-1-4673-2264-5},
doi = {10.1109/DSNW.2012.6264690},
urldate = {2024-02-04},
}
@online{technopediaVmHopping,
title = {Virtual Machine Hyper Jumping},
author = {Margaret Rouse},
year = {2015},
url = {https://www.techopedia.com/definition/30921/virtual-machine-hyper-jumping-vm-jumping},
urldate = {2024-02-04},
}
@article{abusaimeh2020virtual,
title = {Virtual machine escape in cloud computing services},
author = {Abusaimeh, Hesham},
journal = {International Journal of Advanced Computer Science and Applications},
volume = {11},
number = {7},
year = {2020},
publisher = {Science and Information (SAI) Organization Limited},
urldate = {2024-02-04},
}
@online{containersVsVMs,
title = {A Complete Overview of Docker Architecture},
author = {Winnie Ondara},
year = {2022},
url = {https://www.cherryservers.com/blog/a-complete-overview-of-docker-architecture},
urldate = {2024-02-08},
}
@online{containerRuntime,
title = {What are container runtimes?},
author = {Nived Velayudhan},
year = {2021},
url = {https://opensource.com/article/21/9/container-runtimes},
urldate = {2024-02-11},
}
@online{kernexpcgroup,
title = {New Linux Kernel cgroups Vulnerability Could Let Attackers Escape Container},
author = {Ravie Lakshmanan},
year = {2022},
url = {https://thehackernews.com/2022/03/new-linux-kernel-cgroups-vulnerability.html},
urldate = {2024-02-11},
}
@online{dirtyPipe,
title = {Escaping containers using the Dirty Pipe vulnerability},
author = {Eric Mountain and Tommy McCormick and Christophe Tafani-Dereeper and Frederic Baguelin},
year = {2022},
url = {https://securitylabs.datadoghq.com/articles/dirty-pipe-container-escape-poc/},
urldate = {2024-02-11},
}
@online{dockermitm,
title = {Top Docker Security Vulnerabilities, Best Practices, \& Insights},
author = {Fortra's Alert Logic},
year = {2020},
url = {https://www.alertlogic.com/blog/top-docker-security-vulnerabilities-best-practices-insights/},
urldate = {2024-02-11},
}
@online{arpdocker,
title = {ARP Spoofing},
author = {Imperva},
url = {https://www.imperva.com/learn/application-security/arp-spoofing/},
urldate = {2024-02-12},
}
@online{lynis, @online{lynis,
title = {Lynis}, title = {Lynis},
author = {CISOfy}, author = {CISOfy},
@@ -748,6 +851,24 @@
} }
urldate = {2023-12-06}, urldate = {2023-12-06},
@online{docker-rootless-setup,
title = {Docker-Rootless Full Setup},
author = {zerint},
url = {https://github.com/zerint/docker-rootless-setup},
}
@online{docksec,
title = {docksec},
author = {Ted LeRoy},
url = {https://github.com/TedLeRoy/docksec},
}
@online{docker-bench-security,
title = {Docker Bench for Security},
author = {Docker},
url = {https://github.com/docker/docker-bench-security},
}
@online{lunar, @online{lunar,
title = {Lunar}, title = {Lunar},
author = {Lateral Blast}, author = {Lateral Blast},
@@ -783,6 +904,12 @@
} }
urldate = {2023-11-10}, urldate = {2023-11-10},
@online{portainer,
title = {Portainer},
author = {Portainer},
url = {https://www.portainer.io/},
}
@online{secdep, @online{secdep,
title = {SecDep}, title = {SecDep},
author = {konsthol}, author = {konsthol},
@@ -1052,6 +1179,48 @@
url = {https://github.com/rkt/rkt}, url = {https://github.com/rkt/rkt},
} }
@online{snyk,
title = {Snyk},
author = {Snyk},
url = {https://snyk.io/},
}
@online{trivy,
title = {Trivy},
author = {Aqua Security},
url = {https://aquasecurity.github.io/trivy/v0.49/},
}
@online{dotenv,
title = {python-dotenv},
author = {Saurabh Kumar},
url = {https://github.com/theskumar/python-dotenv},
}
@online{rich,
title = {rich},
author = {Textualize},
url = {https://github.com/Textualize/rich},
}
@online{shtab,
title = {shtab},
author = {Iterative},
url = {https://github.com/iterative/shtab},
}
@online{paramiko,
title = {paramiko},
author = {paramiko},
url = {https://github.com/paramiko/paramiko},
}
@online{dockerCompose,
title = {Docker Compose},
author = {Docker},
url = {https://github.com/docker/compose},
}
inproceedings{manu2016study, inproceedings{manu2016study,
author = {Manu, A.R. and Patel, Jitendra Kumar and Akhtar, Shakil and Agrawal, V.K. and Subramanya Murthy, K.N. Bala}, author = {Manu, A.R. and Patel, Jitendra Kumar and Akhtar, Shakil and Agrawal, V.K. and Subramanya Murthy, K.N. Bala},
booktitle = {2016 International Conference on Circuit, Power and Computing Technologies (ICCPCT)}, booktitle = {2016 International Conference on Circuit, Power and Computing Technologies (ICCPCT)},

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -2,114 +2,26 @@
\noindent Στην παρούσα ενότητα θα αναλυθούν οι τεχνολογίες που χρησιμοποιήθηκαν \noindent Στην παρούσα ενότητα θα αναλυθούν οι τεχνολογίες που χρησιμοποιήθηκαν
για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξή για την υλοποίηση του συστήματος, οι αποφάσεις που πάρθηκαν κατά την ανάπτυξή
του και οι σχεδιαστικές επιλογές που έγιναν. Επίσης, θα πραγματοποιηθεί του και οι σχεδιαστικές επιλογές που πραγματοποιήθηκαν. Επίσης, θα αναλυθεί η
απεικόνιση των συσχετίσεων μεταξύ των συστατικών του συστήματος και θα αναλυθεί αρχιτεκτονική του συστήματος και θα επεξηγηθούν οι λειτουργίες των συστατικών
περαιτέρω η λειτουργία τους. του.
\section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions} \section{Μοντέλο ανάπτυξης}
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που Για την ανάπτυξη του SecDep, ακολουθήθηκε το μοντέλο καταρράκτη. Στο μοντέλο
θέσαμε στην Ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για αυτό, κάθε στάδιο της δραστηριότητας ανάπτυξης εκτελείται σειριακά. Δηλαδή, για
την επικοινωνία με διάφορους παρόχους νέφους, επιλέχθηκε να γίνει χρήση της την μετάβαση σε κάθε επόμενο στάδιο, απαιτείται η επιτυχής ολοκλήρωση του
βιβλιοθήκης libcloud \footfullcite{libcloud}. Μια από τις δύο επιλογές προηγούμενου. Έτσι και εδώ, ξεκινάμε με την ανάλυση απαιτήσεων, έπειτα
βιβλιοθηκών της Apache \footfullcite{apache} για την επικοινωνία με παρόχους προχωράμε στη σχεδίαση του συστήματος και τέλος φτάνουμε στην υλοποίησή του. Η
νέφους. Συγκριτικά με την βιβλιοθήκη jclouds \footfullcite{jclouds}, η οποία επίδειξη της τελικής μορφής του εργαλείου καλύπτεται στο Κεφάλαιο
σχεδιάστηκε για την γλώσσα Java \footfullcite{java}, η libcloud είναι πιο απλή \ref{installationANDShowcase}, ενώ η αποτίμηση των αποτελεσμάτων εκτέλεσής του,
στην χρήση, αφού είναι σχεδιασμένη για την γλώσσα Python \footfullcite{python}. στο Κεφάλαιο \ref{experimentationANDresults}.
Επιπροσθέτως, η libcloud είναι πιο διαδεδομένη και η γλώσσα python αποτελεί μια
πιο ευέλικτη επιλογή για τις ανάγκες του εργαλείου.
Η ανάγκη για μια βιβλιοθήκη που θα λειτουργεί ως μεσάζοντας μεταξύ του
εργαλείου και των παρόχων νέφους, οφείλεται στο γεγονός ότι οι πάροχοι νέφους
δεν διαθέτουν ένα κοινό API για την διαχείριση των υποδομών τους. Απεναντίας, ο
καθένας από αυτούς διαθέτει το δικό του API, το οποίο χρησιμοποιείται έμμεσα
μέσω του πίνακα ελέγχου του, που βρίσκεται στην ιστοσελίδα του, ενός δικού του
εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο ίδιος. Η
libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το οποίο
χρησιμοποιώντας τις ίδιες συναρτήσεις, επιχειρεί να προσκομίσει ίδια
αποτελέσματα ανεξαρτήτως του παρόχου νέφους που στοχεύει.
\clearpage
Παρ' όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την
ενοποίηση αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν
να εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο που προτείνει η
παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών
\textquote{Compute} της βιβλιοθήκης. Στην αρχική σελίδα της, αναφέρεται
υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα τεκμηρίωσης
\cite{libcloudProviders} για τις λειτουργίες \textquote{Compute}, αναφέρονται
48 πάροχοι σε έναν πίνακα ο οποίος αναγράφει την υποστήριξη ή απουσία αυτής,
διάφορων συναρτήσεων εικονικών μηχανών. Στις συναρτήσεις αυτές περιλαμβάνονται
η δημιουργία εικονικών μηχανών, η εκκίνηση, η παύση, η διαγραφή τους και εν
γένει όσες λειτουργίες είναι απαραίτητες για την ολοκληρωμένη λειτουργία του
εργαλείου. Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και τις 9
συναρτήσεις. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για λόγους
όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της
λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις
υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους.
Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν
υποστηρίζοντας όλες τις πιθανές λειτουργίες διαχείρισης εικονικών μηχανών.
Τέλος, από αυτούς τους 5, επιλέχθηκαν για επίσημη υποστήριξη από το εργαλείο
που προτείνεται στην παρούσα διπλωματική εργασία, τα τρία μεγαλύτερα ονόματα
του χώρου, οι Amazon, Google και Microsoft. Οι άλλοι δύο είτε δεν παρείχαν
δοκιμαστική περίοδο των υπηρεσιών τους, είτε δεν υπήρχε εμπιστοσύνη ως προς την
ποιότητα των υπηρεσιών αυτών.
Παρακάτω θα διαπιστώσουμε πως ακόμα και με την χρήση της βιβλιοθήκης libcloud
και την επίσημη υποστήριξη όλων των λειτουργιών για κάθε πάροχο, υπήρχε η
ανάγκη χρήσης της επίσημης βιβλιοθήκης της Azure για την δημιουργία Resource
Group \footfullcite{azure-mgmt-resource} και Virtual Network
\footfullcite{azure-mgmt-network} διότι αυτές οι λειτουργίες δεν υποστηρίζονται
μέσω της libcloud. Επιπροσθέτως, δίχως την υποστήριξη των λειτουργιών αυτών, ο
χρήστης θα ήταν υποχρεωμένος να δημιουργεί αυτούς τους πόρους χειροκίνητα ή να
είναι περιορισμένος μονάχα σε μια γεωγραφική τοποθεσία. Οι δύο τελευταίες
επιλογές πάνε ενάντια σε έναν από τους βασικότερους στόχους του εργαλείου. Την
ομοιόμορφη λειτουργία για κάθε πάροχο νέφους που υποστηρίζεται.
\clearpage
Πέρα από την απόφαση για την χρήση της libcloud και την γλώσσα προγραμματισμού
Python, πάρθηκε επίσης η απόφαση για την υποστήριξη των 6 δημοφιλέστερων
επιλογών για λειτουργικά συστήματα Linux σε περιβάλλοντα διακομιστών. Οι
διανομές αυτές υποστηρίζονται και για τους 3 παρόχους νέφους και κάθε μια από
αυτές περιλαμβάνει διαφορετικές εκδόσεις της κάθε διανομής. Αυτές είναι οι εξής
για κάθε πάροχο:
\begin{savenotes}
\selectfont
\begin{table}[!ht]
\caption{Υποστηριζόμενες εκδόσεις διανομών για κάθε πάροχο}
\renewcommand{\arraystretch}{1.5}
\centering
\textgreek{\begin{tabular}{lc|c|c|c|}
\cline{3-5}
& & \multicolumn{3}{c|}{Πάροχοι} \\ \cline{3-5}
& & AWS & Azure & GCE \\ \hline
\multicolumn{1}{|c|}{\multirow{6}{*}{\rotatebox{90}{Διανομές}}} & Ubuntu \footfullcite{ubuntu} & 22.04, 22.10 & 22.04, 22.10 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & Debian \footfullcite{debian} & 10, 11 & 10, 11 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & CentOS \footfullcite{centos} & 7, 8, 9 & 8.4, 8.5 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & Fedora \footfullcite{fedora} & 37 & 36, 37 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & Red Hat Enterprise Linux \footfullcite{redhat} & 7.9, 8.6, 9 & 8.6, 9.1 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & openSUSE Leap \footfullcite{opensuse} & 15.3, 15.4 & 15.3, 15.4 & Όλες \\ \hline
\end{tabular}}
\label{table:supportedDistributions}
\renewcommand{\arraystretch}{1}
\end{table}
\end{savenotes}
Ο λόγος που οι εκδόσεις είναι συγκεκριμένες για τους παρόχους AWS και Azure,
είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεών τους είναι
υπερβολικά μεγάλος και κατά την εκτέλεση της λειτουργίας δημιουργίας λίστας
τους ή κατά τον έλεγχο της ορθότητας δεδομένων που εισάγει ο χρήστης, το
πρόγραμμα θα καθυστερούσε σε τεράστιο βαθμό να ολοκληρωθεί.
\clearpage
\section{Απαιτήσεις από το εργαλείο} \label{toolRequirements} \section{Απαιτήσεις από το εργαλείο} \label{toolRequirements}
Κατά την ανάπτυξη του εργαλείου, έγινε μια προσπάθεια να καλυφθούν ορισμένες Κατά την ανάπτυξη του εργαλείου, έγινε μια προσπάθεια να καλυφθούν ορισμένες
βασικές απαιτήσεις που θα έπρεπε να ικανοποιεί. Όπως όλα τα εργαλεία, έτσι και βασικές απαιτήσεις που θα έπρεπε αυτό να ικανοποιεί. Όπως όλα τα εργαλεία, έτσι
αυτό έχει έναν σκοπό να εκπληρώσει. Ο σκοπός αυτός είναι η διευκόλυνση του και αυτό έχει έναν σκοπό να εκπληρώσει. Ο σκοπός αυτός είναι η διευκόλυνση του
χρήστη ή ενός οργανισμού, στην εγκατάσταση και διαμόρφωση με αυτοματοποιημένο χρήστη ή ενός οργανισμού, στην εγκατάσταση και διαμόρφωση με αυτοματοποιημένο
τρόπο ενός ασφαλούς, κατανεμημένου περιβάλλοντος για την εγκατάσταση και τρόπο ενός ασφαλούς, κατανεμημένου περιβάλλοντος για την εγκατάσταση και
λειτουργία μιας εφαρμογής μικρο-υπηρεσιών. Για να γίνει αυτό πραγματικότητα, λειτουργία μιας εφαρμογής μικρο-υπηρεσιών. Για να γίνει αυτό πραγματικότητα,
@@ -119,86 +31,87 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\begin{itemize} \begin{itemize}
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την χρήση των 3 μεγαλύτερων \item Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την λειτουργία
ονομάτων στον κλάδο της νεφο-υπολογιστικής} εμφάνισης λίστας των διαθέσιμων μεγεθών εικονικής μηχανής
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την χρήση των 6 \item Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την λειτουργία
δημοφιλέστερων διανομών για περιβάλλον διακομιστή} εμφάνισης λίστας των διαθέσιμων τοποθεσιών
\item \textbf{Το εργαλείο πρέπει να λειτουργεί μέσω της γραμμής εντολών \item Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την λειτουργία
ώστε να μπορεί να αυτοματοποιηθεί περαιτέρω η εκτέλεση των εντολών του} εμφάνισης λίστας των διαθέσιμων διανομών
\item \textbf{Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την \item Το εργαλείο πρέπει για κάθε εντολή που επιδέχεται παραμέτρους, να
λειτουργία εμφάνισης λίστας των διαθέσιμων μεγεθών εικονικής μηχανής} ρωτάει τον χρήστη για κάθε παράμετρο που δεν δόθηκε
\item \textbf{Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την \item Το εργαλείο πρέπει να ελέγχει την εγκυρότητα κάθε παραμέτρου που
λειτουργία εμφάνισης λίστας των διαθέσιμων τοποθεσιών} δίνεται από τον χρήστη
\item \textbf{Το εργαλείο πρέπει για κάθε πάροχο να υποστηρίζει την \item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία δημιουργίας
λειτουργία εμφάνισης λίστας των διαθέσιμων διανομών} εικονικής μηχανής
\item \textbf{Το εργαλείο πρέπει για κάθε εντολή που επιδέχεται \item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία παύσης εικονικής
παραμέτρους, να ρωτάει τον χρήστη για κάθε παράμετρο που δεν δόθηκε} μηχανής
\item \textbf{Το εργαλείο πρέπει να ελέγχει την εγκυρότητα κάθε παραμέτρου \item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εκκίνησης εικονικής
που δίνεται από τον χρήστη} μηχανής
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία δημιουργίας \item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία επανεκκίνησης
εικονικής μηχανής} εικονικής μηχανής
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία παύσης \item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία διαγραφής εικονικής
εικονικής μηχανής} μηχανής
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εκκίνησης \item Το εργαλείο πρέπει να υποστηρίζει την σύνδεση με SSH ακόμα και χωρίς
εικονικής μηχανής} να διαθέτει ο χρήστης πελάτη SSH
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία \item Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εμφάνισης όλων των
επανεκκίνησης εικονικής μηχανής} εικονικών μηχανών που διαχειρίζεται
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία διαγραφής \item Το εργαλείο πρέπει να εμφανίζει μηνύματα λάθους σε περίπτωση που κάτι
εικονικής μηχανής} πάει στραβά κατά την εκτέλεση
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την σύνδεση με SSH ακόμα \item Το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση του
και χωρίς να διαθέτει ο χρήστης πελάτη SSH} αρχείου ρυθμίσεών του
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την λειτουργία εμφάνισης \item Το εργαλείο πρέπει να υποστηρίζει την εκτέλεση εξωτερικού εκτελέσιμου
όλων των εικονικών μηχανών που διαχειρίζεται} αρχείου στις εικονικές μηχανές με σκοπό την σκλήρυνσή τους
\item \textbf{Το εργαλείο πρέπει να εμφανίζει μηνύματα λάθους σε περίπτωση \item Το εργαλείο πρέπει να εγκαθιστά και να σκληραίνει και το Docker πέρα
που κάτι πάει στραβά κατά την εκτέλεση} από το λειτουργικό σύστημα
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την διαδραστική διαμόρφωση \item Το εργαλείο θα ενημερώνει περιοδικά τα πακέτα της εικονικής μηχανής
του αρχείου ρυθμίσεων του} και θα κλείνει αχρησιμοποίητες θύρες
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εκτέλεση εξωτερικού \item Το εργαλείο πρέπει να υποστηρίζει την εγκατάσταση δοχείων στις
εκτελέσιμου αρχείου στις εικονικές μηχανές με σκοπό την σκλήρυνσή τους} εικονικές μηχανές που δημιουργεί, κατά την διάρκεια της σκλήρυνσής
τους, μέσω ενός αρχείου docker-compose.yml που θα βρίσκεται στον ίδιο
φάκελο με το εκτελέσιμο αρχείο του
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την εγκατάσταση δοχείων \item Το εργαλείο πρέπει να μπορεί να εγκαθιστά δοχεία στις εικονικές
στις εικονικές μηχανές που δημιουργεί, κατά την διάρκεια της μηχανές, κατά την διάρκεια σκλήρυνσής τους, μέσω παραμέτρων που έχει
σκλήρυνσής τους, μέσω ενός αρχείου docker-compose.yml που θα εισάγει ο χρήστης
βρίσκεται στον ίδιο φάκελο με το εκτελέσιμο αρχείο του}
\item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης όλων των \item Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης όλων των
διαθέσιμων εντολών του} διαθέσιμων εντολών του
\item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης \item Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης συμπλήρωσης
συμπλήρωσης εντολών και για τα 3 πιο δημοφιλή κελύφη εντολών} εντολών και για τα 3 πιο δημοφιλή κελύφη εντολών (Bash, Zsh, tcsh)
\item \textbf{Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης της \item Το εργαλείο πρέπει να διαθέτει λειτουργία εμφάνισης της έκδοσής του
έκδοσης του}
\item \textbf{Το εργαλείο πρέπει να διαθέτει παράμετρο για την προσπέραση \item Το εργαλείο πρέπει να διαθέτει παράμετρο για την προσπέραση
του βήματος επιβεβαίωσης κατά την δημιουργία εικονικών μηχανών} (bypassing) του βήματος επιβεβαίωσης κατά την δημιουργία εικονικών
μηχανών
\item \textbf{Το εργαλείο πρέπει να διαθέτει μηχανισμό συγκεκριμενοποίησης \item Το εργαλείο πρέπει να διαθέτει μηχανισμό συγκεκριμενοποίησης περιοχής
περιοχής για τον πάροχο AWS} για τον πάροχο AWS
\item \textbf{Το εργαλείο πρέπει να διαθέτει μηχανισμό επιλογής θύρας για \item Το εργαλείο πρέπει να διαθέτει μηχανισμό επιλογής θύρας για την
την λειτουργία σύνδεσης μέσω SSH} λειτουργία σύνδεσης μέσω SSH
\item \textbf{Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα \item Το εργαλείο πρέπει να υποστηρίζει την αρχικοποίηση μονάχα ενός
ενός παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους παρόχου δίχως την συμπλήρωση κενών πεδίων για τους υπόλοιπους από τον
από τον χρήστη} χρήστη
\end{itemize} \end{itemize}
@@ -206,36 +119,39 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\begin{itemize} \begin{itemize}
\item \textbf{Το εργαλείο πρέπει να είναι εύκολο στην χρήση για έναν χρήστη \item Το εργαλείο πρέπει να υποστηρίζει την χρήση των 3 μεγαλύτερων
που έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν} ονομάτων στον κλάδο της νεφο-υπολογιστικής (Amazon, Google, Microsoft)
\item \textbf{Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις \item Το εργαλείο πρέπει να υποστηρίζει την χρήση των 6 δημοφιλέστερων
ρυθμίσεις του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο διανομών για περιβάλλον διακομιστή (Debian, Ubuntu, Red Hat Enterprise
του} Linux, Fedora, CentOS, openSUSE Leap)
\item \textbf{Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων IP των \item Το εργαλείο πρέπει να λειτουργεί μέσω της γραμμής εντολών ώστε να
εικονικών μηχανών που δημιουργεί ώστε να μπορούν να διαμορφωθούν μπορεί να αυτοματοποιηθεί περαιτέρω η εκτέλεση των εντολών του
περαιτέρω εάν ο χρήστης επιθυμεί να χρησιμοποιήσει άλλα προγράμματα
όπως το Ansible}
\item \textbf{Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να \item Το εργαλείο πρέπει να είναι εύκολο στην χρήση για έναν χρήστη που
μπορεί ο χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις έχει χρησιμοποιήσει προγράμματα γραμμής εντολών στο παρελθόν
ανάγκες του}
\item \textbf{Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε περίπτωση που \item Το εργαλείο θα πρέπει να είναι αξιόπιστο, δηλαδή κάθε εκτέλεση να
δεν υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο αρχείο του} επιφέρει τα αναμενόμενα αποτελέσματα
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να \item Το εργαλείο πρέπει να δημιουργεί ξεχωριστό αρχείο για τις ρυθμίσεις
εγκαθιστά και να σκληραίνει και το Docker πέρα από το λειτουργικό του στον ίδιο φάκελο που βρίσκεται και το εκτελέσιμο αρχείο του
σύστημα}
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να \item Το εργαλείο πρέπει να κρατάει αρχείο των διευθύνσεων IP των εικονικών
δημιουργεί στην εικονική μηχανή δύο επιπλέον εκτελέσιμα αρχεία για μηχανών που δημιουργεί ώστε να μπορούν να διαμορφωθούν περαιτέρω εάν ο
περιοδική ενημέρωση των πακέτων και κλείσιμο αχρησιμοποίητων θυρών} χρήστης επιθυμεί να χρησιμοποιήσει άλλα προγράμματα, όπως το Ansible
\item \textbf{Το δεύτερο εκτελέσιμο αρχείο του εργαλείου πρέπει να \item Το εργαλείο πρέπει να διαθέτει ένα μοτίβο εντολών που να μπορεί ο
εγκαθιστά προγράμματα για την περαιτέρω σκλήρυνση του Docker και την χρήστης να καταλαβαίνει και να διαμορφώνει ανάλογα με τις ανάγκες του
διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων}
\item Το εργαλείο πρέπει να δημιουργεί κλειδιά SSH σε περίπτωση που δεν
υπάρχουν, στον ίδιο φάκελο με το εκτελέσιμο αρχείο του
\item Το εργαλείο θα πρέπει να εγκαθιστά τις υπηρεσίες watchtower και
portainer \footfullcite{portainer} για την περαιτέρω σκλήρυνση του
Docker και την διευκόλυνση του χρήστη κατά την εγκατάσταση δοχείων
αντίστοιχα
\end{itemize} \end{itemize}
@@ -251,14 +167,15 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\ref{fig:useCaseDiagram} δημιουργήθηκε με την βοήθεια του εργαλείου \ref{fig:useCaseDiagram} δημιουργήθηκε με την βοήθεια του εργαλείου
\textquote{yuml} \footfullcite{yuml}. Επιπλέον, με το εργαλείο \textquote{yuml} \footfullcite{yuml}. Επιπλέον, με το εργαλείο
\textquote{mermaid} \footfullcite{mermaid}, δημιουργήθηκε ένα διάγραμμα ροής \textquote{mermaid} \footfullcite{mermaid}, δημιουργήθηκε ένα διάγραμμα ροής
για το SecDep που απεικονίζεται στο Σχήμα \ref{fig:flowchartDiagram}. Το (flowchart) για το SecDep που απεικονίζεται στο Σχήμα
διάγραμμα ροής, απεικονίζει την ροή των εντολών που μπορεί να επιλεγούν από τον \ref{fig:flowchartDiagram}. Το διάγραμμα ροής αυτό, απεικονίζει την ροή των
χρήστη κατά την εκτέλεση του προγράμματος. εντολών που μπορεί να επιλεγούν από τον χρήστη κατά την εκτέλεση του
προγράμματος.
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = 0.9\textwidth]{Figures/Diagrams/secdep-use-case-diagram.jpg} \includegraphics[width = 0.8\textwidth]{Figures/Diagrams/secdep-use-case-diagram.jpg}
\captionof{figure}{Διάγραμμα περιπτώσεων χρήσης} \captionof{figure}{Διάγραμμα περιπτώσεων χρήσης}
\label{fig:useCaseDiagram} \label{fig:useCaseDiagram}
\end{figure} \end{figure}
@@ -275,8 +192,8 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = 1.0\textwidth]{Figures/Diagrams/secdep-flowchart-diagram.png} \includegraphics[width = 1.4\textwidth]{Figures/Diagrams/flowchart/1secdep-flowchart-diagram.png}
\captionof{figure}{Διάγραμμα ροής} \captionof{figure}{Διάγραμμα ροής - Γενικό}
\label{fig:flowchartDiagram} \label{fig:flowchartDiagram}
\end{figure} \end{figure}
\vspace*{-30pt} \vspace*{-30pt}
@@ -284,20 +201,140 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\end{landscape} \end{landscape}
\begin{landscape}
\thispagestyle{empty}
\noindent Λόγω της πολυπλοκότητας του Σχήματος \ref{fig:flowchartDiagram}, αυτό
διασπάστηκε σε 6 ξεχωριστά διαγράμματα ροής, για τις εξής λειτουργίες του
SecDep:
\begin{itemize}
\item Εκτέλεση απλών μεθόδων
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 1.3\textwidth]{Figures/Diagrams/flowchart/2secdep-flowchart-diagramSimpleFunctions.png}
\captionof{figure}{Διάγραμμα ροής - Απλές λειτουργίες}
\label{fig:flowchartDiagram1}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{itemize}
\end{landscape}
\clearpage
\begin{itemize}
\item Απόκτηση λίστας εικονικών μηχανών
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.5\textwidth]{Figures/Diagrams/flowchart/3secdep-flowchart-ListVMs.png}
\captionof{figure}{Διάγραμμα ροής - Λίστα εικονικών μηχανών}
\label{fig:flowchartDiagram2}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{itemize}
\clearpage
\begin{itemize}
\item Εκτέλεση ενέργειας σε εικονική μηχανή
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.55\textwidth]{Figures/Diagrams/flowchart/4secdep-flowchart-ActionOnVM.png}
\captionof{figure}{Διάγραμμα ροής - Ενέργεια σε εικονική μηχανή}
\label{fig:flowchartDiagram3}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{itemize}
\clearpage
\begin{itemize}
\item Σύνδεση SSH σε εικονική μηχανή
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.6\textwidth]{Figures/Diagrams/flowchart/5secdep-flowchart-SSHToVM.png}
\captionof{figure}{Διάγραμμα ροής - Σύνδεση SSH σε εικονική μηχανή}
\label{fig:flowchartDiagram4}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{itemize}
\clearpage
\begin{itemize}
\item Απόκτηση πληροφοριών πόρων παρόχου
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.35\textwidth]{Figures/Diagrams/flowchart/6secdep-flowchart-ResourceInfo.png}
\captionof{figure}{Διάγραμμα ροής - Απόκτηση πληροφοριών πόρων παρόχου}
\label{fig:flowchartDiagram5}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{itemize}
\clearpage
\begin{landscape}
\thispagestyle{empty}
\begin{itemize}
\item Δημιουργία εικονικής μηχανής
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.7\textwidth]{Figures/Diagrams/flowchart/7secdep-flowchart-CreateVM.png}
\captionof{figure}{Διάγραμμα ροής - Δημιουργία εικονικής μηχανής}
\label{fig:flowchartDiagram6}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{itemize}
\end{landscape}
\clearpage
Ουσιαστικά, κατά την πραγματική χρήση του SecDep υπάρχουν πάντοτε δύο οντότητες Ουσιαστικά, κατά την πραγματική χρήση του SecDep υπάρχουν πάντοτε δύο οντότητες
που αλληλεπιδρούν μεταξύ τους. Ο χρήστης και ο πάροχος νέφους. Ο χρήστης μπορεί που αλληλεπιδρούν μεταξύ τους. Ο χρήστης και ο πάροχος νέφους. Ο χρήστης μπορεί
να ζητήσει πληροφορίες για διαθέσιμους πόρους όπως οι εικονικές του μηχανές ή να ζητήσει πληροφορίες για διαθέσιμους πόρους, όπως οι εικονικές του μηχανές, ή
τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους όπως οι τα συστατικά που έχει στην διάθεσή του για την δημιουργία τους, όπως οι
διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του διανομές, τα μεγέθη και οι τοποθεσίες τους. Αυτή η αλληλεπίδραση μεταξύ του
χρήστη και του παρόχου νέφους, απεικονίζεται στο Σχήμα χρήστη και του παρόχου νέφους, απεικονίζεται καλύτερα στο Σχήμα
\ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο \ref{fig:sequenceDiagram}, το οποίο δημιουργήθηκε με το εργαλείο
\textquote{mermaid}. \textquote{mermaid}. Πρόκειται για ένα διάγραμμα ακολουθίας (sequence diagram),
στο οποίο απεικονίζεται η αλληλεπίδραση του χρήστη με τον πάροχο νέφους μέσω
του SecDep, κατά την δημιουργία μιας εικονικής μηχανής.
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = .9\textwidth]{Figures/Diagrams/secdep-sequence-diagram.png} \includegraphics[width = 1\textwidth]{Figures/Diagrams/secdep-sequence-diagram.png}
\captionof{figure}{Διάγραμμα αλληλεπίδρασης χρήστη - παρόχου νέφους} \captionof{figure}{Διάγραμμα ακολουθίας για την δημιουργία εικονικής μηχανής}
\label{fig:sequenceDiagram} \label{fig:sequenceDiagram}
\end{figure} \end{figure}
\vspace*{-30pt} \vspace*{-30pt}
@@ -366,8 +403,169 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran
\vspace*{-30pt} \vspace*{-30pt}
\end{center} \end{center}
\noindent Οι παραπάνω βιβλιοθήκες, αποτελούν τους πυλώνες του SecDep. Κάθε μια
από αυτές, εξειδικεύεται σε διαφορετικούς τομείς και χρησιμοποιείται για την
κάλυψη διαφόρων λειτουργιών του SecDep. Με την σειρά που απεικονίζονται, έχουν
τις εξής αρμοδιότητες:
\begin{itemize}
\item \textbf{azure}:
Η βιβλιοθήκη της azure, χρησιμοποιείται για την επικοινωνία και
αυθεντικοποίηση με τον πάροχο νέφους Azure. Ο λόγος που χρειάζεται να
χρησιμοποιηθεί συνδυαστικά με την libcloud, είναι για επιτύχουμε την
ομοιόμορφη συμπεριφορά του εργαλείου κατά μήκος όλων των παρόχων που
αυτό υποστηρίζει. Συγκεκριμένα, την χρειαζόμαστε για την επίτευξη των
λειτουργιών δημιουργίας Resource Group και Virtual Network, καθώς αυτές
λειτουργίες δεν υποστηρίζονται από την libcloud την παρούσα στιγμή.
\item \textbf{dotenv}:
Η βιβλιοθήκη dotenv \footfullcite{dotenv} χρησιμοποιείται για την
ανάγνωση αρχείων \textquote{.env}. Το SecDep κάνει χρήση ενός αρχείου
\textquote{.env}, στο οποίο δηλώνονται οι τιμές που χρειάζεται για την
αυθεντικοποίηση με τους παρόχους νέφους.
\item \textbf{libcloud}:
Η βιβλιοθήκη libcloud είναι υπεύθυνη για την αυθεντικοποίηση με τους
παρόχους νέφους, με σκοπό την εκτέλεση διαφόρων λειτουργιών σχετικά με
τις εικονικές μηχανές του καθενός. Μας επιτρέπει να δημιουργούμε και να
διαχειριζόμαστε εικονικές μηχανές, καθώς και να λαμβάνουμε πληροφορίες
για πόρους του κάθε παρόχου νέφους.
\item \textbf{rich}:
Η βιβλιοθήκη rich \footfullcite{rich} εμπλουτίζει την εμφάνιση του
SecDep. Βοηθάει στην καλύτερη διαμόρφωση της εμφάνισης των
αποτελεσμάτων των εντολών του, με σκοπό την θετική αύξηση της εμπειρίας
χρήσης του εργαλείου.
\item \textbf{shtab}:
Η βιβλιοθήκη shtab \footfullcite{shtab} χρησιμοποιείται για την
δημιουργία συμπληρώσεων κελύφους. Αυτό αποτελεί βασικό χαρακτηριστικό
για την ευχρηστία του εργαλείου, καθώς διευκολύνει τον χρήστη στην
εύρεση των διαθέσιμων παραμέτρων και στην ταχύτερη σύνταξη εντολών.
\item \textbf{paramiko}:
Η βιβλιοθήκη paramiko \footfullcite{paramiko} αποτελεί εξάρτηση της
libcloud για την επικοινωνία με τις εικονικές μηχανές, κάνοντας χρήση
του πρωτοκόλλου SSH. Το SecDep, χρησιμοποιεί την βιβλιοθήκη αυτή για
την διαδραστική σύνδεση σε εικονικές μηχανές μέσω SSH σε περίπτωση
απουσίας πελάτη που να προσφέρει αυτή τη δυνατότητα. Επιπλέον,
χρησιμοποιείται για την δημιουργία κλειδιών SSH.
\end{itemize}
\clearpage \clearpage
\section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions}
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
θέσαμε στην Ενότητα \ref{overcomingDockerDisadvantages} και συγκεκριμένα για
την επικοινωνία και διασύνδεση με διάφορους παρόχους νέφους, επιλέχθηκε να
γίνει χρήση της βιβλιοθήκης libcloud \footfullcite{libcloud}. Μια από τις δύο
επιλογές βιβλιοθηκών της Apache \footfullcite{apache} για την επικοινωνία με
παρόχους νέφους στα πλαίσια της υλοποίησης multi-cloud εφαρμογών, πλατφορμών
και εργαλείων. Συγκριτικά με την βιβλιοθήκη jclouds \footfullcite{jclouds}, η
οποία σχεδιάστηκε για την γλώσσα Java \footfullcite{java}, η libcloud είναι πιο
απλή στην χρήση, αφού είναι σχεδιασμένη για την γλώσσα Python
\footfullcite{python}. Επιπροσθέτως, η libcloud είναι πιο διαδεδομένη, ενώ η
γλώσσα python αποτελεί μια πιο ευέλικτη επιλογή για τις ανάγκες της ανάπτυξης
του εργαλείου μας. Αυτό συμβαίνει διότι σε σχέση με την Java, η python είναι
απλούστερη στην σύνταξή της, προεγκατεστημένη σε πολλά λειτουργικά συστήματα
και διαθέτει πολλές επιβοηθητικές βιβλιοθήκες, επίσημες ή από τρίτους, οι
οποίες δύναται να εμπλουτίσουν τα προγράμματα σε python, με παραπάνω
λειτουργίες.
Η ανάγκη για μια βιβλιοθήκη που θα λειτουργεί ως μεσάζοντας μεταξύ του
εργαλείου και των παρόχων νέφους, οφείλεται στο γεγονός ότι οι πάροχοι νέφους
δεν διαθέτουν ένα κοινό API για την διαχείριση των υποδομών τους. Απεναντίας, ο
καθένας από αυτούς διαθέτει το δικό του API, το οποίο χρησιμοποιείται έμμεσα
μέσω του πίνακα ελέγχου του, που βρίσκεται στην ιστοσελίδα του, ενός δικού του
εργαλείου γραμμής εντολών, ή άμεσα μέσω της βιβλιοθήκης που παρέχει ο ίδιος. Η
libcloud αποτελεί μια προσπάθεια δημιουργίας ενός ενιαίου API, το οποίο
χρησιμοποιώντας τις ίδιες μεθόδους, επιχειρεί να προσκομίσει πανομοιότυπα
αποτελέσματα (πχ. δημιουργία εικονικής μηχανής με συγκεκριμένα χαρακτηριστικά)
ανεξαρτήτως του παρόχου νέφους που στοχεύει.
Παρ' όλη την προσπάθεια που καταβλήθηκε από την libcloud όμως, για την
ενοποίηση αυτή, οι διαφορές στους τρόπους λειτουργίας του κάθε παρόχου αρχίζουν
να εμφανίζονται σύντομα κατά την ανάπτυξη. Για το εργαλείο SecDep που προτείνει
η παρούσα διπλωματική εργασία, χρειάζεται να γίνει χρήση των λειτουργιών
\textquote{Compute} της βιβλιοθήκης libcloud. Στην αρχική σελίδα της
βιβλιοθήκης, αναφέρεται υποστήριξη για πάνω από 50 παρόχους. Κατά την σελίδα
τεκμηρίωσης \cite{libcloudProviders} για τις λειτουργίες \textquote{Compute},
αναφέρονται 48 πάροχοι σε έναν πίνακα, ο οποίος αναγράφει την υποστήριξη ή
απουσία αυτής, για διάφορες λειτουργίες/μεθόδους (διαχείρισης) εικονικών
μηχανών. Στις λειτουργίες αυτές περιλαμβάνονται η δημιουργία εικονικών μηχανών,
η εκκίνηση, η παύση, η διαγραφή τους και εν γένει όσες λειτουργίες είναι
απαραίτητες για την ολοκληρωμένη λειτουργία του προτεινούμενού μας εργαλείου.
Από αυτούς τους 48 παρόχους, οι 25 υποστηρίζουν και τις 9 λειτουργίες
διαχείρισης. Ωστόσο, από αυτούς τους 25 έπρεπε να αφαιρεθούν οι 20 για λόγους,
όπως η μη ύπαρξη τεκμηρίωσης χρήσης από την libcloud, η μη συνέχιση της
λειτουργίας τους, η έλλειψη πληροφοριών τιμής ή δοκιμαστικής περιόδου για τις
υπηρεσίες τους και η αδυναμία δημιουργίας λογαριασμού στην επίσημη σελίδα τους.
Επομένως, υπάρχουν εν τέλει 5 πάροχοι νέφους που δύναται να χρησιμοποιηθούν,
υποστηρίζοντας όλες τις πιθανές λειτουργίες διαχείρισης εικονικών μηχανών.
Τέλος, από αυτούς τους 5, επιλέχθηκαν για επίσημη υποστήριξη από το εργαλείο
που προτείνεται στην παρούσα διπλωματική εργασία, τα τρία μεγαλύτερα ονόματα
του χώρου, οι Amazon, Google και Microsoft. Οι άλλοι δύο είτε δεν παρείχαν
δοκιμαστική περίοδο των υπηρεσιών τους, είτε δεν υπήρχε εμπιστοσύνη ως προς την
ποιότητα των υπηρεσιών αυτών.
Παρακάτω θα διαπιστώσουμε πως ακόμα και με την χρήση της βιβλιοθήκης libcloud
και την επίσημη υποστήριξη όλων των λειτουργιών για κάθε πάροχο, υπήρχε η
ανάγκη χρήσης της επίσημης βιβλιοθήκης της Azure (Microsoft Azure SDK) για την
δημιουργία Resource Group \footfullcite{azure-mgmt-resource} και Virtual
Network \footfullcite{azure-mgmt-network} διότι αυτές οι λειτουργίες δεν
υποστηρίζονται μέσω της libcloud. Επιπροσθέτως, δίχως την υποστήριξη των
λειτουργιών αυτών, ο χρήστης θα ήταν υποχρεωμένος να δημιουργεί αυτούς τους
πόρους χειροκίνητα ή να είναι περιορισμένος μονάχα σε μια γεωγραφική τοποθεσία.
Οι δύο τελευταίες επιλογές πάνε ενάντια σε έναν από τους βασικότερους στόχους
του εργαλείου. Την ομοιόμορφη λειτουργία για κάθε πάροχο νέφους που
υποστηρίζεται.
Πέρα από την απόφαση για την χρήση της libcloud και την γλώσσα προγραμματισμού
Python, πάρθηκε επίσης η απόφαση για την υποστήριξη των 6 δημοφιλέστερων
επιλογών για λειτουργικά συστήματα Linux σε περιβάλλοντα διακομιστών. Οι
διανομές αυτές υποστηρίζονται και για τους 3 παρόχους νέφους και κάθε μια από
αυτές περιλαμβάνει διαφορετικές εκδόσεις της κάθε διανομής. Αυτές είναι οι εξής
για κάθε πάροχο:
\begin{savenotes}
\selectfont
\begin{table}[!ht]
\caption{Υποστηριζόμενες εκδόσεις διανομών για κάθε πάροχο}
\renewcommand{\arraystretch}{1.5}
\centering
\textgreek{\begin{tabular}{lc|c|c|c|}
\cline{3-5}
& & \multicolumn{3}{c|}{Πάροχοι} \\ \cline{3-5}
& & AWS & Azure & GCE \\ \hline
\multicolumn{1}{|c|}{\multirow{6}{*}{\rotatebox{90}{Διανομές}}} & Ubuntu \footfullcite{ubuntu} & 22.04, 22.10 & 22.04, 22.10 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & Debian \footfullcite{debian} & 10, 11 & 10, 11 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & CentOS \footfullcite{centos} & 7, 8, 9 & 8.4, 8.5 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & Fedora \footfullcite{fedora} & 37 & 36, 37 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & Red Hat Enterprise Linux \footfullcite{redhat} & 7.9, 8.6, 9 & 8.6, 9.1 & Όλες \\ \cline{2-5}
\multicolumn{1}{|c|}{} & openSUSE Leap \footfullcite{opensuse} & 15.3, 15.4 & 15.3, 15.4 & Όλες \\ \hline
\end{tabular}}
\label{table:supportedDistributions}
\renewcommand{\arraystretch}{1}
\end{table}
\end{savenotes}
Ο λόγος που οι εκδόσεις είναι συγκεκριμένες για τους παρόχους AWS και Azure,
είναι διότι ο αριθμός των διαθέσιμων διανομών και εκδόσεών τους είναι
υπερβολικά μεγάλος. Αυτό θα είχε ως αποτέλεσμα, κατά την εκτέλεση της
λειτουργίας δημιουργίας λίστας τους ή κατά τον έλεγχο της ορθότητας των
παραμέτρων που εισάγει ο χρήστης, η αντίστοιχη αιτούμενη εκτέλεση του εργαλείου
από τον χρήση, να καθυστερούσε σε τεράστιο βαθμό να ολοκληρωθεί. Επομένως, θα
υπήρχε αρνητική επίδραση στην εμπειρία του χρήστη.
\section{Αρχιτεκτονική Εργαλείου} \label{architecture} \section{Αρχιτεκτονική Εργαλείου} \label{architecture}
Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

Before

Width:  |  Height:  |  Size: 219 KiB

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 KiB

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -167,7 +167,7 @@ Dennis Ritchie (1941 - 2011)
%% ---------------------------------------------------------------- %% ----------------------------------------------------------------
% Now begin the Appendices, including them as separate files % Now begin the Appendices, including them as separate files
\addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics % \addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics
\appendix % Cue to tell LaTeX that the following 'chapters' are Appendices \appendix % Cue to tell LaTeX that the following 'chapters' are Appendices
@@ -175,10 +175,12 @@ Dennis Ritchie (1941 - 2011)
% Εδώ μπαίνουν τα παραρτήματα % Εδώ μπαίνουν τα παραρτήματα
\addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics % \addtocontents{toc}{\vspace{2em}} % Add a gap in the Contents, for aesthetics
%% ---------------------------------------------------------------- %% ----------------------------------------------------------------
\label{Bibliography} \label{Bibliography}
\addtocontents{toc}{}
\addtotoc{Βιβλιογραφία}
\lhead{\textgreek{Βιβλιογραφία}} % Change the left side page header to "Bibliography" \lhead{\textgreek{Βιβλιογραφία}} % Change the left side page header to "Bibliography"
\renewcommand*{\bibfont}{\textbf\small} % Have the correct font \renewcommand*{\bibfont}{\textbf\small} % Have the correct font