Terug naar blog

Hoe Redis te installeren en te beveiligen op Ubuntu 18.04

Hoe Redis te installeren en te beveiligen op Ubuntu 18.04

Redis is een krachtige in-memory key-value store die kan worden gebruikt als databaseserver, cache en message broker. Het staat algemeen bekend om zijn snelle prestaties, flexibiliteit en ondersteuning voor een breed scala aan talen. Het is gratis en open-source software die is geschreven in de programmeertaal C. In deze handleiding leest u hoe u Redis installeert en beveiligt op Ubuntu 18.04.

Vereisten

Om deze handleiding te volgen, moet u vooraf een aantal dingen voorbereiden. U moet beschikken over een Ubuntu 18.04-server, die u eenvoudig kunt installeren door onze handleiding te volgen. Daarnaast moet u een niet-rootgebruiker met sudo-rechten hebben en een basis-firewall hebben geconfigureerd. Dit kunt u instellen door onze handleidingen te volgen over het configureren van het Linux sudoers-bestand en het instellen van een UFW op een Ubuntu- en Debian-cloudserver.

Laten we nu beginnen!

Redis installeren

Redis is direct beschikbaar via de officiële Ubuntu repo. Dit is de eenvoudigste manier om het te installeren en te configureren. We raden aan dit pad te volgen, tenzij er specifieke redenen zijn om dit niet te doen. Omdat de broncode van Redis gratis beschikbaar is, is het ook mogelijk om Redis vanuit de broncode te bouwen. We raden dit echter niet aan omdat het lastiger te beheren en bij te werken is.

Redis installeren vanuit de Ubuntu-repo

Werk eerst de lokale APT-pakketcache bij:

Installeer vervolgens Redis met het volgende commando:

Redis installeren vanuit de broncode

Ubuntu wordt standaard niet geleverd met de bouwtools en benodigde bibliotheken. Het volgende commando installeert alle benodigde tools voor het bouwen van Redis:

Er zijn twee extra afhankelijkheden voor het bouwen van Redis. Deze afhankelijkheden zijn nodig om Redis te compileren met extra functies, bijvoorbeeld TLS-ondersteuning, systemd-integratie, enz. Om Redis te compileren met TLS-ondersteuning, installeert u het pakket “libssl-dev”. Om Redis te compileren voor systemd-ondersteuning, installeert u het pakket “libsystemd-dev”:

De broncode van Redis is beschikbaar op GitHub. Bekijk de Redis GitHub-pagina. Haal vervolgens de broncode op:

Redis GitHub page

Wijzig de huidige actieve map naar de map met de Redis-broncode:

Voer daarna de make-tool uit om het compileren te starten. Het compileert Redis zonder extra elementen:

Om TLS-ondersteuning in te schakelen (ervan uitgaande dat “libssl-dev” is geïnstalleerd), gebruikt u in plaats daarvan het volgende commando:

Om ondersteuning voor systemd in te schakelen (ervan uitgaande dat “libsystemd-dev” is geïnstalleerd), gebruikt u het volgende commando:

Test vervolgens of de compilatie succesvol was. Houd er rekening mee dat er mogelijk een extra pakket “tcl-dev” en bijbehorende afhankelijkheden nodig zijn om de test uit te voeren:

Installeer ten slotte Redis door het volgende commando uit te voeren:

Als Redis is gebouwd met TLS, moet het uitvoeren van de server op de volgende manier gebeuren:

Redis configureren

Zodra de installatie is voltooid, is het tijd om Redis te configureren. Open het Redis-configuratiebestand in een teksteditor en scrol omlaag naar de sectie “supervised”:

secure redis 1

Wijzig de waarde van “supervised” in “systemd”. Dit zorgt ervoor dat de Redis-service wordt beheerd door systemen. Om de wijzigingen door te voeren, start u de Redis-service opnieuw op:

Redis testen

Het is altijd een goed idee om te testen of Redis correct functioneert voordat u het verder in gebruik neemt. Hier zijn een aantal manieren om het gedrag van Redis te testen. De eerste stap is om te controleren of de Redis-service actief is:

Hier draait Redis al. Standaard start de Redis-service op bij het opstarten. Als de Redis-service handmatig moet worden uitgevoerd, schakel deze dan uit:

De volgende test is om te controleren met behulp van de Redis-console. Start de Redis command-line client:

Voer het “ping”-commando uit:

De uitvoer bevestigt dat de verbinding met de server nog actief is. De volgende test is om te zien of het instellen van sleutels is toegestaan. Maak een “temp”-sleutel aan met de waarde “hello world”:

Haal de waarde op met het “get”-commando:

Als tot nu toe alles goed werkt, zou Redis de waarde van de sleutel zonder problemen moeten retourneren. Sluit de Redis command-line client:

Redis command-line

De laatste test is om te controleren of Redis gegevens kan behouden, zelfs als het wordt gestopt of opnieuw opgestart. Start de Redis-service opnieuw op:

Als u een foutmelding krijgt tijdens het uitvoeren van het bovenstaande commando, gebruik dan het commando “systemctl enable redis-server”:

Start de Redis command-line client en haal de waarde op van de “temp”-sleutel die we eerder hebben aangemaakt:

Hiermee is de Redis-test voltooid. Uw Redis-server is nu klaar om te worden gebruikt voor het gewenste doel.

Redis beveiligen

Op dit moment is Redis volledig operationeel. Sommige van de standaardconfiguraties bieden echter niet de beste beveiliging. Als deze niet worden bijgewerkt, kan een kwaadwillende partij hiervan misbruik maken om toegang te krijgen tot de server en de bijbehorende gegevens. In dit gedeelte wordt getoond hoe u deze kwetsbaarheden kunt beperken. Hoewel deze stappen optioneel zijn, wordt het ten zeerste aanbevolen om ze te volgen om de systeembeveiliging te versterken.

Koppelen aan localhost

Standaard is Redis alleen toegankelijk vanaf localhost. Als Redis echter op een externe server is geconfigureerd, moet de configuratie worden bijgewerkt om verbindingen van overal toe te staan. Dit is echter mogelijk niet zo veilig als het koppelen aan localhost. Om Redis opnieuw aan localhost te koppelen, opent u het Redis-configuratiebestand in een teksteditor:

Scrol omlaag en zoek de volgende regel. Zorg ervoor dat deze niet is uitgecommentarieerd:

Binding to localhost

Sla het bestand op en sluit het. Start vervolgens de Redis-service opnieuw op om ervoor te zorgen dat de wijziging onmiddellijk van kracht wordt:

Controleer of de wijziging is geslaagd:

Als u de foutmelding ‘netstat: command not found’ krijgt, gebruik dan het commando “sudo apt-get install net-tools” om net-tools te installeren. De uitvoer bevestigt dat “redis-server” met succes is gekoppeld aan localhost (127.0.0.1), wat de onlangs aangebrachte wijziging weerspiegelt. Als er een ander IP-adres staat (bijvoorbeeld 0.0.0.0), controleer dan het configuratiebestand opnieuw en start de Redis-server opnieuw op.

Redis-wachtwoord configureren

Het configureren van een wachtwoord maakt het gebruik van een ingebouwde beveiligingsfunctie van Redis mogelijk – het “AUTH”-commando. Dit vereist dat clients zich authenticeren om toegang te krijgen tot de database. Standaard is er geen wachtwoord geconfigureerd voor Redis. Het wachtwoord moet worden gedeclareerd in het Redis-configuratiebestand. Open het configuratiebestand in een teksteditor:

Scrol vervolgens omlaag naar de volgende regel en verwijder het commentaarteken:

Na het verwijderen van het commentaarteken is “foobared” het standaardwachtwoord. Wijzig dit in het wachtwoord van uw keuze. Als het om Redis gaat, is de sterkte van het wachtwoord een belangrijke factor van zorg. Omdat Redis een zeer snelle server is, is deze potentieel gemakkelijker te misbruiken met behulp van brute-force-aanvallen. Dit is de reden waarom het configuratiebestand direct de volgende waarschuwing bevat. Hier is een snel voorbeeld van het genereren van een zeer sterk willekeurig wachtwoord. We gebruiken het OpenSSL-commando om een willekeurige tekenreeks te genereren:

Herstart na het configureren van een nieuw wachtwoord de Redis-service om de wijzigingen door te voeren:

Het is tijd om te testen of het wachtwoord succesvol is toegepast. Start de Redis command-line console:

Probeer vervolgens een nieuwe sleutel in te stellen:

Redis zal het verzoek weigeren omdat er geen authenticatie is voor de actie. Om een actie op de server uit te voeren, moet de gebruiker eerst geautoriseerd zijn. Autoriseer de gebruiker met het volgende commando:

Als het wachtwoord juist was, zal Redis de actie bevestigen. Nu zal Redis toegang verlenen tot zijn serverfunctionaliteiten:

Voor nu is ons werk met de Redis-console klaar. Je kunt de console sluiten:

Gevaarlijke commando's hernoemen

Redis maakt het mogelijk om bepaalde commando's die als gevaarlijk worden beschouwd te hernoemen of volledig uit te schakelen. Dit is een andere belangrijke ingebouwde beveiligingsfunctie van Redis. Waarom worden commando's als gevaarlijk beschouwd? Als ze door een onbevoegde gebruiker worden uitgevoerd, kunnen deze commando's gegevens op de server herconfigureren, vernietigen of wissen. Het is een gangbare praktijk om een aantal gevaarlijke Redis-commando's uit te schakelen of te hernoemen. Let op dat de beveiligingsdreiging van een commando afhangt van de situatie. Sommige van de volgende commando's kunnen bijvoorbeeld regelmatig nodig zijn. In dergelijke gevallen is het uitschakelen ervan niet aanbevolen. In zo'n situatie kan het hernoemen van het commando voordeliger zijn. Hier is een snelle lijst van de commando's die als gevaarlijk worden beschouwd. Dit is een goed startpunt voor het verbeteren van de beveiliging van de Redis-server:

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

Om een commando te hernoemen of uit te schakelen, moet dit worden gedeclareerd in het Redis-configuratiebestand. Open het Redis-configuratiebestand en voeg de volgende regels toe. Hier wordt “rename-command” gebruikt om de commando's te hernoemen naar een lege string. Voeg zoveel regels toe als nodig is:

Op dezelfde manier is het ook mogelijk om de commando's naar een andere naam te hernoemen. In bepaalde situaties kan dit meer flexibiliteit bieden:

rename-command

Sla het bestand op en sluit de editor af. Herstart de Redis-service om de wijzigingen door te voeren:

Controleer de wijzigingen. Start vervolgens de Redis-console en verifieer de toegang:

Laten we aannemen dat het “CONFIG”-commando was uitgeschakeld of hernoemd. Probeer het volgende “CONFIG”-commando te gebruiken. Dit zal mislukken:

Als het commando was uitgeschakeld, kan het niet worden geopend totdat het weer is ingeschakeld. Als het echter is hernoemd, gebruik dan de nieuwe alias:

command_4

Conclusie

Deze handleiding laat zien hoe je een Redis-installatie installeert, beveiligt, configureert en valideert. Het laat ook zien hoe je de ingebouwde beveiligingsfuncties van Redis kunt gebruiken om deze minder kwetsbaar te maken voor aanvallen. Als er echter al iemand is ingelogd op de server, is het vrij eenvoudig om de Redis-specifieke beveiligingsfuncties te omzeilen. Daarom is het hebben van een firewall om de toegang tot de Redis-server te beschermen cruciaal.

Veel computerplezier!

author

Hark Labs

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.