ProHoster > Blog > διαχείριση > Elastic under lock and key: ενεργοποίηση επιλογών ασφαλείας συμπλέγματος Elasticsearch για πρόσβαση από μέσα και έξω
Elastic under lock and key: ενεργοποίηση επιλογών ασφαλείας συμπλέγματος Elasticsearch για πρόσβαση από μέσα και έξω
Το Elastic Stack είναι ένα πολύ γνωστό εργαλείο στην αγορά συστημάτων SIEM (για την ακρίβεια, όχι μόνο αυτά). Μπορεί να συλλέξει πολλά δεδομένα διαφορετικού μεγέθους, τόσο ευαίσθητα όσο και όχι πολύ ευαίσθητα. Δεν είναι απολύτως σωστό εάν δεν προστατεύεται η πρόσβαση στα ίδια τα στοιχεία Elastic Stack. Από προεπιλογή, όλα τα Elastic out-of-the-box στοιχεία (συλλέκτες Elasticsearch, Logstash, Kibana και Beats) εκτελούνται σε ανοιχτά πρωτόκολλα. Και στην ίδια την Kibana, ο έλεγχος ταυτότητας είναι απενεργοποιημένος. Όλες αυτές οι αλληλεπιδράσεις μπορούν να ασφαλιστούν και σε αυτό το άρθρο θα σας πούμε πώς να το κάνετε αυτό. Για ευκολία, η ιστορία χωρίστηκε σε 3 σημασιολογικά τμήματα:
Πρότυπο πρόσβασης σε δεδομένα
Ασφάλεια δεδομένων μέσα σε ένα σύμπλεγμα Elasticsearch
Ασφάλεια δεδομένων εκτός ενός συμπλέγματος Elasticsearch
Λεπτομέρειες κάτω από το κόψιμο.
Πρότυπο πρόσβασης σε δεδομένα
Εάν εγκαταστήσετε το Elasticsearch και δεν το συντονίσετε με κανέναν τρόπο, η πρόσβαση σε όλα τα ευρετήρια θα είναι ανοιχτή σε όλους. Λοιπόν, ή αυτοί που μπορούν να χρησιμοποιήσουν μπούκλα. Για να αποφευχθεί αυτό, το Elasticsearch έχει ένα πρότυπο που είναι διαθέσιμο ξεκινώντας από μια συνδρομή Basic (η οποία είναι δωρεάν). Σχηματικά μοιάζει κάπως έτσι:
Τι φαίνεται στην εικόνα
Χρήστες είναι όλοι όσοι μπορούν να συνδεθούν χρησιμοποιώντας τα διαπιστευτήριά τους.
Ένας ρόλος είναι ένα σύνολο δικαιωμάτων.
Τα δικαιώματα είναι ένα σύνολο προνομίων.
Τα δικαιώματα είναι δικαιώματα εγγραφής, ανάγνωσης, διαγραφής κ.λπ. (Πλήρης λίστα προνομίων)
Οι πόροι είναι ευρετήρια, έγγραφα, πεδία, χρήστες και άλλες οντότητες αποθήκευσης (το πρότυπο για ορισμένους πόρους είναι διαθέσιμο μόνο με συνδρομές επί πληρωμή).
Το Elasticsearch έχει από προεπιλογή εγκιβωτισμένοι χρήστεςστα οποία επισυνάπτονται ρόλους κουτιού. Αφού ενεργοποιήσετε τις ρυθμίσεις ασφαλείας, μπορείτε να αρχίσετε να τις χρησιμοποιείτε αμέσως.
Για να ενεργοποιήσετε την ασφάλεια στις ρυθμίσεις του Elasticsearch, πρέπει να το προσθέσετε στο αρχείο διαμόρφωσης (από προεπιλογή αυτό είναι elasticsearch/config/elasticsearch.yml) νέα γραμμή:
xpack.security.enabled: true
Αφού αλλάξετε το αρχείο διαμόρφωσης, εκκινήστε ή επανεκκινήστε το Elasticsearch για να τεθούν σε ισχύ οι αλλαγές. Το επόμενο βήμα είναι η εκχώρηση κωδικών πρόσβασης στους χρήστες του κουτιού. Ας το κάνουμε αυτό διαδραστικά χρησιμοποιώντας την παρακάτω εντολή:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
Ελέγχουμε:
[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Enter host password for user 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1
Μπορείτε να χτυπήσετε τον εαυτό σας στην πλάτη - οι ρυθμίσεις στην πλευρά του Elasticsearch έχουν ολοκληρωθεί. Τώρα ήρθε η ώρα να διαμορφώσετε το Kibana. Εάν το εκτελέσετε τώρα, θα εμφανιστούν σφάλματα, επομένως είναι σημαντικό να δημιουργήσετε ένα κατάστημα κλειδιών. Αυτό γίνεται με δύο εντολές (χρήστης κιμπάνα και τον κωδικό πρόσβασης που εισήχθη στο βήμα δημιουργίας κωδικού πρόσβασης στο Elasticsearch):
Εάν όλα είναι σωστά, η Kibana θα αρχίσει να ζητά login και κωδικό πρόσβασης. Η συνδρομή Basic περιλαμβάνει ένα πρότυπο που βασίζεται σε εσωτερικούς χρήστες. Ξεκινώντας με το Gold, μπορείτε να συνδέσετε εξωτερικά συστήματα ελέγχου ταυτότητας - συστήματα LDAP, PKI, Active Directory και Single sign-on.
Τα δικαιώματα πρόσβασης σε αντικείμενα εντός του Elasticsearch μπορούν επίσης να περιοριστούν. Είναι αλήθεια ότι για να κάνετε το ίδιο για έγγραφα ή πεδία, θα χρειαστείτε μια συνδρομή επί πληρωμή (αυτή η πολυτέλεια ξεκινά με το επίπεδο Platinum). Αυτές οι ρυθμίσεις είναι διαθέσιμες στη διεπαφή Kibana ή μέσω API ασφαλείας. Μπορείτε να ελέγξετε μέσω του ήδη γνωστού μενού Dev Tools:
Ασφάλεια δεδομένων μέσα σε ένα σύμπλεγμα Elasticsearch
Όταν το Elasticsearch εκτελείται σε ένα σύμπλεγμα (που είναι συνηθισμένο), οι ρυθμίσεις ασφαλείας εντός του συμπλέγματος γίνονται σημαντικές. Για ασφαλή επικοινωνία μεταξύ κόμβων, το Elasticsearch χρησιμοποιεί το πρωτόκολλο TLS. Για να ρυθμίσετε την ασφαλή επικοινωνία μεταξύ τους, χρειάζεστε ένα πιστοποιητικό. Δημιουργούμε ένα πιστοποιητικό και ένα ιδιωτικό κλειδί σε μορφή PEM:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pem
Αφού εκτελέσετε την παραπάνω εντολή, στον κατάλογο /../elasticsearch θα εμφανιστεί το αρχείο elastic-stack-ca.zip. Μέσα σε αυτό θα βρείτε ένα πιστοποιητικό και ένα ιδιωτικό κλειδί με επεκτάσεις crt и κλειδί αντίστοιχα. Συνιστάται να τα τοποθετήσετε σε έναν κοινόχρηστο πόρο, στον οποίο θα πρέπει να έχετε πρόσβαση από όλους τους κόμβους του συμπλέγματος.
Κάθε κόμβος χρειάζεται πλέον τα δικά του πιστοποιητικά και ιδιωτικά κλειδιά με βάση αυτά στον κοινόχρηστο κατάλογο. Κατά την εκτέλεση της εντολής, θα σας ζητηθεί να ορίσετε έναν κωδικό πρόσβασης. Μπορείτε να προσθέσετε επιπλέον επιλογές -ip και -dns για πλήρη επαλήθευση των κόμβων που αλληλεπιδρούν.
Ως αποτέλεσμα της εκτέλεσης της εντολής, θα λάβουμε ένα πιστοποιητικό και ένα ιδιωτικό κλειδί σε μορφή PKCS # 12, προστατευμένα με κωδικό πρόσβασης. Απομένει να μετακινήσετε το αρχείο που δημιουργήθηκε p12 στον κατάλογο διαμόρφωσης:
Υπάρχει μια άλλη επιλογή ασφαλείας - φιλτράρισμα διευθύνσεων IP (διατίθεται σε συνδρομές από το επίπεδο Gold). Σας επιτρέπει να δημιουργείτε λευκές λίστες διευθύνσεων IP από τις οποίες επιτρέπεται η πρόσβαση σε κόμβους.
Ασφάλεια δεδομένων εκτός ενός συμπλέγματος Elasticsearch
Εκτός του συμπλέγματος σημαίνει σύνδεση εξωτερικών οργάνων: Kibana, Logstash, Beats ή άλλους εξωτερικούς πελάτες.
Για να διαμορφώσετε την υποστήριξη για https (αντί για http), προσθέστε νέες γραμμές στο elasticsearch.yml:
Μετά την προσθήκη των κλειδιών, οι κόμβοι Elasticsearch είναι έτοιμοι να συνδεθούν μέσω https. Τώρα μπορούν να εκτοξευθούν.
Το επόμενο βήμα είναι να δημιουργήσετε ένα κλειδί σύνδεσης Kibana και να το προσθέσετε στη διαμόρφωση. Με βάση το πιστοποιητικό, το οποίο βρίσκεται ήδη στον κοινόχρηστο κατάλογο, θα δημιουργήσουμε ένα πιστοποιητικό σε μορφή PEM (το PKCS # 12 Kibana, το Logstash και το Beats δεν υποστηρίζουν ακόμη):
Τα πλήκτρα υπάρχουν, επομένως μένει να αλλάξετε τη διαμόρφωση του Kibana ώστε να αρχίσει να τα χρησιμοποιεί. Στο αρχείο διαμόρφωσης kibana.yml, αλλάξτε το http σε https και προσθέστε γραμμές με ρυθμίσεις σύνδεσης SSL. Οι τρεις τελευταίες γραμμές δημιουργούν μια ασφαλή αλληλεπίδραση μεταξύ του προγράμματος περιήγησης του χρήστη και του Kibana.
Έτσι, οι ρυθμίσεις ολοκληρώνονται και η πρόσβαση στα δεδομένα στο σύμπλεγμα Elasticsearch κρυπτογραφείται.
Εάν έχετε ερωτήσεις σχετικά με τις δυνατότητες του Elastic Stack σε δωρεάν ή επί πληρωμή συνδρομές, εργασίες παρακολούθησης ή δημιουργία συστήματος SIEM, αφήστε ένα αίτημα στο φόρμα ανατροφοδότησης στον ιστότοπό μας.
Περισσότερα από τα άρθρα μας σχετικά με το Elastic Stack στο Habré: