This commit is contained in:
2024-01-22 00:58:29 +02:00
parent 3834027f08
commit 957ab81b66
7 changed files with 388 additions and 400 deletions

View File

@@ -1,9 +1,9 @@
\chapter{Πειραματική Αποτίμηση Εργαλείου} \label{experimentationANDresults}
\noindent Το εργαλείο που αναπτύχθηκε στα πλαίσια της διπλωματικής εργασίας
αυτής, έχει τρεις βασικούς στόχους. Την δημιουργία εικονικών μηχανών κατά μήκος
πολλών παρόχων νέφους, την σκλήρυνση του λειτουργικού συστήματος τους και την
σκλήρυνση της μηχανής δοχείων Docker που εγκαθιστά σε αυτές. Στην παρούσα
\noindent Το εργαλείο που αναπτύχθηκε στα πλαίσια της διπλωματικής αυτής
εργασίας, έχει τρεις βασικούς στόχους. Την δημιουργία εικονικών μηχανών κατά
μήκος πολλών παρόχων νέφους, την σκλήρυνση του λειτουργικού συστήματός τους και
την σκλήρυνση της μηχανής δοχείων Docker που εγκαθιστά σε αυτές. Στην παρούσα
ενότητα θα παρουσιαστούν τα αποτελέσματα της αξιολόγησης της ασφάλειας των
εικονικών μηχανών που δημιουργήθηκαν, χρησιμοποιώντας τρία διαφορετικά εργαλεία
αξιολόγησης. Τα εργαλεία αυτά, με την σειρά που θα αναλυθούν είναι το Vuls, το
@@ -13,7 +13,7 @@ Lynis και το LUNAR.
Όλα τα εργαλεία αξιολόγησης που χρησιμοποιήθηκαν στην παρούσα εργασία, είναι
εργαλεία ανοιχτού κώδικα και διατίθενται δωρεάν στο κοινό. Τα εργαλεία αυτά
επιλέχθηκαν με βάση την δημοτικότητα τους, την ευκολία εγκατάστασης και χρήσης
επιλέχθηκαν με βάση την δημοτικότητά τους, την ευκολία εγκατάστασης και χρήσης
τους και την ποικιλία των ελέγχων που πραγματοποιούν. Στην συνέχεια θα
παρουσιαστούν τα εργαλεία αυτά και ο τρόπος με τον οποίο χρησιμοποιήθηκαν.
@@ -85,11 +85,11 @@ Lynis και το LUNAR.
\item \textbf{Εκτεταμένη σάρωση}:
Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας
χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση
που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που
απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή
όπως το lsof, debian-goodies και reboot-notifier.
Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας
χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση
που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που
απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή
όπως τα lsof, debian-goodies και reboot-notifier.
\end{itemize}
@@ -128,13 +128,14 @@ Lynis και το LUNAR.
Το Lynis \footfullcite{lynis} είναι το δεύτερο εργαλείο ανοιχτού κώδικα που
χρησιμοποιήθηκε για την αξιολόγηση της ασφάλειας των εικονικών μηχανών. Σε
αντίθεση με το Vuls, το Lynis εκτελείται αποκλειστικά στον απομακρυσμένο
διακομιστή. Πραγματοποιεί μια εκτενή ανάλυση του συστήματος εντοπίζοντας πιθανά
σημεία που μπορεί να αποτελέσουν σημεία εισόδου για επιτιθέμενους με βάση τις
βέλτιστες πρακτικές ασφάλειας. Έπειτα, επιστρέφει στον χρήστη μια λεπτομερή
αναφορά με τα ευρήματα του και προτάσεις για την επίλυση τους. Στο τελευταίο
κομμάτι της αναφοράς, παρέχεται και μια βαθμολογία της ασφάλειας του συστήματος
η οποία κυμαίνεται από το 0 έως το 100. Εκτελείται εύκολα σε κάθε σύστημα Linux
διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο bash.
διακομιστή. Πραγματοποιεί μια εκτενή ανάλυση του συστήματος εντοπίζοντας
απροσεξίες ή ελλείψεις ρυθμίσεων που μπορεί να αποτελέσουν σημεία εισόδου για
επιτιθέμενους με βάση τις βέλτιστες πρακτικές ασφαλείας. Έπειτα, επιστρέφει
στον χρήστη μια λεπτομερή αναφορά με τα ευρήματά του και προτάσεις για την
επίλυσή τους. Στο τελευταίο κομμάτι της αναφοράς, παρέχεται και μια βαθμολογία
της ασφάλειας του συστήματος η οποία κυμαίνεται από το 0 έως το 100. Εκτελείται
εύκολα σε κάθε σύστημα Linux διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο
bash.
Στο σχήμα \ref{fig:lynisScan} απεικονίζεται ένα κομμάτι της αναφοράς που
επιστρέφει.
@@ -156,7 +157,7 @@ Lynis και το LUNAR.
και το Lynis, εκτελείται στον διακομιστή του οποίου την ασφάλεια αξιολογεί. Ο
τρόπος λειτουργίας του είναι προσεγγίσιμος και απλός. Εκτελεί μια σειρά ελέγχων
στο σύστημα χρησιμοποιώντας το κριτήριο αναφοράς CIS, καθώς και άλλα πλαίσια
και επιστρέφει στον χρήστη μια αναφορά με τα ευρήματα του. Παρομοίως με το
και επιστρέφει στον χρήστη μια αναφορά με τα ευρήματά του. Παρομοίως με το
Lynis, στο τέλος της αναφοράς του περιέχεται ο αριθμός των ελέγχων που
εκτελέστηκαν, σε συνδυασμό με τον αριθμό αποτυχιών και επιτυχιών τους.
@@ -189,14 +190,14 @@ Lynis, στο τέλος της αναφοράς του περιέχεται ο
Οι εντολές που χρησιμοποιήθηκαν για την δημιουργία τους, έχουν την παρακάτω
μορφή διότι έχει εισαχθεί το εκτελέσιμο αρχείο secdep.py στο PATH του
συστήματος και έχει δηλωθεί ως alias της το secdep. Στην περίπτωση που αυτά τα
συστήματος και έχει δηλωθεί ως alias του το secdep. Στην περίπτωση που αυτά τα
βήματα δεν έχουν ληφθεί θα πρέπει οι εντολές να είναι της μορφής:
\begin{bashcode}
python3 secdep.py <παράμετροι χρήστη>
\end{bashcode}
Χρησιμοποιήθηκε η εξής εντολή για την δημιουργία των εικονικής μηχανής χωρίς
Χρησιμοποιήθηκε η εξής εντολή για την δημιουργία της εικονικής μηχανής χωρίς
σκλήρυνση λειτουργικού συστήματος:
\begin{listing}[!ht]
@@ -212,8 +213,8 @@ secdep -P aws -c -n test-node -s t3.micro -i ami-08869bacfa1188ec9 --yes
Για την δημιουργία εικονικής μηχανής με σκλήρυνση λειτουργικού συστήματος,
εγκατάσταση και σκλήρυνση της μηχανής δοχείων Docker και εισαγωγής ενός αρχείου
docker-compose.yml που βρίσκεται στον ίδιο φάκελο με το SecDep χρησιμοποιήθηκε
η εντολή:
docker-compose.yml που βρίσκεται στον ίδιο φάκελο με το secdep.py
χρησιμοποιήθηκε η εντολή:
\begin{listing}[!ht]
\begin{bashcode}
@@ -231,7 +232,7 @@ secdep -P aws -c -n test-node -s t3.micro -i ami-08869bacfa1188ec9 --yes --docke
\section{Εγκατάσταση/Χρήση των εργαλείων αξιολόγησης} \label{toolsInstallation}
Αφότου έχουν δημιουργηθεί οι εικονικές μηχανές, μπορεί να ξεκινήσει η
διαδικασία αξιολόγησης της ασφάλειας τους. Αρχικά, θα παρουσιαστεί η διαδικασία
διαδικασία αξιολόγησης της ασφάλειάς τους. Αρχικά, θα παρουσιαστεί η διαδικασία
εγκατάστασης του κάθε εργαλείου και έπειτα θα παρουσιαστεί η διαδικασία χρήσης
τους.
@@ -253,11 +254,11 @@ https://raw.githubusercontent.com\
\end{listing}
Ορθή πρακτική θα ήταν να γίνει έλεγχος του περιεχομένου του αρχείου πριν την
εκτέλεση της εντολής αυτής για να βεβαιωθεί κανείς ότι δεν περιέχει κάποιο
κακόβουλο κώδικα. Στην συνέχεια, θα πρέπει να δημιουργηθεί ο φάκελος που θα
περιέχει τα δεδομένα των πηγών από όπου και θα αντλεί τις πληροφορίες
ευπαθειών, καθώς και ένα αρχείο config.toml στο οποίο θα δηλωθούν τα
διαπιστευτήρια των διακομιστών που θα αξιολογηθούν.
εκτέλεση της εντολής αυτής για να βεβαιωθεί κανείς ότι δεν περιέχει κακόβουλο
κώδικα. Στην συνέχεια, θα πρέπει να δημιουργηθεί ο φάκελος που θα περιέχει τα
δεδομένα των πηγών από όπου και θα αντλεί τις πληροφορίες ευπαθειών, καθώς και
ένα αρχείο config.toml στο οποίο θα δηλωθούν τα διαπιστευτήρια των διακομιστών
που θα αξιολογηθούν.
Αυτό επιτυγχάνεται με τις παρακάτω εντολές:
@@ -265,7 +266,7 @@ https://raw.githubusercontent.com\
\begin{bashcode}
mkdir -p /usr/share/vuls-data
\end{bashcode}
\caption{Δημιουργία φακέλου}
\caption{Δημιουργία φακέλου δεδομένων του Vuls}
\label{lst:create-vuls-data-folder}
\vspace*{-10pt}
\end{listing}
@@ -326,10 +327,11 @@ ssh-keyscan -H -p <θύρα SSH> <ip του διακομιστή> >> ~/.ssh/know
\vspace*{-10pt}
\end{listing}
Επιπροσθέτως, θα πρέπει να μεταφερθεί στον υπολογιστή που έχει εγκατεστημένο το
Vuls, το ιδιωτικό κλειδί του διακομιστή (ένα αρχείο ονόματι secdep), το οποίο
δημιουργείται στον ίδιο φάκελο με το εργαλείο SecDep. Για την αρχικοποίηση της
βάσης δεδομένων ευπαθειών του Vuls, εκτελούνται με σειρά οι εντολές:
Επιπροσθέτως, θα πρέπει να μεταφερθεί στον υπολογιστή που είναι εγκατεστημένο
το Vuls, το ιδιωτικό κλειδί του διακομιστή (ένα αρχείο ονόματι secdep), το
οποίο δημιουργείται στον ίδιο φάκελο που βρίσκεται το secdep.py. Για την
αρχικοποίηση της βάσης δεδομένων ευπαθειών του Vuls, εκτελούνται με σειρά οι
εντολές:
\begin{listing}[!ht]
\begin{bashcode}
@@ -455,7 +457,7 @@ vuls report -format-json
να κατεβάσουμε στον διακομιστή μας το εργαλείο VulsRepo
\footfullcite{vulsrepo}. Θα πρέπει να μεταφερθούμε σε έναν φάκελο της επιλογής
μας και έπειτα να το κατεβάσουμε μέσω της εντολής git και να αρχικοποιήσουμε το
αρχείο ρυθμίσεων του. Αυτά τα βήματα επιτυγχάνονται με τις παρακάτω εντολές:
αρχείο ρυθμίσεών του. Αυτά τα βήματα επιτυγχάνονται με τις παρακάτω εντολές:
\begin{listing}[ht]
\begin{bashcode}
@@ -527,7 +529,7 @@ EOF
απλή. Εδώ τα βήματα που πρέπει να ακολουθηθούν είναι η σύνδεση στους
διακομιστές της Amazon μέσω SSH (για την οποία η εντολή είναι έτοιμη μετά την
δημιουργία κάθε διακομιστή), η εγκατάσταση του εργαλείου μέσω git και η
εκτέλεση του. Αυτά πραγματοποιούνται ως εξής:
εκτέλεσή του. Αυτά πραγματοποιούνται ως εξής:
\begin{listing}[!ht]
\begin{bashcode}
@@ -569,7 +571,7 @@ cd lynis
\begin{bashcode}
./lynis audit system > ~/lynis.log
\end{bashcode}
\caption{Εκκίνηση αξιολόγησης (και αποθήκευση της) μέσω του Lynis}
\caption{Εκκίνηση αξιολόγησης (και αποθήκευσή της) μέσω του Lynis}
\label{lst:lynis-audit}
\vspace*{-10pt}
\end{listing}
@@ -602,7 +604,7 @@ cd lunar
\begin{bashcode}
./lunar.sh -a > ~/lunar.log
\end{bashcode}
\caption{Εκκίνηση αξιολόγησης (και αποθήκευση της) μέσω του LUNAR}
\caption{Εκκίνηση αξιολόγησης (και αποθήκευσή της) μέσω του LUNAR}
\label{lst:lunar-audit}
\vspace*{-10pt}
\end{listing}
@@ -613,7 +615,7 @@ cd lunar
παρήχθησαν από τα εργαλεία αξιολόγησης αναδεικνύουν τις διαφορές στην ασφάλεια
των δύο διακομιστών. Στην παρούσα ενότητα θα αναλυθούν τα αποτελέσματα του κάθε
εργαλείου αξιολόγησης ξεχωριστά και έπειτα θα βγει μια συμπερασματική
αξιολόγηση τους.
αξιολόγησή τους.
\subsection{Αποτελέσματα αξιολόγησης με το Vuls} \label{vulsResults}
@@ -867,9 +869,9 @@ cat lunar.log | grep -i "warnings:" | awk '{print $2}'
Επιπρόσθετα, η σκλήρυνση της μηχανής δοχείων Docker δεν απεικονίζεται σε κανένα
από τα παραπάνω γραφήματα. Αυτό συμβαίνει διότι δεν υπάρχει εργαλείο που να
μπορεί να αξιολογήσει την ασφάλεια του Docker όταν αυτό χρησιμοποιείται χωρίς
διαχειριστικά δικαιώματα. Ωστόσο, η σκλήρυνση του έχει πετύχει διότι η απαλλαγή
διαχειριστικά δικαιώματα. Ωστόσο, η σκλήρυνσή του έχει πετύχει διότι η απαλλαγή
από τον περιορισμό των διαχειριστικών δικαιωμάτων έχει ως αποτέλεσμα την μείωση
της επιφάνειας επίθεσης σε περίπτωση παραβίασης του, ενώ η αντικατάσταση του
της επιφάνειας επίθεσης σε περίπτωση παραβίασής του, ενώ η αντικατάσταση του
runC με το runsc μειώνει την πιθανότητα παραβίασης. Για την ενίσχυση της
ασφάλειας του Docker, εκτελούνται και βήματα όπως η ρύθμιση της παραμέτρου του
δαίμονα \textquote{no-new-privileges} που αποτρέπει τα δοχεία από το να