Merging 'WIP: Do Not Merge This Branch' Into Master
@@ -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 \\
|
||||||
|
|
||||||
|
|||||||
@@ -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)},
|
||||||
|
|||||||
@@ -263,6 +263,8 @@ Docker. Στην ενότητα αυτή θα γίνει αναφορά σε ε
|
|||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
\item \textbf{Σύγκριση με JShielder}:
|
\item \textbf{Σύγκριση με JShielder}:
|
||||||
|
|
||||||
Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος
|
Το JShielder παρέχει ένα ικανοποιητικό εύρος σκλήρυνσης του συστήματος
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|
||||||
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
|
Κατά την ανάπτυξη του συστήματος, προκειμένου να επιτευχθούν οι στόχοι που
|
||||||
@@ -476,7 +354,7 @@ pydeps -T png --cluster --include-missing --max-bacon=1 --noshow --reverse --ran
|
|||||||
\footfullcite{python}. Επιπροσθέτως, η libcloud είναι πιο διαδεδομένη, ενώ η
|
\footfullcite{python}. Επιπροσθέτως, η libcloud είναι πιο διαδεδομένη, ενώ η
|
||||||
γλώσσα python αποτελεί μια πιο ευέλικτη επιλογή για τις ανάγκες της ανάπτυξης
|
γλώσσα python αποτελεί μια πιο ευέλικτη επιλογή για τις ανάγκες της ανάπτυξης
|
||||||
του εργαλείου μας. Αυτό συμβαίνει διότι σε σχέση με την Java, η python είναι
|
του εργαλείου μας. Αυτό συμβαίνει διότι σε σχέση με την Java, η python είναι
|
||||||
απλούστερη στην σύνταξή της, προεγκατεστημένη σε πολλά λειτουργικά συστήματα
|
απλούστερη στην σύνταξή της, προ εγκατεστημένη σε πολλά λειτουργικά συστήματα
|
||||||
και διαθέτει πολλές επιβοηθητικές βιβλιοθήκες, επίσημες ή από τρίτους, οι
|
και διαθέτει πολλές επιβοηθητικές βιβλιοθήκες, επίσημες ή από τρίτους, οι
|
||||||
οποίες δύναται να εμπλουτίσουν τα προγράμματα σε python, με παραπάνω
|
οποίες δύναται να εμπλουτίσουν τα προγράμματα σε python, με παραπάνω
|
||||||
λειτουργίες.
|
λειτουργίες.
|
||||||
@@ -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}
|
||||||
|
|||||||
@@ -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} μέσω του αρχείου
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 238 KiB After Width: | Height: | Size: 345 KiB |
BIN
Figures/AWS_listing/aws-instancesOLD.png
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
Figures/Diagrams/component/getAwsImage.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
Figures/Diagrams/component/listAllRegionalAwsNodes.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
Figures/Usage/secdepChooseImage.png
Normal file
|
After Width: | Height: | Size: 316 KiB |
BIN
Figures/doxygen/pic-selected-28-02-24_22-09-23.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 152 KiB |
BIN
Figures/doxygen/secdepFunctionsOld.png
Normal file
|
After Width: | Height: | Size: 161 KiB |
BIN
Figures/doxygen/secdepVariables1.png
Normal file
|
After Width: | Height: | Size: 156 KiB |
BIN
Figures/doxygen/secdepVariables2.png
Normal file
|
After Width: | Height: | Size: 199 KiB |