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

@@ -80,6 +80,7 @@
\textbf{SSH} & \textbf{S}ecure \textbf{SH}ell \\ \textbf{SSH} & \textbf{S}ecure \textbf{SH}ell \\
\textbf{TPM} & \textbf{T}rusted \textbf{P}latform \textbf{M}odule \\ \textbf{TPM} & \textbf{T}rusted \textbf{P}latform \textbf{M}odule \\
\textbf{TUI} & \textbf{T}ext-based \textbf{U}ser \textbf{I}nterface \\
\textbf{UEFI} & \textbf{U}nified \textbf{E}xtensible \textbf{F}irmware \textbf{I}nterface \\ \textbf{UEFI} & \textbf{U}nified \textbf{E}xtensible \textbf{F}irmware \textbf{I}nterface \\

View File

@@ -1221,6 +1221,40 @@
url = {https://github.com/docker/compose}, url = {https://github.com/docker/compose},
} }
@online{pydoctrace,
title = {pydoctrace},
author = {Luc Sorel-Giffo},
url = {https://github.com/lucsorel/pydoctrace},
}
@online{plantuml,
title = {PlantUML},
author = {PlantUML},
url = {https://github.com/plantuml/plantuml},
}
@online{tui,
title = {Linux Jargon Buster: What are GUI, CLI and TUI in Linux?},
author = {Abhishek Prakash},
year = {2024},
publisher = {It's FOSS},
url = {https://itsfoss.com/gui-cli-tui/},
urldate = {2024-02-28},
}
@online{htop,
title = {htop},
author = {Hisham Muhammad},
url = {https://htop.dev/},
}
urldate = {2024-02-28},
@online{vim,
title = {Vim},
author = {Bram Moolenaar},
url = {https://github.com/vim/vim},
}
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)},

View File

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

View File

@@ -175,7 +175,7 @@
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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}{Διάγραμμα περιπτώσεων χρήσης} \captionof{figure}{Διάγραμμα περιπτώσεων χρήσης}
\label{fig:useCaseDiagram} \label{fig:useCaseDiagram}
\end{figure} \end{figure}
@@ -234,7 +234,7 @@ SecDep:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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}{Διάγραμμα ροής - Λίστα εικονικών μηχανών} \captionof{figure}{Διάγραμμα ροής - Λίστα εικονικών μηχανών}
\label{fig:flowchartDiagram2} \label{fig:flowchartDiagram2}
\end{figure} \end{figure}
@@ -252,7 +252,7 @@ SecDep:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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}{Διάγραμμα ροής - Ενέργεια σε εικονική μηχανή} \captionof{figure}{Διάγραμμα ροής - Ενέργεια σε εικονική μηχανή}
\label{fig:flowchartDiagram3} \label{fig:flowchartDiagram3}
\end{figure} \end{figure}
@@ -270,7 +270,7 @@ SecDep:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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 σε εικονική μηχανή} \captionof{figure}{Διάγραμμα ροής - Σύνδεση SSH σε εικονική μηχανή}
\label{fig:flowchartDiagram4} \label{fig:flowchartDiagram4}
\end{figure} \end{figure}
@@ -288,7 +288,7 @@ SecDep:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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}{Διάγραμμα ροής - Απόκτηση πληροφοριών πόρων παρόχου} \captionof{figure}{Διάγραμμα ροής - Απόκτηση πληροφοριών πόρων παρόχου}
\label{fig:flowchartDiagram5} \label{fig:flowchartDiagram5}
\end{figure} \end{figure}
@@ -308,7 +308,7 @@ SecDep:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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}{Διάγραμμα ροής - Δημιουργία εικονικής μηχανής} \captionof{figure}{Διάγραμμα ροής - Δημιουργία εικονικής μηχανής}
\label{fig:flowchartDiagram6} \label{fig:flowchartDiagram6}
\end{figure} \end{figure}
@@ -333,135 +333,13 @@ SecDep:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = 1\textwidth]{Figures/Diagrams/secdep-sequence-diagram.png} \includegraphics[width = \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}
\end{center} \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} \section{Αποφάσεις που πάρθηκαν κατά την ανάπτυξη} \label{developmentDecisions}
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
@@ -569,14 +447,14 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\section{Αρχιτεκτονική Εργαλείου} \label{architecture} \section{Αρχιτεκτονική Εργαλείου} \label{architecture}
Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα Οι διαθέσιμες συναρτήσεις και μεταβλητές του secdep.py, απεικονίζονται στα
Σχήματα \ref{fig:secdepFunctions} και \ref{fig:secdepVariables} αντίστοιχα. Η Σχήματα \ref{fig:secdepFunctions}, \ref{fig:secdepVariables1} και
δημιουργία τους πραγματοποιήθηκε με το εργαλείο \textquote{doxygen} \ref{fig:secdepVariables2} αντίστοιχα. Η δημιουργία τους πραγματοποιήθηκε με το
\footfullcite{doxygen}. εργαλείο \textquote{doxygen} \footfullcite{doxygen}.
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = .9\textwidth]{Figures/doxygen/secdepFunctions.png} \includegraphics[width = \textwidth]{Figures/doxygen/secdepFunctions.png}
\captionof{figure}{Συναρτήσεις του secdep.py} \captionof{figure}{Συναρτήσεις του secdep.py}
\label{fig:secdepFunctions} \label{fig:secdepFunctions}
\end{figure} \end{figure}
@@ -586,15 +464,165 @@ Python, πάρθηκε επίσης η απόφαση για την υποστή
\begin{center} \begin{center}
\begin{figure}[ht] \begin{figure}[ht]
\centering \centering
\includegraphics[width = .9\textwidth]{Figures/doxygen/secdepVariables.png} \includegraphics[width = \textwidth]{Figures/doxygen/secdepVariables1.png}
\captionof{figure}{Μεταβλητές του secdep.py} \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} \end{figure}
\vspace*{-30pt} \vspace*{-30pt}
\end{center} \end{center}
\clearpage \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 αποτελείται από δύο εκτελέσιμα αρχεία. Το πρώτο αρχείο, το Το SecDep αποτελείται από δύο εκτελέσιμα αρχεία. Το πρώτο αρχείο, το
\textquote{secdep.py}, είναι το κύριο αρχείο του προγράμματος. Αυτό το αρχείο \textquote{secdep.py}, είναι το κύριο αρχείο του προγράμματος. Αυτό το αρχείο
είναι υπεύθυνο για την επικοινωνία με τους παρόχους νέφους και την διαχείριση είναι υπεύθυνο για την επικοινωνία με τους παρόχους νέφους και την διαχείριση
@@ -615,17 +643,25 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\begin{itemize} \begin{itemize}
\item \textbf{provider} \item \textbf{provider}: Ο πάροχος νέφους στο νέφος του οποίου θα
\item \textbf{name} δημιουργηθεί η εικονική μηχανή (aws, gce, azure).
\item \textbf{location}
\item \textbf{size}
\item \textbf{image}
\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} \end{itemize}
@@ -637,10 +673,10 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\begin{itemize} \begin{itemize}
\item \textbf{start} \item \textbf{start} (εκκίνηση της εικονικής μηχανής)
\item \textbf{stop} \item \textbf{stop} (παύση της εικονικής μηχανής)
\item \textbf{reboot} \item \textbf{reboot} (επανεκκίνηση της εικονικής μηχανής)
\item \textbf{delete} \item \textbf{delete} (διαγραφή της εικονικής μηχανής)
\end{itemize} \end{itemize}
@@ -649,7 +685,7 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{list\_all\_nodes}: Η συνάρτηση \textquote{list\_all\_nodes}, \item \textbf{list\_all\_nodes}: Η συνάρτηση \textquote{list\_all\_nodes},
είναι αυτή που εμφανίζει τις εικονικές μηχανές που διαχειρίζεται το είναι αυτή που εμφανίζει τις εικονικές μηχανές που διαχειρίζεται το
SecDep. Χωρίς παραμέτρους θα εμφάνιζε όλες τις εικονικές μηχανές από SecDep. Χωρίς παραμέτρους θα εμφάνιζε όλες τις εικονικές μηχανές από
όλους τους παρόχους. Επειδή όμως δεν είναι πάντοτε απαραίτητο να όλους τους παρόχους. Επειδή, όμως, δεν είναι πάντοτε απαραίτητο να
εμφανίζονται όλες οι εικονικές μηχανές, ο χρήστης μπορεί να δώσει τις εμφανίζονται όλες οι εικονικές μηχανές, ο χρήστης μπορεί να δώσει τις
παρακάτω παραμέτρους: παρακάτω παραμέτρους:
@@ -659,6 +695,9 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{filterIn}: Χρησιμοποιείται για το φιλτράρισμα της \item \textbf{filterIn}: Χρησιμοποιείται για το φιλτράρισμα της
λίστας κατά την χρήση της συνάρτησης \textquote{node\_action}. λίστας κατά την χρήση της συνάρτησης \textquote{node\_action}.
Με βάση την τιμή της ενέργειας που θέλει να πραγματοποιήσει ο
χρήστης, δεν περιλαμβάνονται στην λίστα, οι εικονικές μηχανές
για τις οποίες δεν είναι δυνατή η εκτέλεση της ενέργειας αυτής.
\item \textbf{awsRegion}: Μόνο για τον πάροχο AWS. Χρησιμοποιείται \item \textbf{awsRegion}: Μόνο για τον πάροχο AWS. Χρησιμοποιείται
για την επιλογή της περιοχής. Δίχως την παράμετρο αυτή, θα για την επιλογή της περιοχής. Δίχως την παράμετρο αυτή, θα
@@ -670,9 +709,9 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\end{itemize} \end{itemize}
\noindent Το αρχείο harden, αποτελείται από πολλές συναρτήσεις που εκτελούνται \noindent Το αρχείο harden, αποτελείται από πολλές συναρτήσεις, οι οποίες
με την σειρά προκειμένου να ασφαλιστεί το σύστημα στο οποίο εκτελείται. Οι πιο εκτελούνται με την σειρά προκειμένου να ασφαλιστεί το σύστημα στο οποίο
αξιοσημείωτες αυτών είναι: εκτελείται. Οι πιο αξιοσημείωτες αυτών είναι:
\begin{itemize} \begin{itemize}
@@ -687,7 +726,7 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
\item \textbf{kernelSecurityModuleInit}: \item \textbf{kernelSecurityModuleInit}:
Η συνάρτηση υπεύθυνη για την εγκατάσταση/ρύθμιση του κατάλληλου για την Η συνάρτηση υπεύθυνη για την εγκατάσταση/ρύθμιση του κατάλληλου για την
διανομή kernel security module. διανομή (της εικονικής μηχανής) kernel security module.
\item \textbf{configureFail2ban}: \item \textbf{configureFail2ban}:
@@ -696,3 +735,125 @@ Docker. Το harden, εκτελείται μόνο στις εικονικές
fail2ban για την προστασία από επιθέσεις brute force. fail2ban για την προστασία από επιθέσεις brute force.
\end{itemize} \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} \section{Εγκατάσταση του πηγαίου κώδικα του SecDep}
Για την εγκατάσταση του πηγαίου κώδικα του SecDep απαιτείται η χρήση του Για την εκτέλεση του SecDep είναι απαραίτητη προϋπόθεση να υπάρχει
προγράμματος git ή η πρόσβαση σε έναν φυλλομετρητή. Στην περίπτωση που ο εγκατεστημένη η python με έκδοση μεγαλύτερη ή ίση της 3.7. Για την εγκατάσταση
χρήστης δεν έχει εγκατεστημένο το git, πρέπει να μεταβεί στην ιστοσελίδα του του πηγαίου κώδικα του SecDep απαιτείται η χρήση του προγράμματος git ή η
αποθετηρίου \footfullcite{secdep} και να επιλέξει είτε την επιλογή αποθήκευσης πρόσβαση σε έναν φυλλομετρητή. Στην περίπτωση που ο χρήστης δεν έχει
ως αρχείο zip, είτε ως tar.gz όπως απεικονίζεται παρακάτω. Έπειτα, πρέπει να εγκατεστημένο το git, πρέπει να μεταβεί στην ιστοσελίδα του αποθετηρίου
αποσυμπιεστεί με το κατάλληλο για τον τύπο αρχείου πρόγραμμα. \footfullcite{secdep} του κώδικα και να επιλέξει είτε την επιλογή αποθήκευσης
ως αρχείο zip, είτε ως tar.gz όπως απεικονίζεται παρακάτω. Έπειτα, το
εκφορτωμένο συμπιεσμένο αρχείο πρέπει να αποσυμπιεστεί με το κατάλληλο για τον
τύπο αρχείου πρόγραμμα.
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
@@ -41,7 +44,8 @@ git clone https://git.konsthol.eu/konsthol/SecDep.git
\subsection{Εγκατάσταση των απαιτούμενων εξαρτήσεων} \subsection{Εγκατάσταση των απαιτούμενων εξαρτήσεων}
Μετά την ολοκλήρωση της εγκατάστασης του πηγαίου κώδικα του SecDep, αφού ο Μετά την ολοκλήρωση της εγκατάστασης του πηγαίου κώδικα του SecDep, αφού ο
χρήστης μεταβεί στον φάκελο με τα περιεχόμενα που απεικονίζονται στο Σχήμα χρήστης μεταβεί στον φάκελο με τα περιεχόμενα (δηλ. του ριζικού φακέλου του
έργου λογισμικού που εκφορτώθηκε) που απεικονίζονται στο Σχήμα
\ref{fig:secdep_install_without_git}, επιβάλλεται να γίνει χρήση του \ref{fig:secdep_install_without_git}, επιβάλλεται να γίνει χρήση του
προγράμματος pip \footfullcite{pip} για την εγκατάσταση των βιβλιοθηκών που προγράμματος pip \footfullcite{pip} για την εγκατάσταση των βιβλιοθηκών που
απαιτούνται για την λειτουργία του εργαλείου. Αυτό επιτυγχάνεται με την απαιτούνται για την λειτουργία του εργαλείου. Αυτό επιτυγχάνεται με την
@@ -77,7 +81,7 @@ pip install -r requirements.txt --break-system-packages
πάροχοι υπηρεσιών IaaS, επιλέχθηκε για την παρούσα ενότητα η κάλυψη της χρήσης πάροχοι υπηρεσιών IaaS, επιλέχθηκε για την παρούσα ενότητα η κάλυψη της χρήσης
των υπηρεσιών της Amazon έναντι της Azure και της GCE, λόγω της ευκολότερης και των υπηρεσιών της Amazon έναντι της Azure και της GCE, λόγω της ευκολότερης και
απλούστερης διαδικασίας αυθεντικοποίησης που παρέχει. Συγκεκριμένα, απαιτεί την απλούστερης διαδικασίας αυθεντικοποίησης που παρέχει. Συγκεκριμένα, απαιτεί την
συμπλήρωση μονάχα δύο πεδίων. Αυτά είναι, τα συμπλήρωση μονάχα δύο πεδίων. Αυτά στην περίπτωση του εργαλείου μας είναι, τα
\textquote{SECDEP\_AWS\_ACCESS\_KEY} και \textquote{SECDEP\_AWS\_SECRET\_KEY}. \textquote{SECDEP\_AWS\_ACCESS\_KEY} και \textquote{SECDEP\_AWS\_SECRET\_KEY}.
\subsection{Δημιουργία κλειδιού πρόσβασης με την AWS} \subsection{Δημιουργία κλειδιού πρόσβασης με την AWS}
@@ -90,28 +94,28 @@ pip install -r requirements.txt --break-system-packages
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \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} \captionof{figure}{Μετάβαση στην ενότητα IAM της AWS}
\label{fig:go_to_iam} \label{fig:go_to_iam}
\end{figure} \end{figure}
\vspace*{-30pt} \vspace*{-30pt}
\end{center} \end{center}
\clearpage
\noindent Έπειτα, πρέπει να εισέλθει στην ενότητα \textquote{Manage Access \noindent Έπειτα, πρέπει να εισέλθει στην ενότητα \textquote{Manage Access
Keys} και να δημιουργήσει ένα νέο κλειδί πρόσβασης όπως φαίνεται παρακάτω: Keys} και να δημιουργήσει ένα νέο κλειδί πρόσβασης όπως φαίνεται παρακάτω:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = .6\textwidth]{Figures/AWS_setup/create_access_key.png} \includegraphics[width = \textwidth]{Figures/AWS_setup/create_access_key.png}
\captionof{figure}{Δημιουργία νέου κλειδιού πρόσβασης} \captionof{figure}{Δημιουργία νέου κλειδιού πρόσβασης}
\label{fig:create_access_key} \label{fig:create_access_key}
\end{figure} \end{figure}
\vspace*{-30pt} \vspace*{-30pt}
\end{center} \end{center}
\clearpage
\noindent Η αντιστοιχία των απαιτούμενων πεδίων με το κλειδί πρόσβασης που \noindent Η αντιστοιχία των απαιτούμενων πεδίων με το κλειδί πρόσβασης που
δημιουργήθηκε είναι η εξής: δημιουργήθηκε είναι η εξής:
@@ -161,10 +165,12 @@ python3 secdep.py --init aws
Έπειτα, θα ζητηθούν από τον χρήστη τα αντίστοιχα διαπιστευτήρια. Οι μεταβλητές Έπειτα, θα ζητηθούν από τον χρήστη τα αντίστοιχα διαπιστευτήρια. Οι μεταβλητές
αυτές θα αποθηκευτούν στο αρχείο \textquote{.env} που θα δημιουργηθεί στον αυτές θα αποθηκευτούν στο αρχείο \textquote{.env} που θα δημιουργηθεί στον
φάκελο που βρίσκεται το εκτελέσιμο του SecDep. Στην περίπτωση που ο χρήστης ριζικό φάκελο του έργου. Εάν το εκτελέσιμο μεταφερθεί κάποτε σε νέο φάκελο,
μελλοντικά θέλει να αλλάξει τις τιμές των μεταβλητών ή να προσθέσει νέες, δίχως το αρχείο “.env”, τότε αυτό θα αναδημιουργηθεί στην νέα τοποθεσία. Στην
μπορεί να το κάνει αλλάζοντας τα περιεχόμενα του αρχείου \textquote{.env} περίπτωση που ο χρήστης μελλοντικά θέλει να αλλάξει τις τιμές των μεταβλητών ή
χειροκίνητα με έναν επεξεργαστή κειμένου ή με την εκτέλεση της εντολής: να προσθέσει νέες, μπορεί να το κάνει αλλάζοντας τα περιεχόμενα του αρχείου
\textquote{.env} χειροκίνητα με έναν επεξεργαστή κειμένου ή με την εκτέλεση της
εντολής:
\begin{listing}[!ht] \begin{listing}[!ht]
\begin{bashcode} \begin{bashcode}
@@ -179,8 +185,6 @@ python3 secdep.py --edit
αλλάξει και θα αναγράφει την προηγούμενη τιμή της ώστε να γίνεται ευδιάκριτη η αλλάξει και θα αναγράφει την προηγούμενη τιμή της ώστε να γίνεται ευδιάκριτη η
αλλαγή. αλλαγή.
\clearpage
\section{Επίδειξη του SecDep} \section{Επίδειξη του SecDep}
Ανά πάσα στιγμή, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για να λάβει Ανά πάσα στιγμή, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για να λάβει
@@ -195,11 +199,14 @@ python3 secdep.py --help
\vspace*{-10pt} \vspace*{-10pt}
\end{listing} \end{listing}
\subsection{Δημιουργία εικονικής μηχανής}
Σχετικά με την δημιουργία εικονικών μηχανών, που είναι και μια από τις βασικές Σχετικά με την δημιουργία εικονικών μηχανών, που είναι και μια από τις βασικές
λειτουργίες του SecDep, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για λειτουργίες του SecDep, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για
να δημιουργήσει μια εικονική μηχανή με λειτουργικό σύστημα Debian 11 στην να δημιουργήσει μια εικονική μηχανή στο νέφος της Amazon, η οποία θα έχει με
περιοχή eu-north-1 με μέγεθος t3.micro (διαθέσιμο για χρήστες εντός της δωρεάν λειτουργικό σύστημα Debian 11 και θα βρίσκεται στην περιοχή eu-north-1. Το
δοκιμαστικής περιόδου ενός χρόνου): μέγεθος που χρησιμοποιείται είναι το t3.micro, το οποίο είναι διαθέσιμο για
χρήστες εντός της δωρεάν δοκιμαστικής περιόδου ενός χρόνου.
\begin{listing}[!ht] \begin{listing}[!ht]
\begin{bashcode} \begin{bashcode}
@@ -211,31 +218,66 @@ python3 secdep.py --provider aws --create --name test-node --size t3.micro --ima
\end{listing} \end{listing}
Μετά την δημιουργία της εικονικής μηχανής, επιστρέφεται στον χρήση η διεύθυνση Μετά την δημιουργία της εικονικής μηχανής, επιστρέφεται στον χρήση η διεύθυνση
IP της και η εντολή που μπορεί να εκτελέσει προκειμένου να συνδεθεί σε αυτήν IP της, καθώς και η εντολή που μπορεί να εκτελέσει προκειμένου να συνδεθεί σε
χρησιμοποιώντας το πρωτόκολλο SSH. Η εντολή αυτή σχηματίζεται δυναμικά από το αυτήν χρησιμοποιώντας το πρωτόκολλο SSH. Η εντολή αυτή σχηματίζεται δυναμικά
εργαλείο λαμβάνοντας υπόψιν την θύρα που θα χρησιμοποιηθεί (σε περίπτωση που η από το εργαλείο λαμβάνοντας υπόψιν πολλές παραμέτρους. Αρχικά, σε περίπτωση που
εικονική μηχανή έχει σκληρύνει), το μονοπάτι μέχρι το κλειδί SSH που η εικονική μηχανή έχει σκληρύνει, η θύρα που θα χρησιμοποιηθεί δεν θα είναι η
δημιουργήθηκε μαζί με την μηχανή στον ίδιο φάκελο με το εργαλείο και την προκαθορισμένη. Έπειτα, το πλήρες μονοπάτι μέχρι το κλειδί SSH, το οποίο
διεύθυνσή της. Εάν ο χρήστης δεν διαθέτει πρόγραμμα ικανό να συνδεθεί μέσω SSH δημιουργήθηκε μαζί με την εικονική μηχανή στο ριζικό φάκελο του έργου, θα
σε έναν απομακρυσμένο διακομιστή, υποστηρίζεται και η παράμετρος αποκτηθεί με βάση την τοποθεσία του εκτελέσιμου. Τέλος, η IP διεύθυνση της
\textquote{--ssh}. Χωρίς την παράμετρο \textquote{--yes}, θα ζητηθεί από τον εικονικής μηχανής θα είναι αυτή που επιστρέφεται στον χρήστη. Επομένως, μόλις
χρήστη να επιβεβαιώσει την δημιουργία της εικονικής μηχανής παρέχοντας ολοκληρωθεί η δημιουργία της εικονικής μηχανής, ο χρήστης είναι σε θέση να
πληροφορίες σχετικά με τις επιλογές του. αντιγράψει την εντολή αυτή σε ένα τερματικό και να συνδεθεί στην καινούρια του
εικονική μηχανή.
Με την προσθήκη της παραμέτρου \textquote{--deploy}, θα εκτελεστεί η ίδια Εάν ο χρήστης δεν διαθέτει πρόγραμμα ικανό να συνδεθεί μέσω SSH σε έναν
διαδικασία αλλά με την διαφορά πως θα πραγματοποιηθεί εκτέλεση και του αρχείου απομακρυσμένο διακομιστή, υποστηρίζεται και η παράμετρος \textquote{--ssh}. Η
harden στην εικονική μηχανή, το οποίο θα σκληρύνει το λειτουργικό της σύστημα συγκεκριμένη παράμετρος θα επιστρέψει στον χρήστη μια λίστα με τις διαθέσιμες
και θα εγκαταστήσει την μηχανή δοχείων Docker την οποία επίσης θα σκληρύνει. εικονικές μηχανές του, ώστε να επιλέξει διαδραστικά μια από αυτές για να
συνδεθεί. Μπορεί προαιρετικά να συνδυαστεί με την παράμετρο
\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 Το αποτέλεσμα μετά την δημιουργία εικονικής μηχανής με την παράμετρο \noindent Το αποτέλεσμα μετά την δημιουργία εικονικής μηχανής με την παράμετρο
για σκλήρυνση απεικονίζεται ως: για σκλήρυνση απεικονίζεται στο παρακάτω σχήμα:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = .8\textwidth]{Figures/AWS_hardened/aws-hardened.png} \includegraphics[width = \textwidth]{Figures/AWS_hardened/aws-hardened.png}
\captionof{figure}{Δημιουργία εικονικής μηχανής με παράμετρο για σκλήρυνση} \captionof{figure}{Δημιουργία εικονικής μηχανής με παράμετρο για σκλήρυνση}
\label{fig:aws_hardened} \label{fig:aws_hardened}
\end{figure} \end{figure}
@@ -244,14 +286,16 @@ harden στην εικονική μηχανή, το οποίο θα σκληρύ
Με μια ακόμα προσθήκη παραμέτρου, συγκεκριμένα της Με μια ακόμα προσθήκη παραμέτρου, συγκεκριμένα της
\textquote{--docker\_compose}, θα εκτελεστεί στην εικονική μηχανή και ένα \textquote{--docker\_compose}, θα εκτελεστεί στην εικονική μηχανή και ένα
αρχείο docker-compose.yml που θα πρέπει ο χρήστης να έχει μεταφέρει στον ίδιο αρχείο docker-compose.yml που θα πρέπει ο χρήστης να έχει μεταφέρει στον ριζικό
φάκελο με το εργαλείο. Για οποιαδήποτε παράμετρο που δεν έχει δοθεί ή έχει φάκελο του SecDep. Για οποιαδήποτε απαραίτητη παράμετρο δεν έχει δοθεί, ή έχει
δοθεί λανθασμένα, θα προτρέπεται ο χρήστης να την δώσει ξανά έως ότου δοθεί λανθασμένα, θα προτρέπεται ο χρήστης να την δώσει ξανά έως ότου
ολοκληρωθεί η διαδικασία ή ακυρωθεί από τον χρήστη. ολοκληρωθεί η διαδικασία ή ακυρωθεί από τον χρήστη.
\subsection{Εύρεση πληροφοριών πόρων}
Εάν ο χρήστης δεν γνωρίζει τις διαθέσιμες επιλογές για τις παραμέτρους που Εάν ο χρήστης δεν γνωρίζει τις διαθέσιμες επιλογές για τις παραμέτρους που
εισάγει, υποστηρίζονται ξεχωριστές εντολές που ακολουθούν παρόμοιο μοτίβο για εισάγει, υποστηρίζονται ξεχωριστές εντολές, οι οποίες ακολουθούν παρόμοιο
την κάθε μια. Παραδείγματα εντολών που υποστηρίζονται είναι οι παρακάτω: μοτίβο μεταξύ τους. Παραδείγματα εντολών που υποστηρίζονται, είναι τα εξής:
\begin{listing}[!ht] \begin{listing}[!ht]
\begin{bashcode} \begin{bashcode}
@@ -262,13 +306,24 @@ python3 secdep.py --provider aws --listimages --print
\vspace*{-10pt} \vspace*{-10pt}
\end{listing} \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{listing}[!ht]
\begin{bashcode} \begin{bashcode}
@@ -277,7 +332,7 @@ python3 secdep.py --provider aws --listimages --print
\vspace*{-10pt} \vspace*{-10pt}
\end{listing} \end{listing}
Από την παραπάνω πληροφορία, ο χρήστης χρειάζεται το αναγνωριστικό (id) της Από την παραπάνω πληροφορία, ο χρήστης θα πρέπει να καταγράψει το αναγνωριστικό (id) της
εικόνας. Εάν χρειάζεται πληροφορίες σχετικά με τα διαθέσιμα μεγέθη των εικόνας. Εάν χρειάζεται πληροφορίες σχετικά με τα διαθέσιμα μεγέθη των
εικονικών μηχανών, αυτό επιτυγχάνεται με την εντολή: εικονικών μηχανών, αυτό επιτυγχάνεται με την εντολή:
@@ -300,10 +355,14 @@ python3 secdep.py --provider aws --listsizes --print
\vspace*{-10pt} \vspace*{-10pt}
\end{listing} \end{listing}
Από την παραπάνω πληροφορία, το σημαντικό πάλι είναι το αναγνωριστικό (id) του \noindent Από την παραπάνω πληροφορία, το σημαντικό πάλι είναι το αναγνωριστικό
μεγέθους. Μερικές από τις εντολές που δύναται να χρησιμοποιήσει ένας χρήστης (id) του μεγέθους.
συχνά μπορεί να είναι για την εμφάνιση εικονικών μηχανών ή την διαγραφή τους.
Αυτές οι δύο λειτουργίες υποστηρίζονται με τις παρακάτω εντολές: \subsection{Λίστα εικονικών μηχανών}
Μερικές από τις εντολές που δύναται να χρησιμοποιήσει ένας χρήστης συχνά μπορεί
να είναι για την εμφάνιση εικονικών μηχανών ή την διαγραφή τους. Η εμφάνιση
εικονικών μηχανών επιτυγχάνεται με την παρακάτω εντολή:
\begin{listing}[!ht] \begin{listing}[!ht]
\begin{bashcode} \begin{bashcode}
@@ -316,23 +375,37 @@ python3 secdep.py --provider aws --awsregion us-east-2 --list
\clearpage \clearpage
\noindent Το αποτέλεσμα της παραπάνω εντολής μπορεί να απεικονίζεται ως εξής: \noindent Το αποτέλεσμά της μπορεί να απεικονίζεται ως εξής:
\begin{center} \begin{center}
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
\includegraphics[width = 1.0\textwidth]{Figures/AWS_listing/aws-instances.png} \includegraphics[width = \textwidth]{Figures/AWS_listing/aws-instances.png}
\captionof{figure}{Λίστα με τις εικονικές μηχανές που έχουν δημιουργηθεί} \captionof{figure}{Λίστα με τις εικονικές μηχανές που έχουν δημιουργηθεί}
\label{fig:instance_list_output} \label{fig:instance_list_output}
\end{figure} \end{figure}
\vspace*{-30pt} \vspace*{-30pt}
\end{center} \end{center}
Στο Σχήμα \ref{fig:instance_list_output}, βλέπουμε πως υπήρχε στην περιοχή
\textquote{us-east-2} μια εικονική μηχανή, στην οποία είχε δοθεί το όνομα
\textquote{test-node}. Για κάθε πάροχο, συνδυάζεται το όνομά του στο όνομα της
εικονικής μηχανής που δημιουργείται μέσω αυτού, με σκοπό την ταχύτερη διάκρισή
της όταν ο χρήστης ζητάει λίστα με εικονικές μηχανές κατά μήκος πολλών παρόχων.
Η συγκεκριμένη είχε ήδη διαγραφεί και για τον λόγο αυτό, η κατάστασή της
δηλώνεται ως \textquote{terminated}. Σε αντίθετη περίπτωση, θα βλέπαμε την
τρέχουσα κατάστασή της και τις διάφορες πληροφορίες της. Στις πληροφορίες αυτές
περιλαμβάνονται, η δημόσια και ιδιωτική διεύθυνση IP της, το μέγεθός της, η
διανομή που χρησιμοποιεί, καθώς και λοιπές πληροφορίες σε μορφή JSON, τα
περιεχόμενα των οποίων διαφέρουν από πάροχο σε πάροχο.
Η παράμετρος \textquote{--awsregion} είναι προαιρετική και χρησιμοποιείται Η παράμετρος \textquote{--awsregion} είναι προαιρετική και χρησιμοποιείται
αποκλειστικά για την Amazon. Η παράλειψή της θα είχε ως αποτέλεσμα να γίνει αποκλειστικά για την Amazon. Η παράλειψή της θα είχε ως αποτέλεσμα να γίνει
έρευνα σε όλες τις διαθέσιμες περιοχές. Γεγονός που ενδεχομένως να αποτελούσε έρευνα σε όλες τις διαθέσιμες περιοχές. Γεγονός που ενδεχομένως να αποτελούσε
σπατάλη χρόνου. σπατάλη χρόνου.
\subsection{Διαγραφή εικονικής μηχανής}
Με την παρακάτω εντολή, ο χρήστης λαμβάνει μια λίστα με τις διαθέσιμες Με την παρακάτω εντολή, ο χρήστης λαμβάνει μια λίστα με τις διαθέσιμες
εικονικές μηχανές του παρόχου Amazon που έχουν δημιουργηθεί στην περιοχή εικονικές μηχανές του παρόχου Amazon που έχουν δημιουργηθεί στην περιοχή
eu-north-1 και επιλέγει μια από αυτές για διαγραφή. Μετά από επιτυχή διαγραφή, eu-north-1 και επιλέγει μια από αυτές για διαγραφή. Μετά από επιτυχή διαγραφή,
@@ -347,12 +420,18 @@ python3 secdep.py --provider aws --action delete --awsregion eu-north-1
\vspace*{-10pt} \vspace*{-10pt}
\end{listing} \end{listing}
Εάν ήθελε να διαγράψει όλες τις εικονικές μηχανές της περιοχής, η επιλογή της Εάν ήθελε να διαγράψει όλες τις εικονικές μηχανές της περιοχής, η τιμή της
παραμέτρου \textquote{--action}, από \textquote{delete} θα έπρεπε να παραμέτρου \textquote{--action}, από \textquote{delete} θα έπρεπε να
αντικατασταθεί σε \textquote{deleteall}. Με παρόμοιο τρόπο υποστηρίζονται και αντικατασταθεί σε \textquote{deleteall}. Με παρόμοιο τρόπο υποστηρίζονται και
εντολές για εκκίνηση, επανεκκίνηση ή παύση εικονικών μηχανών. εντολές για εκκίνηση, επανεκκίνηση ή παύση εικονικών μηχανών.
\clearpage \section{Περισσότερες πληροφορίες}
Το SecDep, ως ένα ολοκληρωμένο εργαλείο, παρέχει αρκετές λειτουργίες για την
δημιουργία και διαχείριση εικονικών μηχανών κατά μήκος πολλών παρόχους νέφους.
Τα παραδείγματα εντολών που καλύψαμε στην παρούσα ενότητα, περιορίστηκαν σε
έναν μόνο πάροχο νέφους. Ωστόσο, ορισμένες από τις διαθέσιμες εντολές του
διαφοροποιούνται για τους υπόλοιπους.
Πιο λεπτομερείς οδηγίες χρήσης και εγκατάστασης περιέχονται και στην σελίδα του Πιο λεπτομερείς οδηγίες χρήσης και εγκατάστασης περιέχονται και στην σελίδα του
αποθετηρίου του SecDep \footfullcite{secdep} μέσω του αρχείου αποθετηρίου του SecDep \footfullcite{secdep} μέσω του αρχείου

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB