Hoe voer je een beveiligde installatie van Redis uit op Linux

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.
  • Root privileges of een niet-root gebruiker met sudo privileges

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.

sudo apt update -y
Updating the Linux system

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.

sudo apt install redis-server -y
Installing Redis on your machine

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.

sudo systemctl stop redis.service

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.

Setting up the systemd directive

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.

sudo systemctl restart redis.service

4. Voer tot slot het systemctl status commando hieronder uit om te zien of Redis actief is.

sudo systemctl status redis.service

Zoals je hieronder kunt zien, toont de output aan dat de Redis-service actief is.

Checking if Redis Service is Running

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.

redis-cli

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.

Connecting to the Redis Server

2. Voer vervolgens het ping commando hieronder uit om te controleren of de Redis-server bereikbaar is.

ping

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.

Pinging the Redis server

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.

set test "This is a test"

Zoals je kunt zien, retourneert de set-opdracht ” OK “, wat aangeeft dat de Redis-service correct werkt.

Testing the Redis server

3. Voer de exit-opdracht hieronder uit om de redis-cli af te sluiten. Hiermee wordt de verbinding met de Redis-server gesloten.

exit

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.

Uncommenting the bind 127.0.0.1 ::1 line

3. Voer nu de opdracht hieronder uit om de redis-server-service opnieuw te starten.

sudo systemctl restart redis-server

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.

sudo netstat -lnp | grep redis

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.

Listing all active network connections

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 sectie SECURITY
  • Verwijder het nummerteken (#) aan het begin van de regel
  • Vervang foobared door een sterk wachtwoord naar keuze en sla de wijzigingen op
Providing a secure password

3. Voer de volgende commando’s uit om de Redis-server opnieuw te starten en ermee te verbinden.

sudo systemctl restart redis-server
redis-cli

4. Voer nu het ping-commando uit om te zien of je een reactie van de server krijgt.

ping

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.

Testing connection with the server

5. Voer het onderstaande auth commando uit gevolgd door je wachtwoord om je verbinding met je Redis-server te authenticeren.

auth Qae9p_fY:YjdtJ7k

Je krijgt een OK reactie wanneer de authenticatie succesvol is, zoals hieronder weergegeven.

Authenticating Redis Server Connection

6. Als laatste, voer het ping commando opnieuw uit om te testen of je verbinding met je Redis-server is geauthenticeerd.

ping

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.

Pinging the Redis server

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:

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

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.

rename-command the-command ""

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.

Renaming the CONFIG command

2. Verlaat de teksteditor en voer het onderstaande commando uit om de Redis-server te herstarten.

sudo systemctl restart redis-server

3. Voer nu de volgende commando’s uit om verbinding te maken met je Redis-server.

redis-cli
auth Qae9p_fY:YjdtJ7k

4. Voer tot slot het config get commando uit om te testen of het CONFIG commando is uitgeschakeld.

config get requirepass

Je krijgt een ERR onbekend commando config reactie, zoals hieronder getoond, wat aangeeft dat het CONFIG commando is uitgeschakeld.

Checking the 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.

sudo apt install ufw -y

2. Voer vervolgens de onderstaande opdracht uit om UFW in te schakelen.

sudo ufw enable

Typ ‘Y’ in wanneer je de prompt hieronder ziet om door te gaan met het uitvoeren van de opdracht.

Enabling UFW

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.

sudo ufw allow from 11.22.33.44 to any port 6379
Adding a firewall rule to allow traffic on port 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.

sudo ufw status

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.

Checking the UFW rules

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?

Source:
https://adamtheautomator.com/redis-install/