888 lines
41 KiB
TeX
888 lines
41 KiB
TeX
\chapter{Πειραματική Αποτίμηση Εργαλείου} \label{experimentationANDresults}
|
|
|
|
\noindent Το εργαλείο που αναπτύχθηκε στα πλαίσια της διπλωματικής εργασίας
|
|
αυτής, έχει τρεις βασικούς στόχους. Την δημιουργία εικονικών μηχανών κατά μήκος
|
|
πολλών παρόχων νέφους, την σκλήρυνση του λειτουργικού συστήματος τους και την
|
|
σκλήρυνση της μηχανής δοχείων Docker που εγκαθιστά σε αυτές. Στην παρούσα
|
|
ενότητα θα παρουσιαστούν τα αποτελέσματα της αξιολόγησης της ασφάλειας των
|
|
εικονικών μηχανών που δημιουργήθηκαν, χρησιμοποιώντας τρία διαφορετικά εργαλεία
|
|
αξιολόγησης. Τα εργαλεία αυτά, με την σειρά που θα αναλυθούν είναι το Vuls, το
|
|
Lynis και το LUNAR.
|
|
|
|
\section{Εργαλεία Αξιολόγησης} \label{measurementTools}
|
|
|
|
Όλα τα εργαλεία αξιολόγησης που χρησιμοποιήθηκαν στην παρούσα εργασία, είναι
|
|
εργαλεία ανοιχτού κώδικα και διατίθενται δωρεάν στο κοινό. Τα εργαλεία αυτά
|
|
επιλέχθηκαν με βάση την δημοτικότητα τους, την ευκολία εγκατάστασης και χρήσης
|
|
τους και την ποικιλία των ελέγχων που πραγματοποιούν. Στην συνέχεια θα
|
|
παρουσιαστούν τα εργαλεία αυτά και ο τρόπος με τον οποίο χρησιμοποιήθηκαν.
|
|
|
|
\subsection{Vuls: VULnerability Scanner} \label{vuls}
|
|
|
|
Το Vuls \footfullcite{vuls} είναι ένα εργαλείο ανοιχτού κώδικα, το οποίο
|
|
αναπτύχθηκε από την Future Corp χρησιμοποιώντας την γλώσσα προγραμματισμού Go.
|
|
Πρόκειται για ένα εργαλείο αξιολόγησης ασφάλειας, το οποίο είναι σε θέση να
|
|
εντοπίσει ευπάθειες σε τοπικούς ή και απομακρυσμένους διακομιστές
|
|
χρησιμοποιώντας δεδομένα από πολλές διαφορετικές πηγές. Με βάση την σελίδα του
|
|
στο GitHub \footfullcite{vulsGithubPage}, στις πηγές αυτές περιλαμβάνονται:
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{NVD (National Vulnerability Database)}
|
|
|
|
\item \textbf{τα αρχεία ορισμού OVAL (Open Vulnerability and Assessment Language)}
|
|
που διατίθενται από τις διανομές Linux
|
|
|
|
\clearpage
|
|
|
|
\item \textbf{Συμβουλευτικές πηγές ασφαλείας}
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{Alpine-secdb}
|
|
\item \textbf{Red Hat Security Advisories}
|
|
\item \textbf{Debian Security Bug Tracker}
|
|
\item \textbf{Ubuntu CVE Tracker}
|
|
\item \textbf{Microsoft CVRF}
|
|
|
|
\end{itemize}
|
|
|
|
\item \textbf{Πηγές με PoC (Proof of Concept) εκμετάλλευσης ευπαθειών}
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{Exploit Database}
|
|
\item \textbf{Metasploit-Framework modules}
|
|
|
|
\end{itemize}
|
|
|
|
\item \textbf{CERT (Computer Emergency Readiness Team)}
|
|
|
|
\item \textbf{CISA (Cybersecurity \& Infrastructure Security Agency)}
|
|
|
|
\item \textbf{Cyber Threat Intelligence(MITRE ATT\&CK and CAPEC)}
|
|
|
|
\item \textbf{Βιβλιοθήκες ευπαθειών όπως αυτή της Aqua Security}
|
|
|
|
\end{itemize}
|
|
|
|
Ο χρήστης του εργαλείου απαιτείται να έχει εγκατεστημένο το Vuls σε έναν
|
|
υπολογιστή και να έχει αποθηκεύσει βάσει των οδηγιών εγκατάστασης, τα δεδομένα
|
|
των πηγών που θα χρησιμοποιηθούν. Έπειτα σε ένα αρχείο toml ρυθμίζονται τα
|
|
διαπιστευτήρια των διακομιστών που θα αξιολογηθούν διότι η απομακρυσμένη
|
|
σύνδεση θα πραγματοποιηθεί με χρήση SSH. Υπάρχει η δυνατότητα δύο επιπέδων
|
|
αξιολόγησης. Αυτά είναι τα παρακάτω:
|
|
|
|
\begin {itemize}
|
|
|
|
\item \textbf{Γρήγορη σάρωση}:
|
|
|
|
Σε αυτό το επίπεδο αξιολόγησης, το Vuls δεν απαιτεί την σύνδεση με
|
|
χρήστη διαχειριστικών δικαιωμάτων στον απομακρυσμένο διακομιστή αλλά
|
|
ούτε και την ύπαρξη πακέτων λογισμικού για την υποβοήθηση της
|
|
διαδικασίας σάρωσης. Επιπροσθέτως, επιβάλλει ελάχιστο φόρτο εργασιών
|
|
στον διακομιστή που αξιολογείται.
|
|
|
|
\item \textbf{Εκτεταμένη σάρωση}:
|
|
|
|
Στο δεύτερο επίπεδο αξιολόγησης, το Vuls χρειάζεται να συνδεθεί ως ένας
|
|
χρήστης ικανός να εκτελέσει εντολές διαχειριστικού επιπέδου. Η σάρωση
|
|
που πραγματοποιείται είναι πιο εκτεταμένη και περιλαμβάνει ελέγχους που
|
|
απαιτούν την ύπαρξη πακέτων λογισμικού στον απομακρυσμένο διακομιστή
|
|
όπως το lsof, debian-goodies και reboot-notifier.
|
|
|
|
\end{itemize}
|
|
|
|
Στο σχήμα \ref{fig:vuls-architecture}, όπως αυτό πάρθηκε από την επίσημη
|
|
ιστοσελίδα του εργαλείου, απεικονίζεται η αρχιτεκτονική του Vuls κατά την
|
|
διαδικασία σάρωσης απομακρυσμένου διακομιστή.
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = \textwidth]{Figures/VULS/vuls-architecture.png}
|
|
\captionof{figure}{Αρχιτεκτονική του Vuls \cite{vulsArchitecture}}
|
|
\label{fig:vuls-architecture}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\clearpage
|
|
|
|
Στο σχήμα \ref{fig:vulsScan}, το οποίο παρομοίως αποκτήθηκε από την επίσημη
|
|
σελίδα του, απεικονίζεται η διαδικασία που ακολουθείται κατά την εκτέλεση της
|
|
σάρωσης ενός συστήματος.
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = \textwidth]{Figures/VULS/vuls-scan-flow-fast-root.png}
|
|
\captionof{figure}{Διαδικασία εκτεταμένης σάρωσης του Vuls \cite{vulsDeepScan}}
|
|
\label{fig:vulsScan}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\subsection{Lynis - Security auditing and hardening tool, for UNIX-based systems.} \label{lynis}
|
|
|
|
Το Lynis \footfullcite{lynis} είναι το δεύτερο εργαλείο ανοιχτού κώδικα που
|
|
χρησιμοποιήθηκε για την αξιολόγηση της ασφάλειας των εικονικών μηχανών. Σε
|
|
αντίθεση με το Vuls, το Lynis εκτελείται αποκλειστικά στον απομακρυσμένο
|
|
διακομιστή. Πραγματοποιεί μια εκτενή ανάλυση του συστήματος εντοπίζοντας πιθανά
|
|
σημεία που μπορεί να αποτελέσουν σημεία εισόδου για επιτιθέμενους με βάση τις
|
|
βέλτιστες πρακτικές ασφάλειας. Έπειτα, επιστρέφει στον χρήστη μια λεπτομερή
|
|
αναφορά με τα ευρήματα του και προτάσεις για την επίλυση τους. Στο τελευταίο
|
|
κομμάτι της αναφοράς, παρέχεται και μια βαθμολογία της ασφάλειας του συστήματος
|
|
η οποία κυμαίνεται από το 0 έως το 100. Εκτελείται εύκολα σε κάθε σύστημα Linux
|
|
διότι πρόκειται για ένα απλό εκτελέσιμο αρχείο bash.
|
|
|
|
Στο σχήμα \ref{fig:lynisScan}, απεικονίζεται ένα κομμάτι της αναφοράς που
|
|
επιστρέφει.
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = \textwidth]{Figures/lynis/lynis-screenshot.png}
|
|
\captionof{figure}{Κομμάτι της αναφοράς του Lynis \cite{lynis}}
|
|
\label{fig:lynisScan}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\subsection{LUNAR - Lockdown UNix Auditing and Reporting} \label{lunar}
|
|
|
|
Το τελευταίο εργαλείο αξιολόγησης που χρησιμοποιήθηκε είναι το LUNAR
|
|
\footfullcite{lunar}. Πρόκειται για ένα εκτελέσιμο αρχείο bash, το οποίο όπως
|
|
και το Lynis, εκτελείται στον διακομιστή του οποίου την ασφάλεια αξιολογεί. Ο
|
|
τρόπος λειτουργίας του είναι προσεγγίσιμος και απλός. Εκτελεί μια σειρά ελέγχων
|
|
στο σύστημα χρησιμοποιώντας το κριτήριο αναφοράς CIS, καθώς και άλλα πλαίσια
|
|
και επιστρέφει στον χρήστη μια αναφορά με τα ευρήματα του. Παρομοίως με το
|
|
Lynis, στο τέλος της αναφοράς του περιέχεται ο αριθμός των ελέγχων που
|
|
εκτελέστηκαν, σε συνδυασμό με τον αριθμό αποτυχιών και επιτυχιών τους.
|
|
|
|
\section{Προετοιμασία περιβαλλόντων προς αξιολόγηση} \label{environtmentPreparation}
|
|
|
|
Για την αποτίμηση της ασφάλισης του συστήματος δημιουργήθηκαν δύο εικονικές
|
|
μηχανές, χρησιμοποιώντας τον πάροχο νέφους AWS. Από αυτές, μονάχα για την
|
|
δεύτερη επιλέχθηκε η επιλογή σκλήρυνσης. Για το λειτουργικό σύστημα τους,
|
|
επιλέχθηκε το AMI με αναγνωριστικό κωδικό ami-08869bacfa1188ec9, το οποίο
|
|
αντιστοιχεί στην διανομή Debian 11 και στην περιοχή eu-north-1, η οποία
|
|
μεταφράζεται ως Europe (Stockholm). Για τα τεχνικά χαρακτηριστικά των εικονικών
|
|
μηχανών χρησιμοποιήθηκε το t3.micro με τα προνόμια της δοκιμαστικής περιόδου
|
|
ενός χρόνου που παρέχει η Amazon για νέους χρήστες. Το t3.micro υπάγεται στην
|
|
σειρά υπολογιστών γενικού σκοπού με τα εξής χαρακτηριστικά, όπως αυτά
|
|
αναφέρονται στην επίσημη ιστοσελίδα της Amazon \footfullcite{awst3micro} και
|
|
στην σελίδα του Vantage \footfullcite{vantaget3micro}:
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{Τιμή On Demand}: 0.01\$ ανά ώρα (για συστήματα Linux)
|
|
\item \textbf{Μνήμη}: 1 GiB
|
|
\item \textbf{vCPU}: 2
|
|
\item \textbf{Μνήμη ανά vCPU}: 0.5 GiB
|
|
\item \textbf{Επεξεργαστής}: Intel Skylake E5 2686 v5
|
|
\item \textbf{Ταχύτητα ρολογιού}: 3.1 GHz
|
|
\item \textbf{Ταχύτητα δικτύου}: 5 Gbps
|
|
\item \textbf{Αποθηκευτικός χώρος}: 30 GiB (EBS)
|
|
|
|
\end{itemize}
|
|
|
|
Οι εντολές που χρησιμοποιήθηκαν για την δημιουργία τους, έχουν την παρακάτω
|
|
μορφή διότι έχει εισαχθεί το εκτελέσιμο αρχείο secdep.py στο PATH του
|
|
συστήματος και έχει δηλωθεί ως alias της το secdep. Στην περίπτωση που αυτά τα
|
|
βήματα δεν έχουν ληφθεί θα πρέπει οι εντολές να είναι της μορφής:
|
|
|
|
\begin{bashcode}
|
|
python3 secdep.py <παράμετροι χρήστη>
|
|
\end{bashcode}
|
|
|
|
Χρησιμοποιήθηκε η εξής εντολή για την δημιουργία των εικονικής μηχανής χωρίς
|
|
σκλήρυνση λειτουργικού συστήματος:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
secdep -P aws -c -n test-node -s t3.micro -i ami-08869bacfa1188ec9 --yes
|
|
\end{bashcode}
|
|
\caption{SecDep - Δημιουργία εικονικής μηχανής χωρίς σκλήρυνση συστήματος}
|
|
\label{lst:secdep-aws-creation}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Ο χρόνος εκτέλεσης της είναι κατά μέσο όρο 37 δευτερόλεπτα.
|
|
|
|
Για την δημιουργία εικονικής μηχανής με σκλήρυνση λειτουργικού συστήματος,
|
|
εγκατάσταση και σκλήρυνση της μηχανής δοχείων Docker και εισαγωγής ενός αρχείου
|
|
docker-compose.yml που βρίσκεται στον ίδιο φάκελο με το SecDep χρησιμοποιήθηκε
|
|
η εντολή:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
secdep -P aws -c -n test-node -s t3.micro -i ami-08869bacfa1188ec9 --yes --docker_compose --deploy
|
|
\end{bashcode}
|
|
\caption{SecDep - Δημιουργία εικονικής μηχανής με σκλήρυνση συστήματος}
|
|
\label{lst:secdep-aws-creation-hardened}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Η εντολή αυτή έχει χρόνο εκτέλεσης 2 λεπτά και 55 δευτερόλεπτα.
|
|
|
|
\section{Εγκατάσταση/Χρήση των εργαλείων αξιολόγησης} \label{toolsInstallation}
|
|
|
|
Αφότου έχουν δημιουργηθεί οι εικονικές μηχανές, μπορεί να ξεκινήσει η
|
|
διαδικασία αξιολόγησης της ασφάλειας τους. Αρχικά, θα παρουσιαστεί η διαδικασία
|
|
εγκατάστασης του κάθε εργαλείου και έπειτα θα παρουσιαστεί η διαδικασία χρήσης
|
|
τους.
|
|
|
|
\clearpage
|
|
|
|
\subsection{Εγκατάσταση και προετοιμασία του Vuls} \label{vulsInstallation}
|
|
|
|
Για την εγκατάσταση του Vuls, αρκεί σε έναν υπολογιστή της επιλογής μας να
|
|
εκτελεστεί η παρακάτω εντολή, η οποία λαμβάνει το αρχείο εντολών εγκατάστασης
|
|
και το εκτελεί με το κέλυφος bash:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
bash <( curl -s \
|
|
https://raw.githubusercontent.com\
|
|
/vulsio/vulsctl/master/install-host/install.sh )
|
|
\end{bashcode}
|
|
\caption{Εγκατάσταση του Vuls}
|
|
\label{lst:vuls-installation}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Ορθή πρακτική θα ήταν να γίνει έλεγχος του περιεχομένου του αρχείου πριν την
|
|
εκτέλεση της εντολής αυτής για να βεβαιωθεί κανείς ότι δεν περιέχει κάποιο
|
|
κακόβουλο κώδικα. Στην συνέχεια, θα πρέπει να δημιουργηθεί ο φάκελος που θα
|
|
περιέχει τα δεδομένα των πηγών από όπου και θα αντλεί τις πληροφορίες
|
|
ευπαθειών, καθώς και ένα αρχείο config.toml στο οποίο θα δηλωθούν τα
|
|
διαπιστευτήρια των διακομιστών που θα αξιολογηθούν.
|
|
|
|
Αυτό επιτυγχάνεται με τις παρακάτω εντολές:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
mkdir -p /usr/share/vuls-data
|
|
\end{bashcode}
|
|
\caption{Δημιουργία φακέλου}
|
|
\label{lst:create-vuls-data-folder}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cat <<EOF > /usr/share/vuls-data/config.toml
|
|
[cveDict]
|
|
type = "sqlite3"
|
|
SQLite3Path = "/usr/share/vuls-data/cve.sqlite3"
|
|
|
|
[ovalDict]
|
|
type = "sqlite3"
|
|
SQLite3Path = "/usr/share/vuls-data/oval.sqlite3"
|
|
|
|
[gost]
|
|
type = "sqlite3"
|
|
SQLite3Path = "/usr/share/vuls-data/gost.sqlite3"
|
|
|
|
[metasploit]
|
|
type = "sqlite3"
|
|
SQLite3Path = "/usr/share/vuls-data/go-msfdb.sqlite3"
|
|
|
|
[servers]
|
|
|
|
[servers.secdepawsFresh]
|
|
host = "<ip του διακομιστή>"
|
|
port = "22"
|
|
user = "secdep"
|
|
keyPath = "<πλήρες μονοπάτι ιδιωτικού κλειδιού ssh>"
|
|
scanMode = [ "deep" ]
|
|
|
|
[servers.secdepawsHardened]
|
|
host = "<ip του διακομιστή>"
|
|
port = "22100"
|
|
user = "secdep"
|
|
keyPath = "<πλήρες μονοπάτι ιδιωτικού κλειδιού ssh>"
|
|
scanMode = [ "deep" ]
|
|
EOF
|
|
\end{bashcode}
|
|
\caption{Δημιουργία και αρχικοποίηση του αρχείου ρυθμίσεων του Vuls}
|
|
\label{lst:create-vuls-config-file}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\clearpage
|
|
|
|
Για να μπορέσει ο διακομιστής στον οποίο είναι εγκατεστημένο το Vuls να
|
|
συνδεθεί στους διακομιστές της Amazon, απαιτείται η εκτέλεση δύο εντολών της
|
|
μορφής:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
ssh-keyscan -H -p <θύρα ssh> <ip του διακομιστή> >> ~/.ssh/known_hosts
|
|
\end{bashcode}
|
|
\caption{Εισαγωγή του διακομιστή της Amazon στο known\_hosts}
|
|
\label{lst:insert-host-with-ssh-keyscan}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Επιπροσθέτως, θα πρέπει να μεταφερθεί στον υπολογιστή που έχει εγκατεστημένο το
|
|
Vuls, το ιδιωτικό κλειδί του διακομιστή (ένα αρχείο ονόματι secdep), το οποίο
|
|
δημιουργείται στον ίδιο φάκελο με το εργαλείο SecDep. Για την αρχικοποίηση της
|
|
βάσης δεδομένων ευπαθειών του Vuls, εκτελούνται με σειρά οι εντολές:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cd /usr/share/vuls-data
|
|
\end{bashcode}
|
|
\caption{Μεταφορά στον φάκελο δεδομένων του Vuls}
|
|
\label{lst:move-to-vuls-data-folder}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
gost fetch debian --dbpath /usr/share/vuls-data/gost.sqlite3
|
|
\end{bashcode}
|
|
\caption{Απόκτηση δεδομένων μέσω της εντολή gost}
|
|
\label{lst:gost-fetch}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
go-cve-dictionary fetch nvd --dbpath /usr/share/vuls-data/cve.sqlite3
|
|
\end{bashcode}
|
|
\caption{Απόκτηση δεδομένων μέσω της εντολής go-cve-dictionary}
|
|
\label{lst:go-cve-dictionary-fetch}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
goval-dictionary fetch debian 11 --dbpath /usr/share/vuls-data/oval.sqlite3
|
|
\end{bashcode}
|
|
\caption{Απόκτηση δεδομένων μέσω της εντολής goval-dictionary}
|
|
\label{lst:goval-dictionary-fetch}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
go-msfdb fetch msfdb --dbpath /usr/share/vuls-data/go-msfdb.sqlite3
|
|
\end{bashcode}
|
|
\caption{Απόκτηση δεδομένων μέσω της εντολής go-msfdb}
|
|
\label{lst:go-msfdb-fetch}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Έπειτα, στο σύστημα του διακομιστή, πρέπει να εγκατασταθούν ορισμένα πακέτα
|
|
λογισμικού και να εισαχθεί ο χρήστης secdep στο αρχείο sudoers με το
|
|
περιεχόμενο \textquote{secdep ALL=(ALL) NOPASSWD:ALL} ώστε να εκτελεί εντολές
|
|
που απαιτούν διαχειριστικά δικαιώματα δίχως την ανάγκη εισαγωγής κωδικού. Αυτά
|
|
επιτυγχάνονται με τις παρακάτω εντολές:
|
|
|
|
\clearpage
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
sudo visudo
|
|
\end{bashcode}
|
|
\caption{Άνοιγμα αρχείου sudoers}
|
|
\label{lst:open-sudoers-file}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
sudo apt update
|
|
\end{bashcode}
|
|
\caption{Ενημέρωση αποθετηρίων λογισμικού}
|
|
\label{lst:update-software-repositories}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
sudo install -y debian-goodies reboot-notifier aptitude lsof
|
|
\end{bashcode}
|
|
\caption{Εγκατάσταση πακέτων λογισμικού}
|
|
\label{lst:install-software-packages}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Για τον έλεγχο συνδεσιμότητας στους διακομιστές χρειάζεται να εκτελεστεί η
|
|
εντολή:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
vuls configtest
|
|
\end{bashcode}
|
|
\caption{Έλεγχος συνδεσιμότητας του Vuls}
|
|
\label{lst:vuls-configtest}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Αφότου έχουν εκτελεστεί όλα τα παραπάνω βήματα και το αποτέλεσμα της εντολής
|
|
\ref{lst:vuls-configtest} περιλαμβάνει τα ονόματα των διακομιστών, όπως αυτά
|
|
ορίσθηκαν στο αρχείο ρυθμίσεων, ο διακομιστής είναι έτοιμος για αξιολόγηση.
|
|
Αυτό επιτυγχάνεται με την εντολή:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
vuls scan <όνομα διακομιστή>
|
|
\end{bashcode}
|
|
\caption{Εκκίνηση αξιολόγησης μέσω του Vuls}
|
|
\label{lst:vuls-scan}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Μετά το πέρας της διαδικασίας αξιολόγησης, μπορούμε να εκτελέσουμε την παρακάτω
|
|
εντολή προκειμένου να παραχθεί η αναφορά σε μορφή json:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
vuls report -format-json
|
|
\end{bashcode}
|
|
\caption{Παραγωγή αναφοράς σε μορφή json}
|
|
\label{lst:vuls-report-json}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Για να μπορέσουμε να δούμε τα αποτελέσματα σε μια ευανάγνωστη μορφή, μπορούμε
|
|
να κατεβάσουμε στον διακομιστή μας το εργαλείο VulsRepo
|
|
\footfullcite{vulsrepo}. Θα πρέπει να μεταφερθούμε σε έναν φάκελο της επιλογής
|
|
μας και έπειτα να το κατεβάσουμε μέσω της εντολής git και να αρχικοποιήσουμε το
|
|
αρχείο ρυθμίσεων του. Αυτά τα βήματα επιτυγχάνονται με τις παρακάτω εντολές:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cd /opt
|
|
\end{bashcode}
|
|
\caption{Μεταφορά στον φάκελο εγκατάστασης του VulsRepo}
|
|
\label{lst:move-to-vulsrepo-folder}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
git clone https://github.com/ishiDACo/vulsrepo.git
|
|
\end{bashcode}
|
|
\caption{Εγκατάσταση του VulsRepo}
|
|
\label{lst:install-vulsrepo}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cd /opt/vulsrepo/server/
|
|
\end{bashcode}
|
|
\caption{Μεταφορά στον φάκελο του εκτελέσιμου αρχείου του VulsRepo}
|
|
\label{lst:move-to-vulsrepo-server-folder}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cp vulsrepo-config.toml.sample vulsrepo-config.toml
|
|
\end{bashcode}
|
|
\caption{Αρχικοποίηση του αρχείου ρυθμίσεων του VulsRepo}
|
|
\label{lst:vulsrepo-config-file}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cat <<EOF > /opt/vulsrepo/server/vulsrepo-config.toml
|
|
[server]
|
|
rootPath = "/opt/vulsrepo"
|
|
resultsPath = "/usr/share/vuls-data/results"
|
|
serverPort = "<θύρα του VulsRepo>"
|
|
serverIP = "<ip του διακομιστή του Vuls>"
|
|
EOF
|
|
\end{bashcode}
|
|
\caption{Προσαρμογή του αρχείου ρυθμίσεων του VulsRepo}
|
|
\label{lst:vulsrepo-config-file-adjustment}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\clearpage
|
|
|
|
Τέλος, για να εκκινήσει το VulsRepo, εκτελούμε την εντολή:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
./vulsrepo-server
|
|
\end{bashcode}
|
|
\caption{Εκκίνηση του VulsRepo}
|
|
\label{lst:vulsrepo-start}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\subsection{Εγκατάσταση και προετοιμασία του Lynis} \label{lynisInstallation}
|
|
|
|
Σε αντίθεση με το Vuls, η εγκατάσταση του Lynis και η λειτουργία του είναι πιο
|
|
απλή. Εδώ τα βήματα που πρέπει να ακολουθηθούν είναι η σύνδεση στους
|
|
διακομιστές της Amazon μέσω ssh (για την οποία η εντολή είναι έτοιμη μετά την
|
|
δημιουργία κάθε διακομιστή), η εγκατάσταση του εργαλείου μέσω git και η
|
|
εκτέλεση του. Αυτά πραγματοποιούνται ως εξής:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
ssh -p <θύρα του διακομιστή> -i <πλήρες μονοπάτι ιδιωτικού κλειδιού ssh> secdep@<ip του διακομιστή>
|
|
\end{bashcode}
|
|
\caption{Σύνδεση στο διακομιστή της Amazon}
|
|
\label{lst:ssh-to-amazon-server}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
sudo su
|
|
\end{bashcode}
|
|
\caption{Μετάβαση σε χρήστη διαχειριστικών δικαιωμάτων}
|
|
\label{lst:switch-to-root-user}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
git clone https://github.com/CISOfy/lynis
|
|
\end{bashcode}
|
|
\caption{Εγκατάσταση του Lynis}
|
|
\label{lst:install-lynis}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cd lynis
|
|
\end{bashcode}
|
|
\caption{Μεταφορά στον φάκελο του Lynis}
|
|
\label{lst:move-to-lynis-folder}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
./lynis audit system > ~/lynis.log
|
|
\end{bashcode}
|
|
\caption{Εκκίνηση αξιολόγησης (και αποθήκευση της) μέσω του Lynis}
|
|
\label{lst:lynis-audit}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\subsection{Εγκατάσταση και προετοιμασία του LUNAR} \label{lunarInstallation}
|
|
|
|
Όπως και το Lynis, το LUNAR εγκαθίσταται και εκτελείται με τον ίδιο τρόπο.
|
|
Αφότου έχει πραγματοποιηθεί η σύνδεση στο διακομιστή και έχουμε μεταβεί σε
|
|
χρήστη με διαχειριστικά δικαιώματα, πρέπει να εκτελεστούν οι εξής εντολές:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
git clone https://github.com/lateralblast/lunar
|
|
\end{bashcode}
|
|
\caption{Εγκατάσταση του LUNAR}
|
|
\label{lst:install-lunar}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cd lunar
|
|
\end{bashcode}
|
|
\caption{Μεταφορά στον φάκελο του LUNAR}
|
|
\label{lst:move-to-lunar-folder}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
./lunar.sh -a > ~/lunar.log
|
|
\end{bashcode}
|
|
\caption{Εκκίνηση αξιολόγησης (και αποθήκευση της) μέσω του LUNAR}
|
|
\label{lst:lunar-audit}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\section{Αποτελέσματα αξιολόγησης} \label{evaluationResults}
|
|
|
|
Μετά την ολοκλήρωση της αξιολόγησης των δύο διακομιστών, τα αποτελέσματα που
|
|
παρήχθησαν από τα εργαλεία αξιολόγησης αναδεικνύουν τις διαφορές στην ασφάλεια
|
|
των δύο διακομιστών. Στην παρούσα ενότητα θα αναλυθούν τα αποτελέσματα του κάθε
|
|
εργαλείου αξιολόγησης ξεχωριστά και έπειτα θα βγει μια συμπερασματική
|
|
αξιολόγηση τους.
|
|
|
|
\subsection{Αποτελέσματα αξιολόγησης με το Vuls} \label{vulsResults}
|
|
|
|
Η εκτέλεση του Vuls στους δύο διακομιστές, στο τελευταίο κομμάτι της αναφέρει
|
|
μια μείωση των CVEs που απειλούν τον κάθε διακομιστή. Συγκεκριμένα αναφέρονται
|
|
τα εξής:
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{secdepawsFresh}:
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{Αριθμός CVEs που εντοπίσθηκαν με το OVAL}: \textbf{0}
|
|
\item \textbf{Αριθμός CVEs που εντοπίσθηκαν με το gost}: \textbf{774}
|
|
\item \textbf{Αριθμός CVEs που εντοπίσθηκαν με το CPE}: \textbf{0}
|
|
\item \textbf{Αριθμός PoC}: \textbf{0}
|
|
\item \textbf{Αριθμός εκμεταλλεύσεων}: \textbf{1}
|
|
|
|
\end{itemize}
|
|
|
|
\clearpage
|
|
|
|
\item \textbf{secdepawsHardened}:
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{Αριθμός CVEs που εντοπίσθηκαν με το OVAL}: \textbf{0}
|
|
\item \textbf{Αριθμός CVEs που εντοπίσθηκαν με το gost}: \textbf{568}
|
|
\item \textbf{Αριθμός CVEs που εντοπίσθηκαν με το CPE}: \textbf{0}
|
|
\item \textbf{Αριθμός PoC}: \textbf{0}
|
|
\item \textbf{Αριθμός εκμεταλλεύσεων}: \textbf{1}
|
|
|
|
\end{itemize}
|
|
|
|
\end{itemize}
|
|
|
|
Γραφικά, αυτό μεταφράζεται ως εξής:
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = \textwidth]{Figures/Scans/Vuls/CVEs_Διακομιστών.png}
|
|
\captionof{figure}{CVEs διακομιστών}
|
|
\label{fig:vuls-cves}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
Από τα παραπάνω μέχρι στιγμής αποτελέσματα, παρατηρούμε ότι από τους δύο
|
|
διακομιστές μας, ο διακομιστής secdepawsHardened, σχετικά με τα CVEs που
|
|
εντοπίστηκαν, έχει ασφαλιστεί κατά 26.615\%.
|
|
|
|
Επιπροσθέτως, με βάση τα γραφήματα που παρήχθησαν από το VulsRepo, μπορούμε να
|
|
διακρίνουμε μια άμεση πτώση των ευπαθειών με βάση την κατηγορία σοβαρότητας
|
|
τους στο σχήμα \ref{fig:vuls-cvss-severity-table}.
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .8\textwidth]{Figures/Scans/Vuls/count_servername_by_cvss_severity_table_chart.png}
|
|
\captionof{figure}{Πίνακας συνολικών ευπαθειών ανά κατηγορία σοβαρότητας}
|
|
\label{fig:vuls-cvss-severity-table}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
Το παραπάνω σχήμα απεικονίζεται και γραφικά ως εξής:
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .8\textwidth]{Figures/Scans/Vuls/count_servername_by_cvss_severity_area_chart.png}
|
|
\captionof{figure}{Γράφημα συνολικών ευπαθειών ανά κατηγορία σοβαρότητας}
|
|
\label{fig:vuls-cvss-severity-area-chart}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\clearpage
|
|
|
|
Πιο συγκεκριμένα, παρατηρήθηκε 14.5663\% μείωση των ευπαθειών δικτύου και
|
|
13.5793\% των φυσικών ευπαθειών. Αυτό απεικονίζεται ορθότερα στα παρακάτω
|
|
σχήματα.
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .8\textwidth]{Figures/Scans/Vuls/network_attacks_by_servername.png}
|
|
\captionof{figure}{Ευπάθειες δικτύου}
|
|
\label{fig:vuls-network-vulnerabilities}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .8\textwidth]{Figures/Scans/Vuls/network_attacks_by_servername_line_chart.png}
|
|
\captionof{figure}{Μείωση ευπαθειών δικτύου}
|
|
\label{fig:vuls-network-vulnerabilities-drop}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .8\textwidth]{Figures/Scans/Vuls/physical_attacks_by_servername.png}
|
|
\captionof{figure}{Φυσικές ευπάθειες}
|
|
\label{fig:vuls-physical-vulnerabilities}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .8\textwidth]{Figures/Scans/Vuls/physical_attacks_by_servername_line_chart.png}
|
|
\captionof{figure}{Μείωση φυσικών ευπαθειών}
|
|
\label{fig:vuls-physical-vulnerabilities-drop}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\clearpage
|
|
|
|
\subsection{Αποτελέσματα αξιολόγησης με το Lynis} \label{lynisResults}
|
|
|
|
Αφότου ολοκληρώθηκε η εκτέλεση του Lynis στους δύο διακομιστές, ήταν πλέον
|
|
δυνατή η σύγκριση του δείκτη ασφαλείας τους με την εξής εντολή:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cat lynis.log | grep -i index | sed 's/^ *//g' | cut -d' ' -f4
|
|
\end{bashcode}
|
|
\caption{Εκτύπωση δείκτη ασφαλείας}
|
|
\label{lst:lynis-security-index}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
Το αποτέλεσμα της εντολής \ref{lst:lynis-security-index} διαφέρει προς το
|
|
καλύτερο όταν το SecDep χρησιμοποιείται με την παράμετρο σκλήρυνσης όπως
|
|
δείχνουν τα αποτελέσματα:
|
|
|
|
\begin{savenotes}
|
|
\selectfont
|
|
\begin{table}[!ht]
|
|
\caption{Δείκτης ασφαλείας του Lynis}
|
|
\renewcommand{\arraystretch}{1.5}
|
|
\centering
|
|
\newcolumntype{C}{>{\centering\arraybackslash}m{6cm}}
|
|
\textgreek{\begin{tabular}{||C|C||}
|
|
\hline
|
|
|
|
Διακομιστής & Δείκτης Ασφαλείας \\ [0.5ex]
|
|
|
|
\hline\hline
|
|
|
|
Προ σκλήρυνσης & 65 \\
|
|
|
|
\hline
|
|
|
|
Μετά σκλήρυνσης & 71 \\
|
|
|
|
\hline
|
|
\end{tabular}}
|
|
\label{table:lynis-security-index-table}
|
|
\renewcommand{\arraystretch}{1}
|
|
\end{table}
|
|
\end{savenotes}
|
|
|
|
H αύξηση ασφάλειας του διακομιστή ανέρχεται στο 9.23077\% και απεικονίζεται
|
|
γραφικά στο σχήμα \ref{fig:lynis-security-index}.
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .8\textwidth]{Figures/Scans/Lynis/Lynis_Hardening_Index.png}
|
|
\captionof{figure}{Αύξηση δείκτη ασφαλείας του Lynis}
|
|
\label{fig:lynis-security-index}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\subsection{Αποτελέσματα αξιολόγησης με το LUNAR} \label{lunarResults}
|
|
|
|
Παρόμοια με το Lynis, εφόσον το LUNAR ολοκληρώσει την αξιολόγηση του διακομιστή
|
|
παράγεται μια αναφορά. Στο τελικό μέρος της αναφοράς παρουσιάζονται, ο αριθμός
|
|
των ελέγχων που πραγματοποιήθηκαν, των θετικών αποτελεσμάτων και των
|
|
προειδοποιήσεων για σημεία που ενδέχεται να χρήζουν βελτίωσης.
|
|
|
|
Προκειμένου να εξάγουμε μια βαθμολογία, θα λάβουμε υπόψιν τον αριθμό των
|
|
προειδοποιήσεων, τον οποίο θα αποκτήσουμε με την εκτέλεση της παρακάτω εντολής:
|
|
|
|
\begin{listing}[!ht]
|
|
\begin{bashcode}
|
|
cat lunar.log | grep -i "warnings:" | awk '{print $2}'
|
|
\end{bashcode}
|
|
\caption{Εκτύπωση συνολικών προειδοποιήσεων του Lunar}
|
|
\label{lst:lunar-warnings}
|
|
\vspace*{-10pt}
|
|
\end{listing}
|
|
|
|
\begin{savenotes}
|
|
\selectfont
|
|
\begin{table}[!ht]
|
|
\caption{Συνολικές προειδοποιήσεις του Lunar}
|
|
\renewcommand{\arraystretch}{1.5}
|
|
\centering
|
|
\newcolumntype{C}{>{\centering\arraybackslash}m{6cm}}
|
|
\textgreek{\begin{tabular}{||C|C||}
|
|
\hline
|
|
|
|
Διακομιστής & Αριθμός Προειδοποιήσεων \\ [0.5ex]
|
|
|
|
\hline\hline
|
|
|
|
Προ σκλήρυνσης & 266 \\
|
|
|
|
\hline
|
|
|
|
Μετά σκλήρυνσης & 260 \\
|
|
|
|
\hline
|
|
\end{tabular}}
|
|
\label{table:lunar-warnings-table}
|
|
\renewcommand{\arraystretch}{1}
|
|
\end{table}
|
|
\end{savenotes}
|
|
|
|
Από τον πίνακα \ref{table:lunar-warnings-table} διαπιστώνεται πως έχουμε
|
|
2.25564\% αύξηση της ασφάλειας, το οποίο απεικονίζεται και ως εξής:
|
|
|
|
\begin{center}
|
|
\begin{figure}[!ht]
|
|
\centering
|
|
\includegraphics[width = .7\textwidth]{Figures/Scans/Lunar/lunar_warnings.png}
|
|
\captionof{figure}{Συνολικές προειδοποιήσεις του Lunar}
|
|
\label{fig:lunar-warnings}
|
|
\end{figure}
|
|
\vspace*{-30pt}
|
|
\end{center}
|
|
|
|
\section{Συμπεράσματα αποτελεσμάτων αξιολόγησης} \label{evaluationResultsConclusion}
|
|
|
|
Από τα αποτελέσματα των τριών εργαλείων αξιολόγησης, προκύπτει ότι μετά την
|
|
εφαρμογή της παραμέτρου σκλήρυνσης, ένας διακομιστής μπορεί να ασφαλιστεί σε
|
|
ικανοποιητικό βαθμό. Η συγκεκριμένη παράμετρος σκληραίνει τον διακομιστή και με
|
|
μεθόδους που δεν είναι μετρήσιμες, όπως η δημιουργία εκτελέσιμων αρχείων και η
|
|
εφαρμογή περιοδικής τους εκτέλεσης με στόχους την ενημέρωση των πακέτων
|
|
λογισμικού και το κλείσιμο θυρών που δεν χρησιμοποιούνται αντίστοιχα.
|
|
|
|
Επιπρόσθετα, η σκλήρυνση της μηχανής δοχείων Docker δεν απεικονίζεται σε κανένα
|
|
από τα παραπάνω γραφήματα. Αυτό συμβαίνει διότι δεν υπάρχει εργαλείο που να
|
|
μπορεί να αξιολογήσει την ασφάλεια του Docker όταν αυτό χρησιμοποιείται χωρίς
|
|
διαχειριστικά δικαιώματα. Ωστόσο, η σκλήρυνση του έχει πετύχει διότι η απαλλαγή
|
|
από τον περιορισμό των διαχειριστικών δικαιωμάτων έχει ως αποτέλεσμα την μείωση
|
|
της επιφάνειας επίθεσης σε περίπτωση παραβίασης του, ενώ η αντικατάσταση του
|
|
runC με το runsc μειώνει την πιθανότητα παραβίασης. Για την ενίσχυση της
|
|
ασφάλειας του Docker, εκτελούνται και βήματα όπως η ρύθμιση της παραμέτρου του
|
|
δαίμονα \textquote{no-new-privileges} που αποτρέπει τα δοχεία από το να
|
|
λαμβάνουν επιπρόσθετα δικαιώματα και η παράμετρος \textquote{selinux-enabled}
|
|
εάν υποστηρίζεται από την διανομή. Τέλος, το SecDep ασφαλίζει το Docker
|
|
επιπρόσθετα με έμμεσο τρόπο, εκτελώντας την υπηρεσία watchtower
|
|
\footfullcite{watchtower}, η οποία είναι υπεύθυνη για την αυτόματη ενημέρωση
|
|
των εικόνων δοχείων του συστήματος.
|
|
|
|
Επομένως, το συμπέρασμα που προκύπτει είναι πως η χρήση του SecDep μπορεί να
|
|
αυξήσει την ασφάλεια ενός συστήματος. Ωστόσο, ενώ τα εργαλεία αξιολόγησης
|
|
παρουσιάζουν ένα ποσοστό αύξησης της ασφάλειας, η πραγματική αύξηση είναι
|
|
μεγαλύτερη διότι πολλές από τις αλλαγές που πραγματοποιούνται δεν
|
|
αντικατοπτρίζονται στα αποτελέσματα των αποτιμήσεων.
|