Επιστροφή στο blog

Πώς να εγκαταστήσετε και να ασφαλίσετε το Redis στο Ubuntu 18.04

Πώς να εγκαταστήσετε και να ασφαλίσετε το Redis στο Ubuntu 18.04

Redis είναι μια ισχυρή βάση δεδομένων κλειδιού-τιμής στη μνήμη (in-memory key-value store) που μπορεί να χρησιμοποιηθεί ως διακομιστής βάσης δεδομένων, προσωρινή μνήμη (cache) και μεσολαβητής μηνυμάτων (message broker). Είναι ευρέως γνωστό για τη γρήγορη απόδοσή του, την ευελιξία του και την υποστήριξη μιας μεγάλης ποικιλίας γλωσσών. Είναι δωρεάν λογισμικό ανοιχτού κώδικα γραμμένο στη γλώσσα προγραμματισμού C. Σε αυτόν τον οδηγό, δείτε πώς να εγκαταστήσετε και να ασφαλίσετε το Redis στο Ubuntu 18.04.

Προαπαιτούμενα

Για να ακολουθήσετε αυτόν τον οδηγό, θα πρέπει να προετοιμάσετε μερικά πράγματα εκ των προτέρων. Πρέπει να έχετε έναν διακομιστή Ubuntu 18.04, τον οποίο μπορείτε εύκολα να εγκαταστήσετε ακολουθώντας τον οδηγό μας. Επιπλέον, πρέπει να έχετε έναν μη-root χρήστη με δικαιώματα sudo και ένα βασικό τείχος προστασίας (firewall) ρυθμισμένο. Μπορείτε να το ρυθμίσετε αυτό ακολουθώντας τους οδηγούς μας σχετικά με τη διαμόρφωση του αρχείου Linux sudoers και ρύθμιση ενός UFW σε διακομιστή cloud Ubuntu και Debian.

Τώρα, ας ξεκινήσουμε!

Εγκατάσταση του Redis

Το Redis είναι άμεσα διαθέσιμο από το επίσημο αποθετήριο του Ubuntu repo. Αυτός είναι ο απλούστερος τρόπος εγκατάστασης και ρύθμισής του. Συνιστούμε να ακολουθήσετε αυτήν τη διαδρομή, εκτός εάν υπάρχουν συγκεκριμένοι λόγοι για το αντίθετο. Δεδομένου ότι ο πηγαίος κώδικας του Redis διατίθεται δωρεάν, είναι επίσης δυνατή η μεταγλώττιση του Redis από τον πηγαίο κώδικα. Ωστόσο, δεν το συνιστούμε επειδή είναι πιο δύσκολο να το διαχειριστείτε και να το ενημερώσετε.

Εγκατάσταση του Redis από το αποθετήριο του Ubuntu

Αρχικά, ενημερώστε την τοπική προσωρινή μνήμη πακέτων APT:

Στη συνέχεια, εγκαταστήστε το Redis με την ακόλουθη εντολή:

Εγκατάσταση του Redis από τον πηγαίο κώδικα

Το Ubuntu δεν συνοδεύεται από τα εργαλεία μεταγλώττισης και τις απαραίτητες βιβλιοθήκες από προεπιλογή. Η ακόλουθη εντολή θα εγκαταστήσει όλα τα απαραίτητα εργαλεία για τη μεταγλώττιση του Redis:

Υπάρχουν δύο επιπλέον εξαρτήσεις για τη μεταγλώττιση του Redis. Αυτές οι εξαρτήσεις είναι απαραίτητες για τη μεταγλώττιση του Redis με πρόσθετες δυνατότητες, για παράδειγμα, υποστήριξη TLS, ενσωμάτωση systemd κ.λπ. Για να μεταγλωττίσετε το Redis με υποστήριξη TLS, εγκαταστήστε το πακέτο «libssl-dev». Για να μεταγλωττίσετε το Redis για υποστήριξη systemd, εγκαταστήστε το πακέτο «libsystemd-dev»:

Ο πηγαίος κώδικας του Redis είναι διαθέσιμος στο GitHub. Δείτε τη σελίδα του Redis στο GitHub. Στη συνέχεια, λάβετε τον πηγαίο κώδικα:

Redis GitHub page

Αλλάξτε τον τρέχοντα ενεργό κατάλογο στον κατάλογο του πηγαίου κώδικα του Redis:

Μετά από αυτό, εκτελέστε το εργαλείο make για να ξεκινήσει η μεταγλώττιση. Θα μεταγλωττίσει το Redis χωρίς πρόσθετα στοιχεία:

Για να ενεργοποιήσετε την υποστήριξη TLS (υποθέτοντας ότι το «libssl-dev» είναι εγκατεστημένο), χρησιμοποιήστε αντ' αυτού την ακόλουθη εντολή:

Για να ενεργοποιήσετε την υποστήριξη για το systemd (υποθέτοντας ότι το «libsystemd-dev» είναι εγκατεστημένο), χρησιμοποιήστε την ακόλουθη εντολή:

Στη συνέχεια, ελέγξτε εάν η μεταγλώττιση ήταν επιτυχής. Σημειώστε ότι μπορεί να απαιτείται ένα επιπλέον πακέτο «tcl-dev» και οι σχετικές εξαρτήσεις για την εκτέλεση της δοκιμής:

Τέλος, εγκαταστήστε το Redis εκτελώντας την ακόλουθη εντολή:

Εάν το Redis δημιουργήθηκε χρησιμοποιώντας TLS, τότε η εκτέλεση του διακομιστή θα πρέπει να γίνει με τον ακόλουθο τρόπο:

Ρύθμιση του Redis

Μόλις ολοκληρωθεί η εγκατάσταση, ήρθε η ώρα να ρυθμίσετε το Redis. Ανοίξτε το αρχείο ρυθμίσεων του Redis σε έναν επεξεργαστή κειμένου και μετακινηθείτε προς τα κάτω στην ενότητα «supervised»:

secure redis 1

Αλλάξτε την τιμή του «supervised» σε «systemd». Αυτό θα διασφαλίσει ότι η υπηρεσία Redis θα διαχειρίζεται από το systemd. Για να εφαρμοστούν οι αλλαγές, επανεκκινήστε την υπηρεσία Redis:

Δοκιμή του Redis

Είναι πάντα καλή ιδέα να δοκιμάζετε εάν το Redis λειτουργεί σωστά πριν το χρησιμοποιήσετε περαιτέρω. Ακολουθούν μερικοί τρόποι για να δοκιμάσετε τη συμπεριφορά του Redis. Το πρώτο βήμα είναι να ελέγξετε εάν η υπηρεσία Redis είναι ενεργή και εκτελείται:

Εδώ, το Redis εκτελείται ήδη. Από προεπιλογή, η υπηρεσία Redis θα ξεκινά κατά την εκκίνηση. Εάν η υπηρεσία Redis πρόκειται να εκτελείται χειροκίνητα, τότε απενεργοποιήστε την:

Η επόμενη δοκιμή είναι ο έλεγχος με χρήση της κονσόλας Redis. Εκκινήστε τον πελάτη γραμμής εντολών του Redis:

Εκτελέστε την εντολή «ping»:

Το αποτέλεσμα επιβεβαιώνει ότι η σύνδεση με τον διακομιστή είναι ακόμα ενεργή. Η επόμενη δοκιμή είναι να δούμε αν επιτρέπει τον ορισμό κλειδιών. Δημιουργήστε ένα κλειδί «temp» με την τιμή «hello world»:

Ανακτήστε την τιμή χρησιμοποιώντας την εντολή «get»:

Εάν όλα λειτουργούν καλά μέχρι στιγμής, το Redis θα πρέπει να επιστρέψει την τιμή του κλειδιού χωρίς κανένα πρόβλημα. Κλείστε τον πελάτη γραμμής εντολών του Redis:

Redis command-line

Η τελική δοκιμή είναι να ελέγξετε αν το Redis μπορεί να διατηρήσει τα δεδομένα ακόμα και αν σταματήσει ή επανεκκινηθεί. Επανεκκινήστε την υπηρεσία Redis:

Εάν λάβετε σφάλμα κατά την εκτέλεση της παραπάνω εντολής, τότε χρησιμοποιήστε την εντολή “systemctl enable redis-server”:

Εκκινήστε τον πελάτη γραμμής εντολών του Redis και ανακτήστε την τιμή του κλειδιού «temp» που δημιουργήσαμε προηγουμένως:

Αυτό ολοκληρώνει τη δοκιμή του Redis. Ο διακομιστής Redis είναι πλέον έτοιμος να χρησιμοποιηθεί για τον επιθυμητό σκοπό.

Ασφάλιση του Redis

Σε αυτό το σημείο, το Redis είναι πλήρως λειτουργικό. Ωστόσο, ορισμένες από τις προεπιλεγμένες ρυθμίσεις του δεν προσφέρουν την καλύτερη ασφάλεια. Εάν δεν ενημερωθούν, οποιοσδήποτε κακόβουλος χρήστης μπορεί να εκμεταλλευτεί την ευκαιρία για να αποκτήσει πρόσβαση στον διακομιστή και στα δεδομένα του. Αυτή η ενότητα θα δείξει πώς να μετριάσετε αυτές τις ευπάθειες. Αν και αυτά τα βήματα είναι προαιρετικά, συνιστάται ανεπιφύλακτα να τα ακολουθήσετε για να ενισχύσετε την ασφάλεια του συστήματος.

Σύνδεση στο localhost

Από προεπιλογή, το Redis είναι προσβάσιμο μόνο από το localhost. Ωστόσο, εάν το Redis έχει ρυθμιστεί σε έναν απομακρυσμένο διακομιστή, τότε η ρύθμιση παραμέτρων πρέπει να ενημερωθεί ώστε να επιτρέπει τη σύνδεση από οπουδήποτε. Ωστόσο, αυτό ενδέχεται να μην είναι τόσο ασφαλές όσο η σύνδεση στο localhost. Για να συνδέσετε ξανά το Redis στο localhost, ανοίξτε το αρχείο ρυθμίσεων του Redis σε έναν επεξεργαστή κειμένου:

Κυλήστε προς τα κάτω και βρείτε το ακόλουθο. Βεβαιωθείτε ότι δεν είναι σε σχόλιο:

Binding to localhost

Αποθηκεύστε και κλείστε το αρχείο. Στη συνέχεια, επανεκκινήστε την υπηρεσία Redis για να βεβαιωθείτε ότι η αλλαγή θα τεθεί σε ισχύ αμέσως:

Βεβαιωθείτε ότι η αλλαγή ήταν επιτυχής:

Εάν λάβετε σφάλμα όπως ‘netstat: command not found’, τότε χρησιμοποιήστε την εντολή για να εγκαταστήσετε το net-tools “sudo apt-get install net-tools”. Το αποτέλεσμα επαληθεύει ότι το «redis-server» έχει συνδεθεί με επιτυχία στο localhost (127.0.0.1), αντικατοπτρίζοντας την αλλαγή που έγινε πρόσφατα. Εάν υπάρχει οποιαδήποτε άλλη διεύθυνση IP (για παράδειγμα, 0.0.0.0), τότε ελέγξτε ξανά το αρχείο ρυθμίσεων και επανεκκινήστε ξανά τον διακομιστή Redis.

Ρύθμιση κωδικού πρόσβασης Redis

Η ρύθμιση ενός κωδικού πρόσβασης επιτρέπει τη χρήση μιας ενσωματωμένης δυνατότητας ασφαλείας του Redis – της εντολής «AUTH». Απαιτεί από τους πελάτες να ταυτοποιούνται για να αποκτήσουν πρόσβαση στη βάση δεδομένων. Από προεπιλογή, το Redis δεν έχει ρυθμισμένο κωδικό πρόσβασης. Ο κωδικός πρόσβασης πρέπει να δηλωθεί στο αρχείο ρυθμίσεων του Redis. Ανοίξτε το αρχείο ρυθμίσεων σε έναν επεξεργαστή κειμένου:

Στη συνέχεια, κυλήστε προς τα κάτω στην ακόλουθη γραμμή και αφαιρέστε το σχόλιο:

Μετά την αφαίρεση του σχολίου, το «foobared» θα είναι ο προεπιλεγμένος κωδικός πρόσβασης. Αλλάξτε τον στον κωδικό πρόσβασης της επιλογής σας. Όσον αφορά το Redis, η ισχύς του κωδικού πρόσβασης είναι ένας σημαντικός παράγοντας ανησυχίας. Καθώς το Redis είναι ένας διακομιστής γρήγορης απόδοσης, είναι δυνητικά ευκολότερο να γίνει αντικείμενο εκμετάλλευσης με επιθέσεις brute-force. Αυτός είναι ο λόγος για τον οποίο το αρχείο ρυθμίσεων περιέχει απευθείας την ακόλουθη προειδοποίηση. Ακολουθεί ένα γρήγορο παράδειγμα δημιουργίας ενός πολύ ισχυρού τυχαίου κωδικού πρόσβασης. Θα χρησιμοποιήσουμε την εντολή OpenSSL για να δημιουργήσουμε μια τυχαία συμβολοσειρά:

Μετά τη διαμόρφωση ενός νέου κωδικού πρόσβασης, επανεκκινήστε την υπηρεσία Redis για να τεθούν σε ισχύ οι αλλαγές:

Ήρθε η ώρα να δοκιμάσετε εάν ο κωδικός πρόσβασης εφαρμόστηκε με επιτυχία. Εκκινήστε την κονσόλα γραμμής εντολών του Redis:

Στη συνέχεια, προσπαθήστε να ορίσετε ένα νέο κλειδί:

Το Redis θα απορρίψει το αίτημα καθώς δεν υπάρχει έλεγχος ταυτότητας για την ενέργεια. Για να εκτελέσει οποιαδήποτε ενέργεια στον διακομιστή, ο χρήστης πρέπει πρώτα να εξουσιοδοτηθεί. Εξουσιοδοτήστε τον χρήστη χρησιμοποιώντας την ακόλουθη εντολή:

Εάν ο κωδικός πρόσβασης ήταν σωστός, το Redis θα επιβεβαιώσει την ενέργεια. Τώρα, το Redis θα επιτρέψει την πρόσβαση στις λειτουργίες του διακομιστή του:

Προς το παρόν, η εργασία μας με την κονσόλα Redis έχει ολοκληρωθεί. Μπορείτε να κλείσετε την κονσόλα:

Μετονομασία επικίνδυνων εντολών

Το Redis επιτρέπει τη μετονομασία ή την πλήρη απενεργοποίηση ορισμένων εντολών που θεωρούνται επικίνδυνες. Αυτό είναι ένα άλλο σημαντικό ενσωματωμένο χαρακτηριστικό ασφαλείας του Redis. Γιατί οι εντολές θεωρούνται επικίνδυνες; Εάν εκτελεστούν από μη εξουσιοδοτημένο χρήστη, αυτές οι εντολές μπορούν να αναδιαμορφώσουν, να καταστρέψουν ή να διαγράψουν δεδομένα στον διακομιστή. Είναι κοινή πρακτική η απενεργοποίηση/μετονομασία μιας σειράς επικίνδυνων εντολών του Redis. Σημειώστε ότι η απειλή ασφαλείας μιας εντολής εξαρτάται από την κατάσταση. Για παράδειγμα, ορισμένες από τις ακόλουθες εντολές ενδέχεται να είναι απαραίτητες σε τακτική βάση. Σε τέτοιες περιπτώσεις, η απενεργοποίησή τους δεν συνιστάται. Σε μια τέτοια κατάσταση, η μετονομασία της εντολής μπορεί να αποδειχθεί πιο επωφελής. Ακολουθεί μια γρήγορη λίστα με τις εντολές που θεωρούνται επικίνδυνες. Αυτό είναι ένα καλό σημείο εκκίνησης για την ενίσχυση της ασφάλειας του διακομιστή Redis:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM
  • RENAME
  • DEBUG

Για να μετονομαστεί ή να απενεργοποιηθεί μια εντολή, πρέπει να δηλωθεί στο αρχείο ρυθμίσεων του Redis. Ανοίξτε το αρχείο ρυθμίσεων του Redis και προσθέστε τις ακόλουθες γραμμές. Εδώ, το “rename-command” χρησιμοποιείται για τη μετονομασία των εντολών σε μια κενή συμβολοσειρά. Προσθέστε όσες καταχωρίσεις είναι απαραίτητο:

Ομοίως, είναι επίσης δυνατή η μετονομασία των εντολών σε διαφορετικό όνομα. Σε ορισμένες περιπτώσεις, αυτό μπορεί να προσφέρει μεγαλύτερη ευελιξία:

rename-command

Αποθηκεύστε το αρχείο και βγείτε από τον επεξεργαστή κειμένου. Για να τεθούν σε ισχύ οι αλλαγές, επανεκκινήστε την υπηρεσία Redis:

Επαληθεύστε τις αλλαγές. Στη συνέχεια, εκκινήστε την κονσόλα Redis και πιστοποιήστε την πρόσβαση:

Ας υποθέσουμε ότι η εντολή “CONFIG” απενεργοποιήθηκε ή μετονομάστηκε. Δοκιμάστε να χρησιμοποιήσετε την ακόλουθη εντολή “CONFIG”. Θα αποτύχει:

Εάν η εντολή απενεργοποιήθηκε, τότε δεν είναι δυνατή η πρόσβαση σε αυτήν μέχρι να ενεργοποιηθεί ξανά. Ωστόσο, εάν μετονομάστηκε, τότε χρησιμοποιήστε το νέο ψευδώνυμο:

command_4

Συμπέρασμα

Αυτός ο οδηγός δείχνει πώς να εγκαταστήσετε, να ασφαλίσετε, να διαμορφώσετε και να επικυρώσετε μια εγκατάσταση Redis. Δείχνει επίσης πώς να χρησιμοποιήσετε τα ενσωματωμένα χαρακτηριστικά ασφαλείας του Redis για να το κάνετε λιγότερο ευάλωτο σε επιθέσεις. Ωστόσο, εάν κάποιος είναι ήδη συνδεδεμένος στον διακομιστή, είναι αρκετά εύκολο να παρακάμψει τα ειδικά χαρακτηριστικά ασφαλείας του Redis. Αυτός είναι ο λόγος για τον οποίο η ύπαρξη ενός τείχους προστασίας για την προστασία της πρόσβασης στον διακομιστή Redis είναι κρίσιμης σημασίας.

Καλή συνέχεια!

author

Hark Labs

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.