Redis is nuttig voor veel dingen, een daarvan is caching. Je kunt Redis ook gebruiken als een primaire gegevensopslag of zelfs als vervanging voor een database. Maar hoe voer je een veilige Redis-installatie uit? Redis installeren kan lastig zijn, en als je niet voorzichtig bent, kun je eindigen met veel fouten. Gelukkig heeft deze handleiding alles wat je nodig hebt.
In deze handleiding leer je hoe je Redis veilig kunt installeren op je Linux-systeem, samen met enkele tips om veelvoorkomende fouten te vermijden.
Lees verder en bespaar jezelf de hoofdpijn van het oplossen van fouten bij de installatie van Redis!
Vereisten
Deze handleiding zal een praktische demonstratie zijn. Als je wilt volgen, zorg dan dat je het volgende hebt:
- Een Ubuntu 20.04 LTS machine – Deze handleiding gebruikt Ubuntu 20.04 LTS, maar de instructies zijn vergelijkbaar voor de meeste Linux-distributies.
Redis installeren met de APT Package Manager
Er zijn verschillende manieren om Redis op Ubuntu te installeren, maar voor deze tutorial ga je met de APT-pakketbeheerder om Redis te installeren.
Redis is geschreven in C, dus je zou Redis handmatig moeten compileren vanuit de broncode. Verschillende afhankelijkheden moeten worden geïnstalleerd, en het bouwproces is niet helemaal waterdicht.
Het compileren van Redis uit de bron wordt niet aanbevolen, maar het voordeel is dat je je installatie kunt aanpassen als je dat wilt. Je downloadt de broncode en configureert deze handmatig.
Open je terminal en voer de apt update
-opdracht hieronder uit om ervoor te zorgen dat je de nieuwste pakketlijsten hebt.Voer nu de apt install
-opdracht hieronder uit om Redis op je machine te installeren.

De onderstaande opdracht gebruikt de apt
-pakketbeheerder om het pakket redis-server
te downloaden en te installeren vanuit de Ubuntu-repositories op je machine. De -y
-vlag vertelt apt
om prompts tijdens het installatieproces automatisch te accepteren.

Configuratie van het Redis.conf-bestand om Redis als een service uit te voeren
Je hebt zojuist Redis geïnstalleerd, maar het is nog niet klaar voor gebruik. Voordat je Redis kunt gaan gebruiken, moet je eerst het redis.conf-bestand configureren.
Het redis.conf-configuratiebestand is inbegrepen bij het Redis-pakket dat je hebt geïnstalleerd en wordt standaard opgeslagen in de /etc/redis/-directory. Dit bestand bevat alle configuratieopties voor Redis.
De .conf-bestandsextensie is logisch, omdat deze een conventioneel patroon volgt. Veel andere programma’s gebruiken dezelfde stijl. De Apache webserver gebruikt bijvoorbeeld de .conf-bestandsextensie voor zijn hoofdconfiguratiebestand.
1. Voer de volgende systemctl
-opdracht uit om de redis-server
-service te stoppen
. Het stoppen van de Redis-service tijdens de eerste kennismaking met Redis wordt aanbevolen.
2. Open vervolgens het /etc/redis/redis.conf-bestand in je favoriete teksteditor.
Zoek de supervised-richtlijn en stel deze in op systemd, zoals hieronder getoond, en sla de wijzigingen op. Hierdoor wordt het besturingssysteem verteld om Redis als service uit te voeren.

3. Voer nu het systemctl restart
commando hieronder uit om de Redis-service (redis.service
) te herstarten, aangezien de Redis-service nog niet op de hoogte is van de wijzigingen.
4. Voer tot slot het systemctl status
commando hieronder uit om te zien of Redis actief is.
Zoals je hieronder kunt zien, toont de output aan dat de Redis-service actief is.

Testen of de Redis-server correct functioneert
Je hebt geconfigureerd en geverifieerd dat de Redis-service actief is, maar dat betekent niet dat de Redis-server correct functioneert. Hoe test je of de Redis-server correct functioneert? Maak verbinding met de Redis-server en stuur commando’s om te zien of de server reageert.
1. Voer het redis-cli
commando hieronder uit om verbinding te maken met de Redis-server. redis-cli
is de command-line interface voor Redis, waarmee je commando’s naar de server kunt sturen en de status kunt inspecteren.
Hieronder kun je zien dat je je in de Redis-server prompt bevindt (127.0.0.1:6379>). Het redis-cli
commando probeert standaard verbinding te maken met een Redis-server op 127.0.0.1:6379
.

2. Voer vervolgens het ping
commando hieronder uit om te controleren of de Redis-server bereikbaar is.
Zoals je kunt zien, heeft de server PONG geretourneerd, wat aangeeft dat de Redis-server bereikbaar is en nu succesvol kan communiceren met de service.

Misschien ben je nog steeds sceptisch; voer de set
-opdracht hieronder uit. De set
-opdracht is een Redis-opdracht die een sleutel-waardepaar instelt in een database.
Zoals je kunt zien, retourneert de set-opdracht ” OK “, wat aangeeft dat de Redis-service correct werkt.

3. Voer de exit
-opdracht hieronder uit om de redis-cli
af te sluiten. Hiermee wordt de verbinding met de Redis-server gesloten.
Het binden van de Redis-server aan Localhost
Je hebt zojuist getest dat de Redis-server goed werkt, maar deze is mogelijk ook toegankelijk vanaf andere apparaten in je netwerk. Dit gedrag is ongewenst en je wilt meestal je Redis-server beschermen tegen vreemden.
Door de Redis-server aan localhost te binden, wordt ingesteld dat alleen de machine waarop je Redis hebt geïnstalleerd, toegang heeft tot de Redis-server.
1. Open het bestand /etc/redis/redis.conf in je teksteditor.
2. Zoek de regel die zegt bind 127.0.0.1 ::1
en haal het nummerteken (#
) aan het begin van de regel weg om de regel te activeren.

3. Voer nu de opdracht hieronder uit om de redis-server
-service opnieuw te starten.
4. Voer tot slot de volgende opdracht uit om te controleren of je Redis-server is gebonden aan localhost. De netstat -lnp
-opdracht geeft een lijst weer van alle actieve netwerkverbindingen, en het grep redis
-gedeelte filtert de uitvoer zodat alleen regels die ” redis
” bevatten, worden weergegeven.
-lnp
staat voor Local Name Protocol, een netwerkprotocol dat wordt gebruikt door UNIX-achtige systemen om hostnamen naar IP-adressen te vertalen.
Je kunt hieronder zien dat de Redis-server nu luistert op de localhost-interface alleen (127.0.0.1:6379
). Reflecterend op de wijziging in het configuratiebestand, zie je dat alleen de localhost-interface wordt vermeld onder je actieve internetverbindingen (tcp
).
Nu kunnen geen andere apparaten in je netwerk verbinding maken met je Redis-server.

Beveilig de verbinding met de Redis-server met een wachtwoord
Op dit moment is Redis niet ingesteld om gebruikers te verplichten zich te authenticeren met een wachtwoord. Iedereen die het IP-adres of de hostnaam van je Redis-server kent, kan er verbinding mee maken en de gegevens wijzigen.
Hoe bescherm je je Redis-server? Stel een wachtwoord in om gebruikers te vereisen bij het verbinden met je Redis-server.
1. Heropen het configuratiebestand redis.conf in je tekst-/code-editor.
2. Stel vervolgens een sterk wachtwoord in met het volgende:
- Zoek naar
requirepass foobared
onder de sectieSECURITY
- Verwijder het nummerteken (
#
) aan het begin van de regel - Vervang
foobared
door een sterk wachtwoord naar keuze en sla de wijzigingen op

3. Voer de volgende commando’s uit om de Redis-server opnieuw te starten en ermee te verbinden.
4. Voer nu het ping
-commando uit om te zien of je een reactie van de server krijgt.
Hieronder zie je een foutmelding die zegt NOAUTH Authenticatie vereist. Deze melding geeft aan dat je een authenticatie wachtwoord nodig hebt om toegang te krijgen tot je Redis-server op afstand.

5. Voer het onderstaande auth
commando uit gevolgd door je wachtwoord om je verbinding met je Redis-server te authenticeren.
Je krijgt een OK reactie wanneer de authenticatie succesvol is, zoals hieronder weergegeven.

6. Als laatste, voer het ping
commando opnieuw uit om te testen of je verbinding met je Redis-server is geauthenticeerd.
Je krijgt nu de PONG reactie, zoals hieronder weergegeven, nadat je verbinding is geauthenticeerd. Op dit punt heb je nu succesvol je Redis-server beschermd met een wachtwoord.

Het uitschakelen van gevaarlijke commando’s om je Redis-server te beschermen
Het instellen van een wachtwoord om de verbinding met je Redis-server te authenticeren betekent niet dat het 100% beschermd is. Standaard bevat Redis verschillende gevaarlijke commando’s waarmee gebruikers de gegevens in je database kunnen wijzigen.
Wanneer deze commando’s worden uitgevoerd door ongeautoriseerde gebruikers, stellen ze indringers in staat om de gegevens van je Redis-database te lezen, te wijzigen, te vernietigen en zelfs volledig te wissen.
Hieronder staat geen uitputtende lijst omdat je Redis-server mogelijk extra gevaarlijke commando’s heeft, maar in de meeste gevallen zijn dit de gevaarlijke commando’s:
Om je Redis-server verder te beveiligen, hernoem deze gevaarlijke commando’s in het redis.conf bestand:
1. Open het redis.conf bestand in je teksteditor en zoek naar de Commando hernoemen sectie.
Renameer commando’s naar een lege string om ze uit te schakelen volgens de onderstaande syntaxis. Vervang the-command
door het daadwerkelijke commando dat je wilt uitschakelen.
Bijvoorbeeld, schakel het CONFIG
commando uit door CONFIG
naar een lege string te hernoemen, zoals hieronder getoond, en sla de wijzigingen op. De dubbele aanhalingstekens (“”) geven een lege string aan die aanduidt dat een commando is uitgeschakeld.

CONFIG
command 2. Verlaat de teksteditor en voer het onderstaande commando uit om de Redis-server te herstarten.
3. Voer nu de volgende commando’s uit om verbinding te maken met je Redis-server.
4. Voer tot slot het config get
commando uit om te testen of het CONFIG
commando is uitgeschakeld.
Je krijgt een ERR onbekend commando config
reactie, zoals hieronder getoond, wat aangeeft dat het CONFIG
commando is uitgeschakeld.

CONFIG
command Als het config get requirepass
commando wordt uitgevoerd, vraagt het om het wachtwoord van je Redis-server om de verbinding met je Redis-server te authenticeren.
Je hebt nu met succes een gevaarlijk Redis-commando hernoemd om je Redis-server te beschermen. Schakel nu andere gevaarlijke commando’s uit in het redis.conf bestand.
Blokkeren van verbindingsverzoeken naar de Redis-server met een firewall
Een andere manier om je Redis-server te beveiligen, is het instellen van een firewall. Het instellen van een firewall vereist dat je alleen de vereiste poort toestaat voor elk van de services die op je server draaien.
Bijvoorbeeld, als je Redis op je server hebt draaien op poort 6379
, dan is die poort het enige dat je hoeft te openen. Als je toegang wilt toestaan vanaf een specifiek IP-adres of een reeks adressen, kun je die adressen toevoegen aan de firewall-regels.
Om een firewall in te stellen, installeer je eerst een configuratietool voor de firewall. Dit voorbeeld maakt gebruik van UFW, een veelgebruikte firewall-configuratietool op Linux. Maar je kunt ook een andere tool gebruiken, zoals iptables, om een firewall in te stellen.
1. Voer de volgende opdracht uit om UFW op je machine te installeren.
2. Voer vervolgens de onderstaande opdracht uit om UFW in te schakelen.
Typ ‘Y’ in wanneer je de prompt hieronder ziet om door te gaan met het uitvoeren van de opdracht.

3. Voer de ufw
-opdracht hieronder uit om een regel toe te voegen die verkeer op poort 6379
toestaat voor je Redis-server. Vervang het IP-adres 11.22.33.44
door de IP-adressen van je beoogde gebruikers.

6379
4. Voer tot slot de onderstaande opdracht uit om te controleren of je de firewall-regel succesvol hebt toegevoegd. De opdracht controleert de status
van je firewall.
Je kunt in de uitvoer hieronder zien dat de firewall actief is en de regel heeft om verkeer op poort 6379
voor Redis toe te staan vanaf het IP-adres 11.22.33.44
.

Nu kunnen alle gebruikers met het IP-adres 11.22.33.44
verbinding maken met Redis via poort 6379
en moeten ze zich authenticeren met een wachtwoord. Je kunt op een vergelijkbare manier extra poorten toevoegen voor andere services.
Conclusie
Doorheen deze tutorial heb je geleerd hoe je je Redis-server kunt installeren en beveiligen door gevaarlijke commando’s naar lege strings te hernoemen en een firewall in te stellen.
Met deze nieuwe kennis kun je volop genieten van de voordelen van Redis zonder je zorgen te maken over het blootstellen van je server aan onnodige risico’s.
Wil je meer leren? Waarom begin je niet met het beveiligen van een Redis-server in Kubernetes?