Τον τελευταίο χρόνο, υπήρξαν πολλές διαρροές από βάσεις δεδομένων
Ας κάνουμε αμέσως κράτηση ότι στην πρακτική μας χρησιμοποιούμε το Elasticsearch για την αποθήκευση αρχείων καταγραφής και την ανάλυση αρχείων καταγραφής εργαλείων ασφάλειας πληροφοριών, λειτουργικού συστήματος και λογισμικού στην πλατφόρμα μας IaaS, η οποία συμμορφώνεται με τις απαιτήσεις του 152-FZ, Cloud-152.
Ελέγχουμε αν η βάση δεδομένων «κολλάει» στο Διαδίκτυο
Στις περισσότερες γνωστές περιπτώσεις διαρροών (
Αρχικά, ας ασχοληθούμε με τη δημοσίευση στο Διαδίκτυο. Γιατί συμβαίνει αυτό; Γεγονός είναι ότι για πιο ευέλικτη λειτουργία του Elasticsearch
Αν μπορείτε να μπείτε, τότε τρέξτε να το κλείσετε.
Προστασία της σύνδεσης με τη βάση δεδομένων
Τώρα θα το κάνουμε έτσι ώστε να είναι αδύνατη η σύνδεση στη βάση δεδομένων χωρίς έλεγχο ταυτότητας.
Το Elasticsearch διαθέτει μια μονάδα ελέγχου ταυτότητας που περιορίζει την πρόσβαση στη βάση δεδομένων, αλλά είναι διαθέσιμη μόνο στο σετ πρόσθετων X-Pack επί πληρωμή (δωρεάν χρήση 1 μήνα).
Τα καλά νέα είναι ότι το φθινόπωρο του 2019, η Amazon άνοιξε τις εξελίξεις της, οι οποίες επικαλύπτονται με το X-Pack. Η λειτουργία ελέγχου ταυτότητας κατά τη σύνδεση σε μια βάση δεδομένων έχει γίνει διαθέσιμη με δωρεάν άδεια για την έκδοση Elasticsearch 7.3.2 και μια νέα έκδοση για το Elasticsearch 7.4.0 είναι ήδη στα σκαριά.
Αυτό το πρόσθετο είναι εύκολο στην εγκατάσταση. Μεταβείτε στην κονσόλα διακομιστή και συνδέστε το αποθετήριο:
Βάσει στροφών ανά λεπτό:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Βάσει DEB:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
Ρύθμιση αλληλεπίδρασης μεταξύ διακομιστών μέσω SSL
Κατά την εγκατάσταση του πρόσθετου, αλλάζει η διαμόρφωση της θύρας που συνδέεται με τη βάση δεδομένων. Επιτρέπει την κρυπτογράφηση SSL. Προκειμένου οι διακομιστές συμπλέγματος να συνεχίσουν να συνεργάζονται μεταξύ τους, πρέπει να διαμορφώσετε την αλληλεπίδραση μεταξύ τους χρησιμοποιώντας SSL.
Η εμπιστοσύνη μεταξύ των κεντρικών υπολογιστών μπορεί να δημιουργηθεί με ή χωρίς τη δική της αρχή έκδοσης πιστοποιητικών. Με την πρώτη μέθοδο, όλα είναι ξεκάθαρα: απλά πρέπει να επικοινωνήσετε με τους ειδικούς της ΑΠ. Ας περάσουμε κατευθείαν στο δεύτερο.
- Δημιουργήστε μια μεταβλητή με το πλήρες όνομα τομέα:
export DOMAIN_CN="example.com"
- Δημιουργήστε ένα ιδιωτικό κλειδί:
openssl genrsa -out root-ca-key.pem 4096
- Υπογράψτε το πιστοποιητικό ρίζας. Διατηρήστε το ασφαλές: εάν χαθεί ή παραβιαστεί, η εμπιστοσύνη μεταξύ όλων των κεντρικών υπολογιστών θα πρέπει να διαμορφωθεί εκ νέου.
openssl req -new -x509 -sha256 -subj "/C=RU/ST=Moscow/O=Moscow, Inc./CN=${DOMAIN_CN}" -key root-ca-key.pem -out root-ca.pem
- Δημιουργήστε ένα κλειδί διαχειριστή:
openssl genrsa -out admin-key-temp.pem 4096 openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
- Δημιουργήστε ένα αίτημα για υπογραφή του πιστοποιητικού:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Δημιουργήστε ένα πιστοποιητικό διαχειριστή:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Δημιουργήστε πιστοποιητικά για τον κόμβο Elasticsearch:
export NODENAME="node-01" openssl genrsa -out ${NODENAME}-key-temp.pem 4096 openssl pkcs8 -inform PEM -outform PEM -in ${NODENAME}-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out ${NODENAME}-key.pem
- Δημιουργήστε ένα αίτημα υπογραφής:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${NODENAME}.${DOMAIN_CN}" -addext"subjectAltName=DNS:${NODENAME}.${DOMAIN_CN},DNS:www.${NODENAME}.${DOMAIN_CN}" -key ${NODENAME}-key.pem -out ${NODENAME}.csr
- Υπογραφή πιστοποιητικού:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Τοποθετήστε το πιστοποιητικό μεταξύ κόμβων Elasticsearch στον ακόλουθο φάκελο:
/etc/elasticsearch/
χρειαζόμαστε τα αρχεία:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Εγκαθιστώ /etc/elasticsearch/elasticsearch.yml – αλλάξτε το όνομα των αρχείων με πιστοποιητικά σε αυτά που δημιουργούνται από εμάς:
opendistro_security.ssl.transport.pemcert_filepath: node-01.pem opendistro_security.ssl.transport.pemkey_filepath: node-01-key.pem opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem opendistro_security.ssl.transport.enforce_hostname_verification: false opendistro_security.ssl.http.enabled: true opendistro_security.ssl.http.pemcert_filepath: node-01.pem opendistro_security.ssl.http.pemkey_filepath: node-01-key.pem opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem opendistro_security.allow_unsafe_democertificates: false opendistro_security.allow_default_init_securityindex: true opendistro_security.authcz.admin_dn: − CN=admin,CN=example.com,O=Moscow Inc.,ST=Moscow,C=RU opendistro_security.nodes_dn: − CN=node-01.example.com,O=Moscow Inc.,ST=Moscow,C=RU
Αλλαγή κωδικών πρόσβασης για εσωτερικούς χρήστες
- Χρησιμοποιώντας την παρακάτω εντολή, εξάγουμε τον κατακερματισμό του κωδικού πρόσβασης στην κονσόλα:
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- Αλλάξτε τον κατακερματισμό στο αρχείο στο ληφθέν:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Ρύθμιση τείχους προστασίας στο λειτουργικό σύστημα
- Αφήστε το τείχος προστασίας να ξεκινήσει:
systemctl enable firewalld
- Ας το λανσάρουμε:
systemctl start firewalld
- Να επιτρέπεται η σύνδεση στο Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Φορτώστε ξανά τους κανόνες του τείχους προστασίας:
firewall-cmd --reload
- Εδώ είναι οι κανόνες εργασίας:
firewall-cmd --list-all
Εφαρμογή όλων των αλλαγών μας στο Elasticsearch
- Δημιουργήστε μια μεταβλητή με την πλήρη διαδρομή προς το φάκελο με την προσθήκη:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Ας εκτελέσουμε ένα σενάριο που θα ενημερώνει τους κωδικούς πρόσβασης και θα ελέγχει τις ρυθμίσεις:
${OD_SEC}/tools/securityadmin.sh -cd ${OD_SEC}/securityconfig/ -icl -nhnv -cacert /etc/elasticsearch/root-ca.pem -cert /etc/elasticsearch/admin.pem -key /etc/elasticsearch/admin-key.pem
- Ελέγξτε αν έχουν εφαρμοστεί οι αλλαγές:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
Αυτό είναι όλο, αυτές είναι οι ελάχιστες ρυθμίσεις που προστατεύουν το Elasticsearch από μη εξουσιοδοτημένες συνδέσεις.
Πηγή: www.habr.com