384 lines
21 KiB
TeX
384 lines
21 KiB
TeX
\chapter{Εγκατάσταση \& Επίδειξη του εργαλείου SecDep} \label{installationANDShowcase}
|
||
|
||
\noindent Στην παρούσα ενότητα θα παρουσιαστεί η διαδικασία εγκατάστασης του
|
||
εργαλείου SecDep, καθώς και η ρύθμισή του για την χρήση των υποδομών νέφους της
|
||
Amazon. Μετά την ολοκλήρωση των παραπάνω διαδικασιών θα πραγματοποιηθεί
|
||
επίδειξη της λειτουργίας του με βάση ορισμένα σενάρια χρήσης.
|
||
|
||
\section{Εγκατάσταση του πηγαίου κώδικα του SecDep}
|
||
|
||
Για την εγκατάσταση του πηγαίου κώδικα του SecDep απαιτείται η χρήση του
|
||
προγράμματος git ή η πρόσβαση σε έναν φυλλομετρητή. Στην περίπτωση που ο
|
||
χρήστης δεν έχει εγκατεστημένο το git, πρέπει να μεταβεί στην ιστοσελίδα του
|
||
αποθετηρίου \footfullcite{secdep} και να επιλέξει είτε την επιλογή αποθήκευσης
|
||
ως αρχείο zip, είτε ως tar.gz όπως απεικονίζεται παρακάτω. Έπειτα, πρέπει να
|
||
αποσυμπιεστεί με το κατάλληλο για τον τύπο αρχείου πρόγραμμα.
|
||
|
||
\begin{center}
|
||
\begin{figure}[!ht]
|
||
\centering
|
||
\includegraphics[width = .7\textwidth]{Figures/Installation/secdep_install_without_git.png}
|
||
\captionof{figure}{Αποθήκευση του πηγαίου κώδικα του SecDep ως αρχείο}
|
||
\label{fig:secdep_install_without_git}
|
||
\end{figure}
|
||
\vspace*{-30pt}
|
||
\end{center}
|
||
|
||
\clearpage
|
||
|
||
Η πιο εύκολη μέθοδος για την εγκατάσταση του SecDep είναι η χρήση του git η
|
||
οποία απαιτεί μονάχα την εκτέλεση της παρακάτω εντολής.
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
git clone https://git.konsthol.eu/konsthol/SecDep.git
|
||
\end{bashcode}
|
||
\caption{Εγκατάσταση του SecDep με την χρήση του git}
|
||
\label{lst:secdep_install_with_git}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
\subsection{Εγκατάσταση των απαιτούμενων εξαρτήσεων}
|
||
|
||
Μετά την ολοκλήρωση της εγκατάστασης του πηγαίου κώδικα του SecDep, αφού ο
|
||
χρήστης μεταβεί στον φάκελο με τα περιεχόμενα που απεικονίζονται στο σχήμα
|
||
\ref{fig:secdep_install_without_git}, επιβάλλεται να γίνει χρήση του
|
||
προγράμματος pip \footfullcite{pip} για την εγκατάσταση των βιβλιοθηκών που
|
||
απαιτούνται για την λειτουργία του εργαλείου. Αυτό επιτυγχάνεται με την
|
||
εκτέλεση της παρακάτω εντολής.
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
pip install -r requirements.txt
|
||
\end{bashcode}
|
||
\caption{Εγκατάσταση των απαιτούμενων βιβλιοθηκών για την λειτουργία του SecDep}
|
||
\label{lst:secdep_install_requirements}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Στην περίπτωση που η παραπάνω εντολή αποτύχει λόγω πρόσφατων τροποποιήσεων στις
|
||
τελευταίες εκδόσεις του pip, η εντολή πρέπει να μετατραπεί στην παρακάτω.
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
pip install -r requirements.txt --break-system-packages
|
||
\end{bashcode}
|
||
\caption{Εξαναγκασμένη μορφή της εντολής εγκατάστασης εξαρτήσεων του SecDep}
|
||
\label{lst:focre_secdep_install_requirements}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
\section{Ρύθμιση του SecDep}
|
||
|
||
Αφού έχει ολοκληρωθεί η εγκατάσταση των απαιτούμενων εξαρτήσεων, ο χρήστης
|
||
πρέπει να δώσει στο εργαλείο τα απαραίτητα διαπιστευτήρια για την χρήση των
|
||
υποδομών νέφους της επιλογής του. Ενώ υποστηρίζονται και οι τρεις μεγαλύτεροι
|
||
πάροχοι υπηρεσιών IaaS, επιλέχθηκε για την παρούσα ενότητα η κάλυψη της χρήσης
|
||
των υπηρεσιών της Amazon έναντι της Azure και της GCE, λόγω της ευκολότερης και
|
||
απλούστερης διαδικασίας αυθεντικοποίησης που παρέχει. Συγκεκριμένα, απαιτεί την
|
||
συμπλήρωση μονάχα δύο πεδίων. Αυτά είναι, τα
|
||
\textquote{SECDEP\_AWS\_ACCESS\_KEY} και \textquote{SECDEP\_AWS\_SECRET\_KEY}.
|
||
|
||
\subsection{Δημιουργία κλειδιού πρόσβασης με την AWS}
|
||
|
||
Για την απόκτηση των παραπάνω διαπιστευτηρίων, ο χρήστης πρέπει να επισκεφθεί
|
||
την ιστοσελίδα διαχείρισης του λογαριασμού που έχει δημιουργήσει με την AWS και
|
||
να μεταβεί στην ενότητα IAM (Identity and Access Management) προκειμένου να
|
||
δημιουργήσει ένα κλειδί πρόσβασης. Αυτό απεικονίζεται ως εξής:
|
||
|
||
\begin{center}
|
||
\begin{figure}[!ht]
|
||
\centering
|
||
\includegraphics[width = .6\textwidth]{Figures/AWS_setup/go_to_iam.png}
|
||
\captionof{figure}{Μετάβαση στην ενότητα IAM της AWS}
|
||
\label{fig:go_to_iam}
|
||
\end{figure}
|
||
\vspace*{-30pt}
|
||
\end{center}
|
||
|
||
Έπειτα, πρέπει να εισέλθει στην ενότητα \textquote{Manage Access Keys} και να
|
||
δημιουργήσει ένα νέο κλειδί πρόσβασης όπως φαίνεται παρακάτω:
|
||
|
||
\begin{center}
|
||
\begin{figure}[!ht]
|
||
\centering
|
||
\includegraphics[width = .6\textwidth]{Figures/AWS_setup/create_access_key.png}
|
||
\captionof{figure}{Δημιουργία νέου κλειδιού πρόσβασης}
|
||
\label{fig:create_access_key}
|
||
\end{figure}
|
||
\vspace*{-30pt}
|
||
\end{center}
|
||
|
||
\clearpage
|
||
|
||
Η αντιστοιχία των απαιτούμενων πεδίων με το κλειδί πρόσβασης που δημιουργήθηκε
|
||
είναι η εξής:
|
||
|
||
\begin{savenotes}
|
||
\selectfont
|
||
\begin{table}[!ht]
|
||
\caption{Αντιστοιχία των πεδίων του SecDep με το κλειδί πρόσβασης της AWS}
|
||
\renewcommand{\arraystretch}{1.5}
|
||
\centering
|
||
\newcolumntype{C}{>{\centering\arraybackslash}m{7cm}}
|
||
\textgreek{\begin{tabular}{||C|C||}
|
||
\hline
|
||
|
||
Μεταβλητή του SecDep & Αντιστοιχία \\ [0.5ex]
|
||
|
||
\hline\hline
|
||
|
||
SECDEP\_AWS\_ACCESS\_KEY & Το αναγνωριστικό του κλειδιού \\
|
||
|
||
\hline
|
||
|
||
SECDEP\_AWS\_SECRET\_KEY & Το περιεχόμενο του κλειδιού \\
|
||
|
||
\hline
|
||
\end{tabular}}
|
||
\label{table:}
|
||
\renewcommand{\arraystretch}{1}
|
||
\end{table}
|
||
\end{savenotes}
|
||
|
||
\subsection{Αντιστοίχιση των πεδίων του SecDep με το κλειδί πρόσβασης της AWS}
|
||
|
||
Μετά το πέρας της δημιουργίας του κλειδιού πρόσβασης, ο χρήστης πρέπει να
|
||
αρχικοποιήσει τις μεταβλητές του SecDep με τις τιμές που αντιστοιχούν στην κάθε
|
||
μια. Υπάρχουν πολλοί τρόποι για την επίτευξη αυτού του σκοπού. Στην προκειμένη
|
||
περίπτωση που θα γίνει χρήση ενός μονάχα παρόχου, αρκεί η εκτέλεση της παρακάτω
|
||
εντολής:
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --init aws
|
||
\end{bashcode}
|
||
\caption{Αρχικοποίηση των μεταβλητών του SecDep για την χρήση της AWS}
|
||
\label{lst:secdep_init_aws}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Έπειτα, θα ζητηθούν από τον χρήστη τα αντίστοιχα διαπιστευτήρια. Οι μεταβλητές
|
||
αυτές θα αποθηκευτούν στο αρχείο \textquote{.env} που θα δημιουργηθεί στον
|
||
φάκελο που βρίσκεται το εκτελέσιμο του SecDep. Στην περίπτωση που ο χρήστης
|
||
μελλοντικά θέλει να αλλάξει τις τιμές των μεταβλητών ή να προσθέσει νέες,
|
||
μπορεί να το κάνει αλλάζοντας τα περιεχόμενα του αρχείου \textquote{.env}
|
||
χειροκίνητα με έναν επεξεργαστή κειμένου ή με την εκτέλεση της εντολής:
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --edit
|
||
\end{bashcode}
|
||
\caption{Επεξεργασία των μεταβλητών του SecDep}
|
||
\label{lst:secdep_edit}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Η εντολή αυτή θα προτρέψει τον χρήστη να επιλέξει ποια μεταβλητή να αλλάξει και
|
||
θα αναγράφει την προηγούμενη τιμή της ώστε να γίνεται ευδιάκριτη η αλλαγή.
|
||
|
||
\clearpage
|
||
|
||
\section{Επίδειξη του SecDep}
|
||
|
||
Ανά πάσα στιγμή, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για να λάβει
|
||
πληροφορίες σχετικά με τις διαθέσιμες παραμέτρους:
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --help
|
||
\end{bashcode}
|
||
\caption{Εκτέλεση της παραμέτρου help του SecDep}
|
||
\label{lst:secdep_help}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Σχετικά με την δημιουργία εικονικών μηχανών, που είναι και μια από τις βασικές
|
||
λειτουργίες του SecDep, ο χρήστης μπορεί να εκτελέσει την παρακάτω εντολή για
|
||
να δημιουργήσει μια εικονική μηχανή με λειτουργικό σύστημα Debian 11 στην
|
||
περιοχή eu-north-1 με μέγεθος t3.micro (διαθέσιμο για χρήστες εντός της δωρεάν
|
||
δοκιμαστικής περιόδου ενός χρόνου):
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --provider aws --create --name test-node --size t3.micro --image ami-08869bacfa1188ec9
|
||
\end{bashcode}
|
||
\caption{Εκτέλεση της παραμέτρου create του SecDep}
|
||
\label{lst:secdep_create}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Μετά την δημιουργία της εικονικής μηχανής, επιστρέφεται στον χρήση η διεύθυνση
|
||
IP της και η εντολή που μπορεί να εκτελέσει προκειμένου να συνδεθεί σε αυτήν
|
||
χρησιμοποιώντας το πρωτόκολλο SSH. Η εντολή αυτή σχηματίζεται δυναμικά από το
|
||
εργαλείο λαμβάνοντας υπόψιν την θύρα που θα χρησιμοποιηθεί (σε περίπτωση που η
|
||
εικονική μηχανή έχει σκληρύνει), το μονοπάτι μέχρι το κλειδί SSH που
|
||
δημιουργήθηκε μαζί με την μηχανή στον ίδιο φάκελο με το εργαλείο και την
|
||
διεύθυνση της.
|
||
|
||
Εάν ο χρήστης δεν διαθέτει πρόγραμμα ικανό να συνδεθεί μέσω SSH σε έναν
|
||
απομακρυσμένο διακομιστή, υποστηρίζεται και η παράμετρος \textquote{--ssh}.
|
||
|
||
Χωρίς την παράμετρο \textquote{--yes}, θα ζητηθεί από τον χρήστη να
|
||
επιβεβαιώσει την δημιουργία της εικονικής μηχανής παρέχοντας πληροφορίες
|
||
σχετικά με τις επιλογές του.
|
||
|
||
Με την προσθήκη της παραμέτρου \textquote{--deploy}, θα εκτελεστεί η ίδια
|
||
διαδικασία αλλά με την διαφορά πως θα πραγματοποιηθεί εκτέλεση και του αρχείου
|
||
harden στην εικονική μηχανή το οποίο θα σκληρύνει το λειτουργικό της σύστημα
|
||
και θα εγκαταστήσει την μηχανή δοχείων Docker την οποία επίσης θα σκληρύνει.
|
||
|
||
\clearpage
|
||
|
||
Το αποτέλεσμα μετά την δημιουργία εικονικής μηχανής με την παράμετρο για
|
||
σκλήρυνση απεικονίζεται ως:
|
||
|
||
\begin{center}
|
||
\begin{figure}[!ht]
|
||
\centering
|
||
\includegraphics[width = .8\textwidth]{Figures/AWS_hardened/aws-hardened.png}
|
||
\captionof{figure}{Δημιουργία εικονικής μηχανής με παράμετρο για σκλήρυνση}
|
||
\label{fig:aws_hardened}
|
||
\end{figure}
|
||
\vspace*{-30pt}
|
||
\end{center}
|
||
|
||
Με μια ακόμα προσθήκη παραμέτρου, συγκεκριμένα της
|
||
\textquote{--docker\_compose}, θα εκτελεστεί στην εικονική μηχανή και ένα
|
||
αρχείο docker-compose.yml που θα πρέπει ο χρήστης να έχει μεταφέρει στον ίδιο
|
||
φάκελο με το εργαλείο.
|
||
|
||
Για οποιαδήποτε παράμετρο που δεν έχει δοθεί ή έχει δοθεί λανθασμένα, θα
|
||
προτρέπεται ο χρήστης να την δώσει ξανά έως ότου ολοκληρωθεί η διαδικασία ή
|
||
ακυρωθεί από τον χρήστη.
|
||
|
||
Εάν ο χρήστης δεν γνωρίζει τις διαθέσιμες επιλογές για τις παραμέτρους που
|
||
εισάγει, υποστηρίζονται ξεχωριστές εντολές που ακολουθούν παρόμοιο μοτίβο για
|
||
την κάθε μια. Παραδείγματα εντολών που υποστηρίζονται είναι οι παρακάτω:
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --provider aws --listimages --print
|
||
\end{bashcode}
|
||
\caption{Εκτέλεση της παραμέτρου listimages του SecDep}
|
||
\label{lst:secdep-listimages}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Το αποτέλεσμα της εντολής \ref{lst:secdep-listimages} είναι να εμφανιστεί μια
|
||
λίστα με τις διαθέσιμες εικόνες που μπορεί να χρησιμοποιήσει ο χρήστης για την
|
||
δημιουργία εικονικών μηχανών. Έπειτα, με την επιλογή μιας από αυτές, θα
|
||
εμφανιστούν πληροφορίες σχετικά με την εικόνα που επιλέχθηκε οι οποίες θα είναι
|
||
της μορφής που απεικονίζεται στο \ref{lst:secdep_image_info}.
|
||
|
||
\clearpage
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
<NodeImage: id=ami-0eb2c4104acb437b2, name=debian-10-amd64-20221224-1239, driver=Amazon EC2 ...>
|
||
\end{bashcode}
|
||
\caption{Πληροφορίες σχετικά με την εικόνα που επιλέχθηκε}
|
||
\label{lst:secdep_image_info}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Από την παραπάνω πληροφορία, ο χρήστης χρειάζεται το αναγνωριστικό (id) της
|
||
εικόνας. Εάν χρειάζεται πληροφορίες σχετικά με τα διαθέσιμα μεγέθη των
|
||
εικονικών μηχανών, αυτό επιτυγχάνεται με την εντολή:
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --provider aws --listsizes --print
|
||
\end{bashcode}
|
||
\caption{Εκτέλεση της παραμέτρου listsizes του SecDep}
|
||
\label{lst:secdep_listsizes}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Η διαδικασία επιλογής του μεγέθους είναι παρόμοια με την επιλογή της εικόνας,
|
||
ενώ το αποτέλεσμα είναι της μορφής:
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
<NodeSize: id=t3.micro, name=t3.micro, ram=1024, disk=0, bandwidth=0, price=0.0204, driver=Amazon EC2 ...>
|
||
\end{bashcode}
|
||
\caption{Πληροφορίες σχετικά με το μέγεθος που επιλέχθηκε}
|
||
\label{lst:secdep_size_info}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Από την παραπάνω πληροφορία, το σημαντικό πάλι είναι το αναγνωριστικό (id) του
|
||
μεγέθους. Μερικές από τις εντολές που δύναται να χρησιμοποιήσει ένας χρήστης
|
||
συχνά μπορεί να είναι για την εμφάνιση εικονικών μηχανών ή την διαγραφή τους.
|
||
Αυτές οι δύο λειτουργίες υποστηρίζονται με τις παρακάτω εντολές:
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --provider aws --awsregion us-east-2 --list
|
||
\end{bashcode}
|
||
\caption{Εκτέλεση της παραμέτρου list του SecDep}
|
||
\label{lst:secdep_list}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
\clearpage
|
||
|
||
Το αποτέλεσμα της παραπάνω εντολής μπορεί να απεικονίζεται ως εξής:
|
||
|
||
\begin{center}
|
||
\begin{figure}[!ht]
|
||
\centering
|
||
\includegraphics[width = 1.0\textwidth]{Figures/AWS_listing/aws-instances.png}
|
||
\captionof{figure}{Λίστα με τις εικονικές μηχανές που έχουν δημιουργηθεί}
|
||
\label{fig:instance_list_output}
|
||
\end{figure}
|
||
\vspace*{-30pt}
|
||
\end{center}
|
||
|
||
Η παράμετρος \textquote{--awsregion} είναι προαιρετική και χρησιμοποιείται
|
||
αποκλειστικά για την Amazon. Η παράλειψη της θα είχε ως αποτέλεσμα να γίνει
|
||
έρευνα σε όλες τις διαθέσιμες περιοχές. Γεγονός που ενδεχομένως να αποτελούσε
|
||
σπατάλη χρόνου.
|
||
|
||
Με την παρακάτω εντολή, ο χρήστης λαμβάνει μια λίστα με τις διαθέσιμες
|
||
εικονικές μηχανές του παρόχου Amazon που έχουν δημιουργηθεί στην περιοχή
|
||
\textquote{eu-north-1} και επιλέγει μια από αυτές για να διαγραφεί. Μετά από
|
||
επιτυχή διαγραφή, λαμβάνει επιβεβαίωση στην οθόνη του.
|
||
|
||
\begin{listing}[!ht]
|
||
\begin{bashcode}
|
||
python3 secdep.py --provider aws --action delete --awsregion eu-north-1
|
||
\end{bashcode}
|
||
\caption{Εκτέλεση της παραμέτρου delete του SecDep}
|
||
\label{lst:secdep_delete}
|
||
\vspace*{-10pt}
|
||
\end{listing}
|
||
|
||
Εάν ήθελε να διαγράψει όλες τις εικονικές μηχανές της περιοχής, η επιλογή της
|
||
παραμέτρου \textquote{--action}, από \textquote{delete} θα έπρεπε να
|
||
αντικατασταθεί σε \textquote{deleteall}. Με παρόμοιο τρόπο υποστηρίζονται και
|
||
εντολές για εκκίνηση, επανεκκίνηση ή διακοπή εικονικών μηχανών.
|
||
|
||
\clearpage
|
||
|
||
Πιο λεπτομερείς οδηγίες χρήσης και εγκατάστασης περιέχονται και στην σελίδα του
|
||
αποθετηρίου του SecDep \footfullcite{secdep} μέσω του αρχείου
|
||
\textquote{README.md}. Στο σχήμα του λογότυπου του SecDep, περιέχεται
|
||
υπερσύνδεσμος που οδηγεί στο αποθετήριο όπου και εμφανίζονται τα περιεχόμενα
|
||
του αρχείου οδηγιών.
|
||
|
||
\begin{center}
|
||
\begin{figure}[!ht]
|
||
\centering
|
||
\href{https://git.konsthol.eu/konsthol/SecDep}{
|
||
\includegraphics[width = 1.0\textwidth]{Figures/secdep_logo.png}}
|
||
\captionof{figure}{Λογότυπο του SecDep}
|
||
\label{fig:secdep_logo}
|
||
\end{figure}
|
||
\vspace*{-30pt}
|
||
\end{center}
|
||
|
||
Εκεί, ο χρήστης μπορεί να βρει πληροφορίες σχετικά με την παραμετροποίηση και
|
||
των υπόλοιπων παρόχων νέφους, χρήσιμες ρυθμίσεις που καθιστούν την εκτέλεση του
|
||
SecDep πιο εύκολη, καθώς και περισσότερες οθόνες εκτέλεσης.
|