Οι τεχνολογίες Cloud είναι εξαιρετικές για την εύκολη δημιουργία υποδομών για εφαρμογές και υπηρεσίες. Όλο και περισσότερο, οι εταιρείες και οι ανεξάρτητοι προγραμματιστές μεταφέρουν τα έργα τους στο AWS, το Azure ή σε άλλα. Σε αυτό το άρθρο, θα εξοικειωθούμε με τα βασικά στοιχεία των τεχνολογιών cloud, θα μάθουμε ποιες υπηρεσίες μπορούμε να χρησιμοποιήσουμε και θα αναλύσουμε τον τρόπο με τον οποίο οι χάκερ μπορούν να αποκτήσουν πρόσβαση. Θα πραγματοποιήσουμε αναγνώριση και θα συλλέξουμε σημαντικές πληροφορίες.
Το Cloud είναι μια τεχνολογία που παρέχει στους χρήστες του Διαδικτύου πρόσβαση στους υπολογιστικούς πόρους του διακομιστή και χρήση λογισμικού ως διαδικτυακή υπηρεσία. Αυτό σημαίνει ότι ακόμη και από ένα smartphone που διαθέτει σύνδεση στο Διαδίκτυο, μπορείτε να εκτελέσετε πολύπλοκους υπολογισμούς και να επεξεργαστείτε τα δεδομένα σας χρησιμοποιώντας τη δύναμη ενός απομακρυσμένου διακομιστή.
Ποιες υπηρεσίες μπορούμε να πάρουμε;
-
SaaS (software as a service) – παροχή λογισμικού και υπηρεσιών.
-
IaaS (infrastructure as a service) – είναι μια αναπαράσταση της υποδομής υπολογιστών με τη μορφή εικονικοποίησης.
-
PaaS (platform as a service) – σας επιτρέπει να νοικιάσετε έναν εικονικό διακομιστή (instance).
-
FaaS (Function as a Service) – γνωστή και ως serverless computing, επιτρέπει στους προγραμματιστές να αναπτύσσουν μεμονωμένες λειτουργίες ή μονάδες κώδικα σε απόκριση σε συμβάντα.
-
DaaS (Desktop as a Service) – παρέχει μια εικονική υποδομή επιτραπέζιων υπολογιστών.
-
DBaaS (Database as a Service) – προσφέρει διαχείριση και συντήρηση βάσεων δεδομένων ως υπηρεσία cloud.
-
DRaaS (Disaster Recovery as a Service) – παρέχει μια λύση βασισμένη στο cloud για την ανάκαμψη από καταστροφές, εξασφαλίζοντας τη δημιουργία αντιγράφων ασφαλείας δεδομένων και την επιχειρηματική συνέχεια σε περίπτωση έκτακτης ανάγκης.
-
IAM – Η διαχείριση ταυτότητας και πρόσβασης (IAM) είναι μία από τις θεμελιώδεις υπηρεσίες της υποδομής cloud της Amazon. Σας επιτρέπει να διαχειρίζεστε την πρόσβαση σε πόρους του AWS. Οι χρήστες, οι ομάδες, οι ρόλοι και η πρόσβασή τους διαχειρίζονται εδώ. Η δομή αυτής της υπηρεσίας παρουσιάζεται στην ακόλουθη εικόνα:
Policy
Η πολιτική περιέχει πληροφορίες σχετικά με το τι μπορεί και τι δεν μπορεί να κάνει ο χρήστης και ποια είναι τα δικαιώματά του. Οι πολιτικές μπορούν να εφαρμοστούν σε ομάδες, χρήστες ή ρόλους. Για παράδειγμα, εάν μια πολιτική επιτρέπει την ενέργεια GetUser, τότε ένας χρήστης με την πολιτική αυτή μπορεί να λάβει πληροφορίες για άλλους χρήστες.
Στο πλαίσιο της πολιτικής υπάρχουν τρία σημαντικά στοιχεία:
1. Effect – που χρησιμοποιείται για τη χορήγηση ή την άρνηση πρόσβασης.
2. Action – περιλαμβάνει έναν κατάλογο ενεργειών που η πολιτική επιτρέπει ή απαγορεύει.
3. Resource – παραθέτει τους πόρους στους οποίους εφαρμόζεται η πολιτική.
User
Ένας χρήστης IAM είναι μια οντότητα που δημιουργείται στο AWS για να αντιπροσωπεύει το άτομο ή την εφαρμογή που το χρησιμοποιεί. Οι χρήστες έχουν το λεγόμενο User ARN (όνομα πόρου Amazon), το οποίο μοιάζει με το ακόλουθο:
arn:partition:service:region:account:resource
όπου
– arn είναι το αναγνωριστικό συμβολοσειράς,
– partition προσδιορίζει την κατάτμηση για τον πόρο. Για τις τυπικές περιοχές AWS, χρησιμοποιείται το διαμέρισμα aws.
– service προσδιορίζει το προϊόν AWS. Οι πόροι IAM χρησιμοποιούν πάντα το “iam”,
– region προσδιορίζει την περιοχή του πόρου. Για τους πόρους IAM, αυτό το πεδίο παραμένει πάντα κενό,
– account καθορίζει το αναγνωριστικό λογαριασμού AWS χωρίς παύλες,
– resource προσδιορίζει έναν συγκεκριμένο πόρο με βάση το όνομά του.
Ακολουθούν ορισμένα παραδείγματα ARN:
arn:aws:iam::123456789012:root
arn:aws:iam::123456789012:role/my-role
arn:aws:iam::123456789012:user/JohnDoe
arn:aws:iam::123456789012:group/Developers
Group
Μια ομάδα IAM είναι μια συλλογή χρηστών. Οι ομάδες διευκολύνουν τη διαχείριση τους. Μια ομάδα μπορεί να περιέχει πολλούς χρήστες και ένας χρήστης μπορεί να ανήκει σε πολλές ομάδες.
Role
Ένας ρόλος IAM είναι μια οντότητα που ορίζει ένα σύνολο δικαιωμάτων για την υποβολή αιτημάτων σε υπηρεσίες AWS. Η χρήση ρόλων είναι ένας ασφαλής τρόπος χορήγησης δικαιωμάτων σε συγκεκριμένες οντότητες. Για παράδειγμα, ένας χάκερ μπορεί να προσπαθήσει να αναλάβει έναν συγκεκριμένο ρόλο, αν έχει τα σχετικά δικαιώματα, και να αποκτήσει τα προνόμια αυτού του ρόλου. Οι ρόλοι δημιουργούνται έτσι ώστε να μην χρειάζεται να καταχωρίσετε έναν επιπλέον λογαριασμό για ορισμένες αυτοματοποιημένες εργασίες. Ένας ρόλος συχνά συνδέεται με μια υπηρεσία.
EC2
Επίσης γνωστό ως Elastic Compute Cloud. Πρόκειται για έναν εικονικό διακομιστή (instance) στον οποίο ο χρήστης μπορεί να εκτελέσει οποιαδήποτε εφαρμογή για την επίλυση των δικών του εργασιών. Το instance αποτελείται από τα ακόλουθα στοιχεία:
1. Operating system – σχεδόν οποιοδήποτε λειτουργικό σύστημα μπορεί να εγκατασταθεί στον EC2.
2. Access – πώς μπορείτε να αποκτήσετε πρόσβαση στον EC2 μέσω του Διαδικτύου.
3. Address – η διεύθυνση IP στην οποία ανταποκρίνεται η παράσταση.
4. Storage – τη θέση στην οποία αποθηκεύονται τα δεδομένα της περίπτωσης.
5. Security Groups – ένα σύνολο κανόνων που ισχύουν για τον EC2, σας επιτρέπουν να ελέγχετε την εισερχόμενη και εξερχόμενη κυκλοφορία.
6. VPC (virtual private cloud) – ένα απομονωμένο δίκτυο υπολογιστικού νέφους όπου μπορεί να βρίσκεται η παρουσία μας.
Initial Access
Υπάρχουν διάφορες μέθοδοι για να μπείτε στα σύννεφα. Θα περάσουμε από το AWS CLI, το οποίο είναι το περιβάλλον γραμμής εντολών για την εργασία με το AWS. Θα χρειαστούμε ένα ειδικό αναγνωριστικό μυστικού κλειδιού και το ίδιο το μυστικό κλειδί, μόλις το παρέχουμε θα είμαστε σε θέση να εργαστούμε με το σύννεφο. Θα χρησιμοποιήσουμε το IAM ως σημείο εισόδου.
Reconnaissance
Στους υπολογιστές που αλληλεπιδρούν με τις υπηρεσίες Amazon Cloud Services, υπάρχει συνήθως ένα αρχείο διαπιστευτηρίων που περιέχει το μυστικό αναγνωριστικό κλειδιού πρόσβασης και το ίδιο το κλειδί. Οι συνήθεις διαδρομές θέσης του αρχείου είναι οι εξής. Στο Linux:
/root/.aws/credentials
/home/user/.aws/credentials
%userprofile%\.aws\credentials
Αυτά τα διαπιστευτήρια μπορούν να βρεθούν σε δημόσια αποθετήρια. Επιπλέον, δεν πρέπει να ξεχνάτε τις μεταβλητές περιβάλλοντος. Μας ενδιαφέρουν οι ακόλουθες τιμές:
aws_access_key
aws_secret_key
aws_access_key_id
aws_secret_access_key
S3_BUCKET
S3_ACCESS_KEY_ID
S3_SECRET_ACCESS_KEY
Connection
Αφού λάβουμε το αναγνωριστικό και το κλειδί, μπορούμε να εγκαταστήσουμε το AWS CLI με την ακόλουθη εντολή.
kali> sudo apt install awscli -y
Για να συνδεθείτε, εκτελέστε την ακόλουθη εντολή:
kali> aws configure
Για να μάθετε με ποιον λογαριασμό είστε συνδεδεμένοι στο σύστημα, το Linux χρησιμοποιεί την εντολή “whoami”, αλλά το AWS δεν την διαθέτει. Για να μάθετε το όνομα χρήστη σας, εισαγάγετε την ακόλουθη εντολή:
kali> aws sts get-caller-identity
I AM Users
Οι χρήστες αποτελούν το πιο δημοφιλές σημείο εισόδου στο cloud του AWS. Είναι ο λογαριασμός χρήστη που μπορεί να βρεθεί στο αρχείο “.aws/credentials” καθώς και σε δημόσια αποθετήρια.
Το πρώτο βήμα είναι η εύρεση όλων των εγγεγραμμένων χρηστών στο cloud:
kali> aws iam list-users
Οι χρήστες μπορεί να είναι μέλη ομάδων και σε αυτές τις ομάδες μπορεί να συνδέονται λανθασμένα πολιτικές. Η επόμενη εντολή θα καθορίσει σε ποιες ομάδες είναι μέλος κάθε χρήστης:
kali> aws iam list-groups-for-user –user-name <username>
Εκτός από τις ομάδες, οι πολιτικές μπορούν επίσης να συνδεθούν απευθείας με έναν χρήστη. Ας ελέγξουμε αν υπάρχει τέτοια δέσμευση στην περίπτωσή μας:
kali> aws iam list-attached-user-policies –user-name <username>
Groups
Οι ομάδες μπορούν επίσης να έχουν επισυνάψει πολιτικές που μπορούν να μας βοηθήσουν κατά τη φάση της κλιμάκωσης προνομίων. Για να δείτε όλες τις ομάδες IAM, πληκτρολογήστε τα εξής:
kali> aws iam list-groups
Οι παρακάτω εντολές σας βοηθούν να βρείτε τις πολιτικές που ισχύουν για μια ομάδα.
Για τις διαχειριζόμενες πολιτικές:
kali> aws iam list-group-policies –group-name <group-name>
Και για τις συνημμένες πολιτικές:
kali> aws iam list-attached-group-policies –group-name <group-name>
Roles
Οι ρόλοι μας ενδιαφέρουν για τους ίδιους λόγους που μας ενδιαφέρουν οι ομάδες. Μπορούμε να χρησιμοποιήσουμε τους ρόλους προς όφελός μας αν έχουμε το προνόμιο “iam:PassRole”.
Μπορείτε να δείτε όλους τους ρόλους IAM χρησιμοποιώντας την ακόλουθη εντολή:
kali> aws iam list-roles
Policies
Οι πολιτικές εντός του AWS περιέχουν πληροφορίες σχετικά με τα προνόμια που χορηγούνται στους χρήστες. Υπάρχει ένας πολύ χρήσιμος ιστότοπος, το “policysim.aws.amazon.com”, όπου μπορείτε να ανεβάσετε την πολιτική που αποκτήσατε και να εργαστείτε με ευκολία με αυτήν, εφαρμόζοντας φίλτρα.
Ταυτόχρονα, οι πολιτικές μπορούν να είναι είτε inline είτε διαχειρίσιμες. Εξυπηρετούν τις ίδιες λειτουργίες: χορήγηση ή άρνηση δικαιωμάτων. Η διαφορά με τις inline πολιτικές είναι ότι στην πραγματικότητα ενσωματώνονται στην ομάδα, τον χρήστη ή τον ρόλο στον οποίο εφαρμόζονται. Αυτό δημιουργεί μια αυστηρή σύνδεση: μια πολιτική με ένα αντικείμενο. Όταν διαγράφεται ένας χρήστης, μια ομάδα ή ένας ρόλος, διαγράφεται και αυτή η πολιτική. Οι ενσωματωμένες πολιτικές εφαρμόζονται συχνά για να εγγυηθούν ότι δεν θα παραχωρηθούν κατά λάθος προνόμια σε οποιοδήποτε άλλο αντικείμενο. Ωστόσο, η Amazon συνιστά τη χρήση διαχειριζόμενων πολιτικών αντί των inline πολιτικών.
Οι διαχειριζόμενες πολιτικές είναι ελαφρώς πιο βολικές. Το πιο σημαντικό είναι ότι μπορούν να προσαρτηθούν σε πολλά αντικείμενα ταυτόχρονα. Οι διαχειριζόμενες πολιτικές χωρίζονται σε δύο τύπους: διαχειριζόμενη πολιτική και πολιτική που διαχειρίζεται ο πελάτης. Ο πρώτος τύπος εξαλείφει την ανάγκη να γράψετε εσείς την πολιτική, καθώς η AWS έχει φροντίσει γι’ αυτό και έχει παράσχει ορισμένες επιλογές για τις πιο συνηθισμένες περιπτώσεις, όπως “AmazonDynamoDBFullAccess”, “AWSCodeCommitPowerUser” και παρόμοιες. Η τυπικά διαχειριζόμενη πολιτική δεν μπορεί να επεξεργαστεί. Ο δεύτερος τύπος – η πολιτική διαχείρισης από τον πελάτη – χρησιμοποιείται εάν απαιτείται μεγαλύτερη λεπτομερής ρύθμιση των προνομίων. Σε αυτή την περίπτωση, θα πρέπει να δημιουργήσετε μόνοι σας την πολιτική.
Μπορείτε να δείτε τη λίστα των πολιτικών IAM με την ακόλουθη εντολή:
kali> aws iam list-policies
Για να λάβετε πληροφορίες σχετικά με μια συγκεκριμένη πολιτική, χρησιμοποιήστε την ακόλουθη σύνταξη:
kali> aws iam get-policy –policy-arn <policy-arn>
Πολλές διαφορετικές εκδόσεις της ίδιας πολιτικής μπορούν να υπάρχουν ταυτόχρονα στο AWS. Για παράδειγμα, ας υποθέσουμε ότι η πρώτη έκδοση της πολιτικής μας έδινε πλήρη πρόσβαση σε όλους τους πόρους και η δεύτερη έκδοση της πολιτικής μας είχε ήδη περιορίσει με κάποιο τρόπο. Πρέπει να το γνωρίζουμε προκειμένου να κλιμακώσουμε τα προνόμια στο μέλλον.
Για να λάβετε τις πληροφορίες έκδοσης της συγκεκριμένης πολιτικής, χρησιμοποιήστε την ακόλουθη εντολή:
kali> aws iam list-policy-versions –policy-arn <policy-arn>
Σύνοψη
Σε αυτό το άρθρο, εξετάσαμε τα βασικά στοιχεία των τεχνολογιών νέφους και την εφαρμογή τους. Αποκτήσαμε πρόσβαση στο σύννεφο και περιηγηθήκαμε, αποκτώντας σημαντικές πληροφορίες για την κλιμάκωση των προνομίων στο μέλλον.