Merging 'WIP: Do Not Merge This Branch' Into Master

This commit is contained in:
2024-02-29 04:56:54 +02:00
parent ef5cb33f23
commit 61e0284cbc
15 changed files with 488 additions and 211 deletions

View File

@@ -263,6 +263,8 @@ Docker. Στην ενότητα αυτή θα γίνει αναφορά σε ε
\begin{itemize}
\clearpage
\item \textbf{Σύγκριση με JShielder}:
Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος

View File

@@ -175,7 +175,7 @@
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.8\textwidth]{Figures/Diagrams/secdep-use-case-diagram.jpg}
\includegraphics[width = .8\textwidth]{Figures/Diagrams/secdep-use-case-diagram.jpg}
\captionof{figure}{Διάγραμμα περιπτώσεων χρήσης}
\label{fig:useCaseDiagram}
\end{figure}
@@ -234,7 +234,7 @@ SecDep:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.5\textwidth]{Figures/Diagrams/flowchart/3secdep-flowchart-ListVMs.png}
\includegraphics[width = .5\textwidth]{Figures/Diagrams/flowchart/3secdep-flowchart-ListVMs.png}
\captionof{figure}{Διάγραμμα ροής - Λίστα εικονικών μηχανών}
\label{fig:flowchartDiagram2}
\end{figure}
@@ -252,7 +252,7 @@ SecDep:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.55\textwidth]{Figures/Diagrams/flowchart/4secdep-flowchart-ActionOnVM.png}
\includegraphics[width = .55\textwidth]{Figures/Diagrams/flowchart/4secdep-flowchart-ActionOnVM.png}
\captionof{figure}{Διάγραμμα ροής - Ενέργεια σε εικονική μηχανή}
\label{fig:flowchartDiagram3}
\end{figure}
@@ -270,7 +270,7 @@ SecDep:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.6\textwidth]{Figures/Diagrams/flowchart/5secdep-flowchart-SSHToVM.png}
\includegraphics[width = .6\textwidth]{Figures/Diagrams/flowchart/5secdep-flowchart-SSHToVM.png}
\captionof{figure}{Διάγραμμα ροής - Σύνδεση SSH σε εικονική μηχανή}
\label{fig:flowchartDiagram4}
\end{figure}
@@ -288,7 +288,7 @@ SecDep:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.35\textwidth]{Figures/Diagrams/flowchart/6secdep-flowchart-ResourceInfo.png}
\includegraphics[width = .35\textwidth]{Figures/Diagrams/flowchart/6secdep-flowchart-ResourceInfo.png}
\captionof{figure}{Διάγραμμα ροής - Απόκτηση πληροφοριών πόρων παρόχου}
\label{fig:flowchartDiagram5}
\end{figure}
@@ -308,7 +308,7 @@ SecDep:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 0.7\textwidth]{Figures/Diagrams/flowchart/7secdep-flowchart-CreateVM.png}
\includegraphics[width = .7\textwidth]{Figures/Diagrams/flowchart/7secdep-flowchart-CreateVM.png}
\captionof{figure}{Διάγραμμα ροής - Δημιουργία εικονικής μηχανής}
\label{fig:flowchartDiagram6}
\end{figure}
@@ -333,135 +333,13 @@ SecDep:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 1\textwidth]{Figures/Diagrams/secdep-sequence-diagram.png}
\includegraphics[width = \textwidth]{Figures/Diagrams/secdep-sequence-diagram.png}
\captionof{figure}{Διάγραμμα ακολουθίας για την δημιουργία εικονικής μηχανής}
\label{fig:sequenceDiagram}
\end{figure}
\vspace*{-30pt}
\end{center}
\begin{landscape}
\thispagestyle{empty}
Mε το \textquote{code2flow} \footfullcite{code2flow} δημιουργήθηκε ένα
διάγραμμα που απεικονίζει τις κλήσεις συναρτήσεων που γίνονται κατά την
εκτέλεση του αρχείου secdep.py. Παράλληλα, το ίδιο αποτέλεσμα επιτεύχθηκε για
το αρχείο harden με την βοήθεια του \textquote{callGraph}
\footfullcite{callGraph}. Τα παραπάνω απεικονίζονται στα Σχήματα
\ref{fig:secdepFunctionCallDiagram} και \ref{fig:hardenFunctionCallDiagram}
αντίστοιχα.
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 1.1\textwidth]{Figures/Diagrams/secdep-function-relationships.png}
\captionof{figure}{Διάγραμμα κλήσεων συναρτήσεων του secdep.py}
\label{fig:secdepFunctionCallDiagram}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{landscape}
\begin{landscape}
\thispagestyle{empty}
\vspace{30pt}
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 1.1\textwidth]{Figures/Diagrams/harden-function-relationships.png}
\captionof{figure}{Διάγραμμα κλήσεων συναρτήσεων του harden}
\label{fig:hardenFunctionCallDiagram}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{landscape}
\noindent Επιπλέον, ένας χάρτης των σημαντικών εξαρτήσεων του secdep.py
δημιουργήθηκε με την βοήθεια του \textquote{pydeps} \footfullcite{pydeps}. Αυτό
έγινε με την εκτέλεση της παρακάτω εντολής:
\begin{listing}[!ht]
\begin{bashcode}
pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --rankdir RL -o secdep-module-dependencies-organized.png secdep.py
\end{bashcode}
\caption{Εντολή δημιουργίας χάρτη εξαρτήσεων του secdep.py}
\label{lst:secdepModuleDependencies}
\vspace*{-10pt}
\end{listing}
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .9\textwidth]{Figures/Diagrams/secdep-module-dependencies-organized.png}
\captionof{figure}{Διάγραμμα σημαντικών εξαρτήσεων του secdep.py}
\label{fig:secdepModules}
\end{figure}
\vspace*{-30pt}
\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
\section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions}
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
@@ -476,7 +354,7 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran
\footfullcite{python}. Επιπροσθέτως, η libcloud είναι πιο διαδεδομένη, ενώ η
γλώσσα python αποτελεί μια πιο ευέλικτη επιλογή για τις ανάγκες της ανάπτυξης
του εργαλείου μας. Αυτό συμβαίνει διότι σε σχέση με την Java, η python είναι
απλούστερη στην σύνταξή της, προεγκατεστημένη σε πολλά λειτουργικά συστήματα
απλούστερη στην σύνταξή της, προ εγκατεστημένη σε πολλά λειτουργικά συστήματα
και διαθέτει πολλές επιβοηθητικές βιβλιοθήκες, επίσημες ή από τρίτους, οι
οποίες δύναται να εμπλουτίσουν τα προγράμματα σε python, με παραπάνω
λειτουργίες.
@@ -569,14 +447,14 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\section{Αρχιτεκτονική Εργαλείου} \label{architecture}
Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα
Σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η
δημιουργία τους πραγματοποιήθηκε με το εργαλείο \textquote{doxygen}
\footfullcite{doxygen}.
Σχήματα \ref{fig:secdepFunctions}, \ref{fig:secdepVariables1} και
\ref{fig:secdepVariables2} αντίστοιχα. Η δημιουργία τους πραγματοποιήθηκε με το
εργαλείο \textquote{doxygen} \footfullcite{doxygen}.
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .9\textwidth]{Figures/doxygen/secdepFunctions.png}
\includegraphics[width = \textwidth]{Figures/doxygen/secdepFunctions.png}
\captionof{figure}{Συναρτήσεις του secdep.py}
\label{fig:secdepFunctions}
\end{figure}
@@ -586,15 +464,165 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\begin{center}
\begin{figure}[ht]
\centering
\includegraphics[width = .9\textwidth]{Figures/doxygen/secdepVariables.png}
\includegraphics[width = \textwidth]{Figures/doxygen/secdepVariables1.png}
\captionof{figure}{Μεταβλητές του secdep.py}
\label{fig:secdepVariables}
\label{fig:secdepVariables1}
\end{figure}
\vspace*{-30pt}
\end{center}
\begin{center}
\begin{figure}[ht]
\centering
\includegraphics[width = \textwidth]{Figures/doxygen/secdepVariables2.png}
\captionof{figure}{Μεταβλητές του secdep.py (συνέχεια)}
\label{fig:secdepVariables2}
\end{figure}
\vspace*{-30pt}
\end{center}
\clearpage
\noindent Προκειμένου να κατανοήσουμε καλύτερα πως αλληλεπιδρούν ορισμένες από
τις συναρτήσεις μεταξύ τους, δημιουργήθηκαν δύο διαγράμματα συστατικών
(component diagrams) για τις εξής λειτουργίες:
\begin{itemize}
\item Απόκτηση λίστας εικονικών μηχανών συγκεκριμένης περιοχής του παρόχου νέφους Amazon (Σχήμα \ref{fig:secdepComponentDiagram1})
\item Απόκτηση πληροφοριών ΑΜΙ (Amazon Machine Image) (Σχήμα \ref{fig:secdepComponentDiagram2})
\end{itemize}
\noindent Τα διαγράμματα αυτά δημιουργήθηκαν με την χρήση της βιβλιοθήκης
\textquote{pydoctrace} \footfullcite{pydoctrace} και του εργαλείου ανοιχτού
κώδικα \textquote{plantuml} \footfullcite{plantuml}. Με την εκτέλεση της
Εντολής \ref{lst:pydoctraceInstall}, εγκαθίσταται η βιβλιοθήκη στο σύστημα.
Μετά την περαίωσή της και την εγκατάσταση του πακέτου plantuml, προκειμένου να
αποκτήσουμε τα διαγράμματα συστατικών χρειάστηκε να πραγματοποιηθούν ορισμένες
προσθέσεις στον κώδικα του εργαλείου.
\begin{listing}[!ht]
\begin{bashcode}
pip install pydoctrace --break-system-packages
\end{bashcode}
\caption{Εγκατάσταση της βιβλιοθήκης pydoctrace}
\label{lst:pydoctraceInstall}
\vspace*{-10pt}
\end{listing}
\noindent Οι προσθέσεις αυτές αφορούν την προσθήκη των εξής γραμμών κώδικα του
secdep.py στο σημείο που ορίζονται οι βιβλιοθήκες:
\begin{listing}[!ht]
\begin{bashcode}
from pydoctrace.doctrace import trace_to_component_puml
from pydoctrace.callfilter.presets import (
EXCLUDE_BUILTINS_PRESET,
EXCLUDE_CALL_DEPTH_PRESET_FACTORY,
EXCLUDE_DEPTH_BELOW_5_PRESET,
EXCLUDE_STDLIB_PRESET,
EXCLUDE_TESTS_PRESET,
TRACE_ALL_PRESET,
)
\end{bashcode}
\vspace*{-10pt}
\end{listing}
\noindent Έπειτα, προσθέτουμε και τις παρακάτω γραμμές κώδικα, ακριβώς πριν την
δήλωση των συναρτήσεων που θέλουμε να καλέσουμε:
\clearpage
\begin{listing}[!ht]
\begin{bashcode}
ABOVE_1_PRESET = EXCLUDE_CALL_DEPTH_PRESET_FACTORY(1)
@trace_to_component_puml(filter_presets=[EXCLUDE_BUILTINS_PRESET, ABOVE_1_PRESET, EXCLUDE_DEPTH_BELOW_5_PRESET, EXCLUDE_STDLIB_PRESET, EXCLUDE_TESTS_PRESET, TRACE_ALL_PRESET])
\end{bashcode}
\vspace*{-10pt}
\end{listing}
\noindent Mε την εκτέλεση των Εντολών \ref{lst:getAwsImage} και
\ref{lst:listAllRegionalAwsNodes}, παράγονται δύο αρχεία με κατάληξη
\textquote{.puml}, τα οποία περιέχουν οδηγίες για την απεικόνιση των
διαγραμμάτων συστατικών στα Σχήματα \ref{fig:secdepComponentDiagram1} και
\ref{fig:secdepComponentDiagram2} αντίστοιχα.
\begin{listing}[!ht]
\begin{bashcode}
python3 secdep.py --provider aws --listimages --print
\end{bashcode}
\caption{Απόκτηση πληροφοριών ΑΜΙ (Amazon Machine Image)}
\label{lst:getAwsImage}
\vspace*{-10pt}
\end{listing}
\begin{listing}[!ht]
\begin{bashcode}
python3 secdep.py --provider aws --list --awsregion eu-north-1
\end{bashcode}
\caption{Απόκτηση λίστας εικονικών μηχανών συγκεκριμένης περιοχής του παρόχου νέφους Amazon}
\label{lst:listAllRegionalAwsNodes}
\vspace*{-10pt}
\end{listing}
\noindent Τέλος, η μετατροπή των αρχείων κειμένου σε σχήματα πραγματοποιείται
με την εκτέλεση της εντολής \ref{lst:plantumlCommand}.
\begin{listing}[!ht]
\begin{bashcode}
plantuml -progress -DPLANTUML_LIMIT_SIZE=8192 <όνομα αρχείου>.puml
\end{bashcode}
\caption{Μετατροπή αρχείων \textquote{.puml} σε αρχεία \textquote{.png} χρησιμοποιώντας το plantuml}
\label{lst:plantumlCommand}
\vspace*{-10pt}
\end{listing}
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .9\textwidth]{Figures/Diagrams/component/GetAwsImage.png}
\captionof{figure}{Διάγραμμα συστατικών για την Εντολή \ref{lst:getAwsImage}}
\label{fig:secdepComponentDiagram1}
\end{figure}
\vspace*{-30pt}
\end{center}
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .9\textwidth]{Figures/Diagrams/component/ListAllRegionalAwsNodes.png}
\captionof{figure}{Διάγραμμα συστατικών για την Εντολή \ref{lst:listAllRegionalAwsNodes}}
\label{fig:secdepComponentDiagram2}
\end{figure}
\vspace*{-30pt}
\end{center}
Τα παραπάνω διαγράμματα αποτελούν απλουστευμένες εκδοχές των πραγματικών. Αυτό
συμβαίνει, διότι έχουμε ρυθμίσει το pydoctrace να παραλείπει τις εμφανίσεις
ορισμένων εσωτερικών κλήσεων συναρτήσεων, καθώς και αυτών που βρίσκονται σε
επίπεδο callstack μεγαλύτερο από ένα. Στην αντίθετη περίπτωση, τα διαγράμματα
θα ήταν αρκετά δυσνόητα και δυσανάγνωστα.
Παρατηρώντας το Σχήμα \ref{fig:secdepComponentDiagram1}, αποκτάμε μεγαλύτερη
κατανόηση σχετικά με την εξάρτηση των συναρτήσεων μεταξύ τους. Προκειμένου να
φτάσουμε στην απόκτηση πληροφοριών για το AMI που θα διαλέξουμε, αρχικά πρέπει
να λάβουμε την λίστα των διαθέσιμων διανομών. Έπειτα, επιλέγουμε μια από αυτές
και αποκτάμε την λίστα των διαθέσιμων περιοχών της Amazon. Αυτό το βήμα είναι
απαραίτητο, διότι κάθε AMI έχει ξεχωριστό αναγνωριστικό ανά περιοχή. Αφότου
επιλέξουμε την περιοχή που επιθυμούμε, το εργαλείο επικοινωνεί με τον πάροχο
νέφους εκτελώντας την συνάρτηση απόκτησης της εικόνας και μας επιστρέφει τις
πληροφορίες της.
Στο Σχήμα \ref{fig:secdepComponentDiagram2}, βλέπουμε πως γίνεται κλήση της
συνάρτησης απόκτησης του οδηγού για την αυθεντικοποίηση με την Amazon και
έπειτα λαμβάνουμε την λίστα των εικονικών μηχανών για την περιοχή που ορίσαμε
κατά την σύνταξη της εντολής, από την αντίστοιχη συνάρτηση. Οι μέθοδοι start
και stop αφορούν την εκκίνηση και την παύση ενός μηχανισμού που έχει προστεθεί
στον τρόπο εμφάνισης των εντολών, ώστε να γνωρίζει ο χρήστης πως η εκτέλεση του
προγράμματος συνεχίζεται. Αυτό αποτελεί ένα χαρακτηριστικό που αυξάνει την
εμπειρία χρήσης, ιδίως για εντολές με μεγάλης διαρκείας εκτέλεση.
Το SecDep αποτελείται από δύο εκτελέσιμα αρχεία. Το πρώτο αρχείο, το
\textquote{secdep.py}, είναι το κύριο αρχείο του προγράμματος. Αυτό το αρχείο
είναι υπεύθυνο για την επικοινωνία με τους παρόχους νέφους και την διαχείριση
@@ -615,17 +643,25 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\begin{itemize}
\item \textbf{provider}
\item \textbf{name}
\item \textbf{location}
\item \textbf{size}
\item \textbf{image}
\item \textbf{provider}: Ο πάροχος νέφους στο νέφος του οποίου θα
δημιουργηθεί η εικονική μηχανή (aws, gce, azure).
\item \textbf{confirm}: Για επιβεβαίωση της δημιουργίας της
εικονικής μηχανής χωρίς να χρειαστεί χειροκίνητη επιβεβαίωση
από τον χρήστη.
\item \textbf{name}: Το όνομα της εικονικής μηχανής.
\item \textbf{deploy}: Για την εκτέλεση του harden.
\item \textbf{location}: Η περιοχή στην οποία θα δημιουργηθεί η
εικονική μηχανή.
\item \textbf{size}: Το μέγεθος της εικονικής μηχανής.
\item \textbf{image}: Η εικόνα από την οποία θα δημιουργηθεί η
εικονική μηχανή.
\item \textbf{confirm}: Χρησιμοποιείται για επιβεβαίωση της
δημιουργίας της εικονικής μηχανής χωρίς να χρειαστεί
χειροκίνητη επιβεβαίωση από τον χρήστη.
\item \textbf{deploy}: Για την εκτέλεση του harden (δηλ. την
εφαρμογή της σκλήρυνσης).
\end{itemize}
@@ -637,10 +673,10 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\begin{itemize}
\item \textbf{start}
\item \textbf{stop}
\item \textbf{reboot}
\item \textbf{delete}
\item \textbf{start} (εκκίνηση της εικονικής μηχανής)
\item \textbf{stop} (παύση της εικονικής μηχανής)
\item \textbf{reboot} (επανεκκίνηση της εικονικής μηχανής)
\item \textbf{delete} (διαγραφή της εικονικής μηχανής)
\end{itemize}
@@ -649,7 +685,7 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{list\_all\_nodes}: Η συνάρτηση \textquote{list\_all\_nodes},
είναι αυτή που εμφανίζει τις εικονικές μηχανές που διαχειρίζεται το
SecDep. Χωρίς παραμέτρους θα εμφάνιζε όλες τις εικονικές μηχανές από
όλους τους παρόχους. Επειδή όμως δεν είναι πάντοτε απαραίτητο να
όλους τους παρόχους. Επειδή, όμως, δεν είναι πάντοτε απαραίτητο να
εμφανίζονται όλες οι εικονικές μηχανές, ο χρήστης μπορεί να δώσει τις
παρακάτω παραμέτρους:
@@ -659,6 +695,9 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{filterIn}: Χρησιμοποιείται για το φιλτράρισμα της
λίστας κατά την χρήση της συνάρτησης \textquote{node\_action}.
Με βάση την τιμή της ενέργειας που θέλει να πραγματοποιήσει ο
χρήστης, δεν περιλαμβάνονται στην λίστα, οι εικονικές μηχανές
για τις οποίες δεν είναι δυνατή η εκτέλεση της ενέργειας αυτής.
\item \textbf{awsRegion}: Μόνο για τον πάροχο AWS. Χρησιμοποιείται
για την επιλογή της περιοχής. Δίχως την παράμετρο αυτή, θα
@@ -670,9 +709,9 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\end{itemize}
\noindent Το αρχείο harden, αποτελείται από πολλές συναρτήσεις που εκτελούνται
με την σειρά προκειμένου να ασφαλιστεί το σύστημα στο οποίο εκτελείται. Οι πιο
αξιοσημείωτες αυτών είναι:
\noindent Το αρχείο harden, αποτελείται από πολλές συναρτήσεις, οι οποίες
εκτελούνται με την σειρά προκειμένου να ασφαλιστεί το σύστημα στο οποίο
εκτελείται. Οι πιο αξιοσημείωτες αυτών είναι:
\begin{itemize}
@@ -687,7 +726,7 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{kernelSecurityModuleInit}:
Η συνάρτηση υπεύθυνη για την εγκατάσταση/ρύθμιση του κατάλληλου για την
διανομή kernel security module.
διανομή (της εικονικής μηχανής) kernel security module.
\item \textbf{configureFail2ban}:
@@ -696,3 +735,125 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
fail2ban για την προστασία από επιθέσεις brute force.
\end{itemize}
\begin{landscape}
\thispagestyle{empty}
Mε το \textquote{code2flow} \footfullcite{code2flow} δημιουργήθηκε ένα
διάγραμμα που απεικονίζει τις κλήσεις συναρτήσεων που γίνονται κατά την
εκτέλεση του αρχείου secdep.py. Παράλληλα, το ίδιο αποτέλεσμα επιτεύχθηκε για
το αρχείο harden με την βοήθεια του \textquote{callGraph}
\footfullcite{callGraph}. Τα παραπάνω απεικονίζονται στα Σχήματα
\ref{fig:secdepFunctionCallDiagram} και \ref{fig:hardenFunctionCallDiagram}
αντίστοιχα.
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 1.1\textwidth]{Figures/Diagrams/secdep-function-relationships.png}
\captionof{figure}{Διάγραμμα κλήσεων συναρτήσεων του secdep.py}
\label{fig:secdepFunctionCallDiagram}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{landscape}
\begin{landscape}
\thispagestyle{empty}
\vspace{30pt}
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 1.1\textwidth]{Figures/Diagrams/harden-function-relationships.png}
\captionof{figure}{Διάγραμμα κλήσεων συναρτήσεων του harden}
\label{fig:hardenFunctionCallDiagram}
\end{figure}
\vspace*{-30pt}
\end{center}
\end{landscape}
\noindent Επιπλέον, ένας χάρτης των σημαντικών εξαρτήσεων του secdep.py
δημιουργήθηκε με την βοήθεια του \textquote{pydeps} \footfullcite{pydeps}. Αυτό
έγινε με την εκτέλεση της παρακάτω εντολής:
\begin{listing}[!ht]
\begin{bashcode}
pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --rankdir RL -o secdep-module-dependencies-organized.png secdep.py
\end{bashcode}
\caption{Εντολή δημιουργίας χάρτη εξαρτήσεων του secdep.py}
\label{lst:secdepModuleDependencies}
\vspace*{-10pt}
\end{listing}
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .9\textwidth]{Figures/Diagrams/secdep-module-dependencies-organized.png}
\captionof{figure}{Διάγραμμα σημαντικών εξαρτήσεων του secdep.py}
\label{fig:secdepModules}
\end{figure}
\vspace*{-30pt}
\end{center}
\noindent Οι παραπάνω βιβλιοθήκες, αποτελούν τους πυλώνες του SecDep. Κάθε μια
από αυτές, εξειδικεύεται σε διαφορετικούς τομείς και χρησιμοποιείται για την
κάλυψη διαφόρων λειτουργιών του SecDep. Με την σειρά που απεικονίζονται, έχουν
τις εξής αρμοδιότητες:
\begin{itemize}
\item \textbf{azure}:
Η βιβλιοθήκη της azure, χρησιμοποιείται για την επικοινωνία και
αυθεντικοποίηση με τον πάροχο νέφους Azure. Ο λόγος που χρειάζεται να
χρησιμοποιηθεί συνδυαστικά με την libcloud, είναι για επιτύχουμε την
ομοιόμορφη συμπεριφορά του εργαλείου κατά μήκος όλων των παρόχων που
αυτό υποστηρίζει. Συγκεκριμένα, την χρειαζόμαστε για την επίτευξη των
λειτουργιών δημιουργίας Resource Group και Virtual Network, καθώς αυτές
λειτουργίες δεν υποστηρίζονται από την libcloud την παρούσα στιγμή.
\clearpage
\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}

View File

@@ -7,12 +7,15 @@ Amazon. Μετά την ολοκλήρωση των παραπάνω διαδι
\section{Εγκατάσταση του πηγαίου κώδικα του SecDep}
Για την εγκατάσταση του πηγαίου κώδικα του SecDep απαιτείται η χρήση του
προγράμματος git ή η πρόσβαση σε έναν φυλλομετρητή. Στην περίπτωση που ο
χρήστης δεν έχει εγκατεστημένο το git, πρέπει να μεταβεί στην ιστοσελίδα του
αποθετηρίου \footfullcite{secdep} και να επιλέξει είτε την επιλογή αποθήκευσης
ως αρχείο zip, είτε ως tar.gz όπως απεικονίζεται παρακάτω. Έπειτα, πρέπει να
αποσυμπιεστεί με το κατάλληλο για τον τύπο αρχείου πρόγραμμα.
Για την εκτέλεση του SecDep είναι απαραίτητη προϋπόθεση να υπάρχει
εγκατεστημένη η python με έκδοση μεγαλύτερη ή ίση της 3.7. Για την εγκατάσταση
του πηγαίου κώδικα του SecDep απαιτείται η χρήση του προγράμματος git ή η
πρόσβαση σε έναν φυλλομετρητή. Στην περίπτωση που ο χρήστης δεν έχει
εγκατεστημένο το git, πρέπει να μεταβεί στην ιστοσελίδα του αποθετηρίου
\footfullcite{secdep} του κώδικα και να επιλέξει είτε την επιλογή αποθήκευσης
ως αρχείο zip, είτε ως tar.gz όπως απεικονίζεται παρακάτω. Έπειτα, το
εκφορτωμένο συμπιεσμένο αρχείο πρέπει να αποσυμπιεστεί με το κατάλληλο για τον
τύπο αρχείου πρόγραμμα.
\begin{center}
\begin{figure}[!ht]
@@ -41,7 +44,8 @@ git clone https://git.konsthol.eu/konsthol/SecDep.git
\subsection{Εγκατάσταση των απαιτούμενων εξαρτήσεων}
Μετά την ολοκλήρωση της εγκατάστασης του πηγαίου κώδικα του SecDep, αφού ο
χρήστης μεταβεί στον φάκελο με τα περιεχόμενα που απεικονίζονται στο Σχήμα
χρήστης μεταβεί στον φάκελο με τα περιεχόμενα (δηλ. του ριζικού φακέλου του
έργου λογισμικού που εκφορτώθηκε) που απεικονίζονται στο Σχήμα
\ref{fig:secdep_install_without_git}, επιβάλλεται να γίνει χρήση του
προγράμματος pip \footfullcite{pip} για την εγκατάσταση των βιβλιοθηκών που
απαιτούνται για την λειτουργία του εργαλείου. Αυτό επιτυγχάνεται με την
@@ -77,7 +81,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}
@@ -90,28 +94,28 @@ pip install -r requirements.txt --break-system-packages
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .6\textwidth]{Figures/AWS_setup/go_to_iam.png}
\includegraphics[width = \textwidth]{Figures/AWS_setup/go_to_iam.png}
\captionof{figure}{Μετάβαση στην ενότητα IAM της AWS}
\label{fig:go_to_iam}
\end{figure}
\vspace*{-30pt}
\end{center}
\clearpage
\noindent Έπειτα, πρέπει να εισέλθει στην ενότητα \textquote{Manage Access
Keys} και να δημιουργήσει ένα νέο κλειδί πρόσβασης όπως φαίνεται παρακάτω:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .6\textwidth]{Figures/AWS_setup/create_access_key.png}
\includegraphics[width = \textwidth]{Figures/AWS_setup/create_access_key.png}
\captionof{figure}{Δημιουργία νέου κλειδιού πρόσβασης}
\label{fig:create_access_key}
\end{figure}
\vspace*{-30pt}
\end{center}
\clearpage
\noindent Η αντιστοιχία των απαιτούμενων πεδίων με το κλειδί πρόσβασης που
δημιουργήθηκε είναι η εξής:
@@ -161,10 +165,12 @@ python3 secdep.py --init aws
Έπειτα, θα ζητηθούν από τον χρήστη τα αντίστοιχα διαπιστευτήρια. Οι μεταβλητές
αυτές θα αποθηκευτούν στο αρχείο \textquote{.env} που θα δημιουργηθεί στον
φάκελο που βρίσκεται το εκτελέσιμο του SecDep. Στην περίπτωση που ο χρήστης
μελλοντικά θέλει να αλλάξει τις τιμές των μεταβλητών ή να προσθέσει νέες,
μπορεί να το κάνει αλλάζοντας τα περιεχόμενα του αρχείου \textquote{.env}
χειροκίνητα με έναν επεξεργαστή κειμένου ή με την εκτέλεση της εντολής:
ριζικό φάκελο του έργου. Εάν το εκτελέσιμο μεταφερθεί κάποτε σε νέο φάκελο,
δίχως το αρχείο “.env”, τότε αυτό θα αναδημιουργηθεί στην νέα τοποθεσία. Στην
περίπτωση που ο χρήστης μελλοντικά θέλει να αλλάξει τις τιμές των μεταβλητών ή
να προσθέσει νέες, μπορεί να το κάνει αλλάζοντας τα περιεχόμενα του αρχείου
\textquote{.env} χειροκίνητα με έναν επεξεργαστή κειμένου ή με την εκτέλεση της
εντολής:
\begin{listing}[!ht]
\begin{bashcode}
@@ -179,8 +185,6 @@ python3 secdep.py --edit
αλλάξει και θα αναγράφει την προηγούμενη τιμή της ώστε να γίνεται ευδιάκριτη η
αλλαγή.
\clearpage
\section{Επίδειξη του SecDep}
Ανά πάσα στιγμή, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για να λάβει
@@ -195,11 +199,14 @@ python3 secdep.py --help
\vspace*{-10pt}
\end{listing}
\subsection{Δημιουργία εικονικής μηχανής}
Σχετικά με την δημιουργία εικονικών μηχανών, που είναι και μια από τις βασικές
λειτουργίες του SecDep, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για
να δημιουργήσει μια εικονική μηχανή με λειτουργικό σύστημα Debian 11 στην
περιοχή eu-north-1 με μέγεθος t3.micro (διαθέσιμο για χρήστες εντός της δωρεάν
δοκιμαστικής περιόδου ενός χρόνου):
να δημιουργήσει μια εικονική μηχανή στο νέφος της Amazon, η οποία θα έχει με
λειτουργικό σύστημα Debian 11 και θα βρίσκεται στην περιοχή eu-north-1. Το
μέγεθος που χρησιμοποιείται είναι το t3.micro, το οποίο είναι διαθέσιμο για
χρήστες εντός της δωρεάν δοκιμαστικής περιόδου ενός χρόνου.
\begin{listing}[!ht]
\begin{bashcode}
@@ -211,31 +218,66 @@ python3 secdep.py --provider aws --create --name test-node --size t3.micro --ima
\end{listing}
Μετά την δημιουργία της εικονικής μηχανής, επιστρέφεται στον χρήση η διεύθυνση
IP της και η εντολή που μπορεί να εκτελέσει προκειμένου να συνδεθεί σε αυτήν
χρησιμοποιώντας το πρωτόκολλο SSH. Η εντολή αυτή σχηματίζεται δυναμικά από το
εργαλείο λαμβάνοντας υπόψιν την θύρα που θα χρησιμοποιηθεί (σε περίπτωση που η
εικονική μηχανή έχει σκληρύνει), το μονοπάτι μέχρι το κλειδί SSH που
δημιουργήθηκε μαζί με την μηχανή στον ίδιο φάκελο με το εργαλείο και την
διεύθυνσή της. Εάν ο χρήστης δεν διαθέτει πρόγραμμα ικανό να συνδεθεί μέσω SSH
σε έναν απομακρυσμένο διακομιστή, υποστηρίζεται και η παράμετρος
\textquote{--ssh}. Χωρίς την παράμετρο \textquote{--yes}, θα ζητηθεί από τον
χρήστη να επιβεβαιώσει την δημιουργία της εικονικής μηχανής παρέχοντας
πληροφορίες σχετικά με τις επιλογές του.
IP της, καθώς και η εντολή που μπορεί να εκτελέσει προκειμένου να συνδεθεί σε
αυτήν χρησιμοποιώντας το πρωτόκολλο SSH. Η εντολή αυτή σχηματίζεται δυναμικά
από το εργαλείο λαμβάνοντας υπόψιν πολλές παραμέτρους. Αρχικά, σε περίπτωση που
η εικονική μηχανή έχει σκληρύνει, η θύρα που θα χρησιμοποιηθεί δεν θα είναι η
προκαθορισμένη. Έπειτα, το πλήρες μονοπάτι μέχρι το κλειδί SSH, το οποίο
δημιουργήθηκε μαζί με την εικονική μηχανή στο ριζικό φάκελο του έργου, θα
αποκτηθεί με βάση την τοποθεσία του εκτελέσιμου. Τέλος, η IP διεύθυνση της
εικονικής μηχανής θα είναι αυτή που επιστρέφεται στον χρήστη. Επομένως, μόλις
ολοκληρωθεί η δημιουργία της εικονικής μηχανής, ο χρήστης είναι σε θέση να
αντιγράψει την εντολή αυτή σε ένα τερματικό και να συνδεθεί στην καινούρια του
εικονική μηχανή.
Με την προσθήκη της παραμέτρου \textquote{--deploy}, θα εκτελεστεί η ίδια
διαδικασία αλλά με την διαφορά πως θα πραγματοποιηθεί εκτέλεση και του αρχείου
harden στην εικονική μηχανή, το οποίο θα σκληρύνει το λειτουργικό της σύστημα
και θα εγκαταστήσει την μηχανή δοχείων Docker την οποία επίσης θα σκληρύνει.
Εάν ο χρήστης δεν διαθέτει πρόγραμμα ικανό να συνδεθεί μέσω SSH σε έναν
απομακρυσμένο διακομιστή, υποστηρίζεται και η παράμετρος \textquote{--ssh}. Η
συγκεκριμένη παράμετρος θα επιστρέψει στον χρήστη μια λίστα με τις διαθέσιμες
εικονικές μηχανές του, ώστε να επιλέξει διαδραστικά μια από αυτές για να
συνδεθεί. Μπορεί προαιρετικά να συνδυαστεί με την παράμετρο
\textquote{--provider} για το φιλτράρισμα της λίστας και με την παράμετρο
\textquote{--port} για επιλογή θύρας. Το μειονέκτημα που θα έχει ο χρήστης
συνδέοντας με αυτόν τον τρόπο, είναι η αδυναμία του έπειτα να εκτελέσει
διαδραστικά προγράμματα τύπου tui \footfullcite{tui} (text-based user
interface), όπως είναι το htop \footfullcite{htop} και το vim
\footfullcite{vim}. Μια περίπτωση εκτέλεσής της είναι η εξής:
\clearpage
\begin{listing}[!ht]
\begin{bashcode}
python3 secdep.py --provider aws --ssh
\end{bashcode}
\caption{Εκτέλεση της παραμέτρου ssh του SecDep}
\label{lst:secdep_ssh}
\vspace*{-10pt}
\end{listing}
Σχετικά με την εντολή δημιουργίας εικονικής μηχανής, χωρίς την παράμετρο
\textquote{--yes}, θα ζητηθεί από τον χρήστη να επιβεβαιώσει την δημιουργία της
εικονικής μηχανής, παρέχοντας πληροφορίες σχετικά με τις επιλογές του. Η
συγκεκριμένη εντολή, μπορεί επιπλέον να συνδυαστεί με την παράμετρο
\textquote{--deploy}. Με την προσθήκη της παραμέτρου αυτής, θα εκτελεστεί η
ίδια διαδικασία αλλά με την διαφορά πως θα πραγματοποιηθεί εκτέλεση και του
αρχείου harden στην εικονική μηχανή, το οποίο θα σκληρύνει το λειτουργικό της
σύστημα και θα εγκαταστήσει την μηχανή δοχείων Docker, την οποία επίσης θα
σκληρύνει. Ένα πλήρες παράδειγμα όπου γίνεται χρήση της παραμέτρου αυτής και
εγκαθίστανται στην εικονική μηχανή δύο δοχεία Docker, είναι το παρακάτω:
\begin{listing}[!ht]
\begin{bashcode}
python3 secdep.py --provider aws --create --name test-node --size t3.micro --image ami-08869bacfa1188ec9 --yes --deploy node mysql
\end{bashcode}
\caption{Εκτέλεση της παραμέτρου create του SecDep, με την παράμετρο deploy για σκλήρυνση}
\label{lst:secdep_harden_docker}
\vspace*{-10pt}
\end{listing}
\noindent Το αποτέλεσμα μετά την δημιουργία εικονικής μηχανής με την παράμετρο
για σκλήρυνση απεικονίζεται ως:
για σκλήρυνση απεικονίζεται στο παρακάτω σχήμα:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = .8\textwidth]{Figures/AWS_hardened/aws-hardened.png}
\includegraphics[width = \textwidth]{Figures/AWS_hardened/aws-hardened.png}
\captionof{figure}{Δημιουργία εικονικής μηχανής με παράμετρο για σκλήρυνση}
\label{fig:aws_hardened}
\end{figure}
@@ -244,14 +286,16 @@ harden στην εικονική μηχανή, το οποίο θα σκληρύ
Με μια ακόμα προσθήκη παραμέτρου, συγκεκριμένα της
\textquote{--docker\_compose}, θα εκτελεστεί στην εικονική μηχανή και ένα
αρχείο docker-compose.yml που θα πρέπει ο χρήστης να έχει μεταφέρει στον ίδιο
φάκελο με το εργαλείο. Για οποιαδήποτε παράμετρο που δεν έχει δοθεί ή έχει
αρχείο docker-compose.yml που θα πρέπει ο χρήστης να έχει μεταφέρει στον ριζικό
φάκελο του SecDep. Για οποιαδήποτε απαραίτητη παράμετρο δεν έχει δοθεί, ή έχει
δοθεί λανθασμένα, θα προτρέπεται ο χρήστης να την δώσει ξανά έως ότου
ολοκληρωθεί η διαδικασία ή ακυρωθεί από τον χρήστη.
\subsection{Εύρεση πληροφοριών πόρων}
Εάν ο χρήστης δεν γνωρίζει τις διαθέσιμες επιλογές για τις παραμέτρους που
εισάγει, υποστηρίζονται ξεχωριστές εντολές που ακολουθούν παρόμοιο μοτίβο για
την κάθε μια. Παραδείγματα εντολών που υποστηρίζονται είναι οι παρακάτω:
εισάγει, υποστηρίζονται ξεχωριστές εντολές, οι οποίες ακολουθούν παρόμοιο
μοτίβο μεταξύ τους. Παραδείγματα εντολών που υποστηρίζονται, είναι τα εξής:
\begin{listing}[!ht]
\begin{bashcode}
@@ -262,13 +306,24 @@ python3 secdep.py --provider aws --listimages --print
\vspace*{-10pt}
\end{listing}
Το αποτέλεσμα της εντολής \ref{lst:secdep-listimages} είναι να εμφανιστεί μια
λίστα με τις διαθέσιμες εικόνες που μπορεί να χρησιμοποιήσει ο χρήστης για την
δημιουργία εικονικών μηχανών. Έπειτα, με την επιλογή μιας από αυτές, θα
εμφανιστούν πληροφορίες σχετικά με την εικόνα που επιλέχθηκε οι οποίες θα είναι
της μορφής που απεικονίζεται παρακάτω.
\noindent Η οθόνη επιλογής πόρου που θα εμφανιστεί στον χρήστη, είναι η
παρακάτω:
\clearpage
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = \textwidth]{Figures/Usage/secdepChooseImage.png}
\captionof{figure}{Οθόνη επιλογής πόρου}
\label{fig:secdep_choose}
\end{figure}
\vspace*{-30pt}
\end{center}
Το αποτέλεσμα της Εντολής \ref{lst:secdep-listimages}, είναι να εμφανιστεί μια
λίστα με τις διαθέσιμες εικόνες που μπορεί να χρησιμοποιήσει ο χρήστης για την
δημιουργία εικονικών μηχανών. Έπειτα, με την διαδραστική επιλογή μιας από
αυτές, θα εμφανιστούν πληροφορίες σχετικά με την εικόνα που επιλέχθηκε, οι
οποίες θα είναι της μορφής που απεικονίζεται παρακάτω.
\begin{listing}[!ht]
\begin{bashcode}
@@ -277,7 +332,7 @@ python3 secdep.py --provider aws --listimages --print
\vspace*{-10pt}
\end{listing}
Από την παραπάνω πληροφορία, ο χρήστης χρειάζεται το αναγνωριστικό (id) της
Από την παραπάνω πληροφορία, ο χρήστης θα πρέπει να καταγράψει το αναγνωριστικό (id) της
εικόνας. Εάν χρειάζεται πληροφορίες σχετικά με τα διαθέσιμα μεγέθη των
εικονικών μηχανών, αυτό επιτυγχάνεται με την εντολή:
@@ -300,10 +355,14 @@ python3 secdep.py --provider aws --listsizes --print
\vspace*{-10pt}
\end{listing}
Από την παραπάνω πληροφορία, το σημαντικό πάλι είναι το αναγνωριστικό (id) του
μεγέθους. Μερικές από τις εντολές που δύναται να χρησιμοποιήσει ένας χρήστης
συχνά μπορεί να είναι για την εμφάνιση εικονικών μηχανών ή την διαγραφή τους.
Αυτές οι δύο λειτουργίες υποστηρίζονται με τις παρακάτω εντολές:
\noindent Από την παραπάνω πληροφορία, το σημαντικό πάλι είναι το αναγνωριστικό
(id) του μεγέθους.
\subsection{Λίστα εικονικών μηχανών}
Μερικές από τις εντολές που δύναται να χρησιμοποιήσει ένας χρήστης συχνά μπορεί
να είναι για την εμφάνιση εικονικών μηχανών ή την διαγραφή τους. Η εμφάνιση
εικονικών μηχανών επιτυγχάνεται με την παρακάτω εντολή:
\begin{listing}[!ht]
\begin{bashcode}
@@ -316,23 +375,37 @@ python3 secdep.py --provider aws --awsregion us-east-2 --list
\clearpage
\noindent Το αποτέλεσμα της παραπάνω εντολής μπορεί να απεικονίζεται ως εξής:
\noindent Το αποτέλεσμά της μπορεί να απεικονίζεται ως εξής:
\begin{center}
\begin{figure}[!ht]
\centering
\includegraphics[width = 1.0\textwidth]{Figures/AWS_listing/aws-instances.png}
\includegraphics[width = \textwidth]{Figures/AWS_listing/aws-instances.png}
\captionof{figure}{Λίστα με τις εικονικές μηχανές που έχουν δημιουργηθεί}
\label{fig:instance_list_output}
\end{figure}
\vspace*{-30pt}
\end{center}
Στο Σχήμα \ref{fig:instance_list_output}, βλέπουμε πως υπήρχε στην περιοχή
\textquote{us-east-2} μια εικονική μηχανή, στην οποία είχε δοθεί το όνομα
\textquote{test-node}. Για κάθε πάροχο, συνδυάζεται το όνομά του στο όνομα της
εικονικής μηχανής που δημιουργείται μέσω αυτού, με σκοπό την ταχύτερη διάκρισή
της όταν ο χρήστης ζητάει λίστα με εικονικές μηχανές κατά μήκος πολλών παρόχων.
Η συγκεκριμένη είχε ήδη διαγραφεί και για τον λόγο αυτό, η κατάστασή της
δηλώνεται ως \textquote{terminated}. Σε αντίθετη περίπτωση, θα βλέπαμε την
τρέχουσα κατάστασή της και τις διάφορες πληροφορίες της. Στις πληροφορίες αυτές
περιλαμβάνονται, η δημόσια και ιδιωτική διεύθυνση IP της, το μέγεθός της, η
διανομή που χρησιμοποιεί, καθώς και λοιπές πληροφορίες σε μορφή JSON, τα
περιεχόμενα των οποίων διαφέρουν από πάροχο σε πάροχο.
Η παράμετρος \textquote{--awsregion} είναι προαιρετική και χρησιμοποιείται
αποκλειστικά για την Amazon. Η παράλειψή της θα είχε ως αποτέλεσμα να γίνει
έρευνα σε όλες τις διαθέσιμες περιοχές. Γεγονός που ενδεχομένως να αποτελούσε
σπατάλη χρόνου.
\subsection{Διαγραφή εικονικής μηχανής}
Με την παρακάτω εντολή, ο χρήστης λαμβάνει μια λίστα με τις διαθέσιμες
εικονικές μηχανές του παρόχου Amazon που έχουν δημιουργηθεί στην περιοχή
eu-north-1 και επιλέγει μια από αυτές για διαγραφή. Μετά από επιτυχή διαγραφή,
@@ -347,12 +420,18 @@ python3 secdep.py --provider aws --action delete --awsregion eu-north-1
\vspace*{-10pt}
\end{listing}
Εάν ήθελε να διαγράψει όλες τις εικονικές μηχανές της περιοχής, η επιλογή της
Εάν ήθελε να διαγράψει όλες τις εικονικές μηχανές της περιοχής, η τιμή της
παραμέτρου \textquote{--action}, από \textquote{delete} θα έπρεπε να
αντικατασταθεί σε \textquote{deleteall}. Με παρόμοιο τρόπο υποστηρίζονται και
εντολές για εκκίνηση, επανεκκίνηση ή παύση εικονικών μηχανών.
\clearpage
\section{Περισσότερες πληροφορίες}
Το SecDep, ως ένα ολοκληρωμένο εργαλείο, παρέχει αρκετές λειτουργίες για την
δημιουργία και διαχείριση εικονικών μηχανών κατά μήκος πολλών παρόχους νέφους.
Τα παραδείγματα εντολών που καλύψαμε στην παρούσα ενότητα, περιορίστηκαν σε
έναν μόνο πάροχο νέφους. Ωστόσο, ορισμένες από τις διαθέσιμες εντολές του
διαφοροποιούνται για τους υπόλοιπους.
Πιο λεπτομερείς οδηγίες χρήσης και εγκατάστασης περιέχονται και στην σελίδα του
αποθετηρίου του SecDep \footfullcite{secdep} μέσω του αρχείου