Installeer en beveilig Redis Server op Debian 10

Redis ook bekend als “Remote Dictionary Server” is een open-source en in-memory databank die gebruikt kan worden als databank, cache en berichtenmakelaar. Redis ondersteunt verschillende gegevensstructuren, zoals strings, hashes, lijsten, verzamelingen en nog veel meer. Redis is geschreven in de programmeertaal C en werkt in de meeste POSIX systemen zoals Linux, Free BSD en OS X. Redis is en in staat om duizenden commando’s per seconde uit te voeren. Redis heeft een rijke verzameling functies waaronder, Replicatie, Automatische failover, Lua scripting, LRU evictie van sleutels, Transacties en nog veel meer.

In deze handleiding leren we hoe je Redis op een Debian 10 server kunt installeren en beveiligen.

Vereisten

  • Een server die Debian 10 draait.
  • Een root wachtwoord is ingesteld op je server.

Aan de slag

Voor je begint moet je je systeem bijwerken met de nieuwste versie. Je kunt dit doen door het volgende commando uit te voeren:

apt-get update -y
apt-get upgrade -y

Zodra je server bijgewerkt is, herstart je je server om de veranderingen toe te passen.

Installeer Redis

Redis is standaard beschikbaar in de Debian 10 repository. Je kunt het installeren door gewoon het volgende commando uit te voeren:

apt-get install redis-server -y

Nadat je Redis geïnstalleerd hebt, start je de Redis service en zet je hem aan om te starten na systeem herstart met het volgende commando:

systemctl start redis-server
systemctl enable redis-server

Je kunt ook de status van de Redis server controleren met het volgende commando:

systemctl status redis-server

Je zou de volgende uitvoer moeten krijgen:

? redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-09-06 05:57:45 EDT; 4s ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 2284 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 2285 (redis-server)
    Tasks: 4 (limit: 1138)
   Memory: 6.8M
   CGroup: /system.slice/redis-server.service
           ??2285 /usr/bin/redis-server 127.0.0.1:6379

Sep 06 05:57:45 debian systemd[1]: Starting Advanced key-value store...
Sep 06 05:57:45 debian systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: No such file or di
Sep 06 05:57:45 debian systemd[1]: Started Advanced key-value store.

Standaard luistert Redis op de localhost op poort 6379. Je kunt het controleren met het volgende commando:

ps -ef | grep redis

Je zou de volgende uitvoer moeten zien:

redis     2285     1  0 05:57 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root      2294   706  0 05:59 pts/0    00:00:00 grep redis

Test vervolgens de Redis connectiviteit met het volgende commando:

redis-cli

Je zou de volgende uitvoer moeten zien:

127.0.0.1:6379> 

Controleer nu de Redis connectiviteit met het ping commando:

127.0.0.1:6379> ping

Als alles in orde is, zou je de volgende uitvoer moeten zien:

PONG

Als je klaar bent. Je kunt verder gaan met de volgende stap.

Configureer Redis als een cache

Je kunt Redis als Cache instellen door het bestand /etc/redis/redis.conf te bewerken:

nano /etc/redis/redis.conf

Voeg aan het eind van het bestand de volgende regels toe:

maxmemory 64mb
maxmemory-policy allkeys-lru

Als het max geheugen van 64mb bereikt is. Redis zal elke sleutel verwijderen volgens het LRU algoritme. Sla het bestand op en sluit het als je klaar bent. Herstart dan de Redis service met het volgende commando:

systemctl restart redis-server

Als je klaar bent. Kun je verder gaan met de volgende stap.

Configureer Redis Authenticatie

Standaard kun je elk commando in Redis shell uitvoeren. Het is dus aan te bevelen om Redis Authentication voor cliënten zo in te stellen dat ze een wachtwoord nodig hebben voordat ze commando’s uitvoeren. Je kunt wachtwoord-authenticatie direct in Redis’s configuratiebestand instellen. Open daartoe het bestand /etc/redis/redis.conf met een editor van je voorkeur:

nano /etc/redis/redis.conf

Onder de sectie SECURITY vind je de volgende regel:

# requirepass foobared

Haal het commentaar weg en vervang het door je gewenste wachtwoord, zoals hieronder:

requirepass AlsW34%#df

Sla het bestand op en sluit het als je klaar bent. Herstart dan de Redis service om de configuratiewijzigingen toe te passen:

systemctl restart redis-server

Ga nu naar de Redis shell met het volgende commando:

redis-cli

Voer nu het volgende commando uit zonder te authenticeren:

127.0.0.1:6379> INFO server

Dit zal niet werken omdat je niet authentiseert. Je zou de volgende foutmelding moeten krijgen:

NOAUTH Authentication required.

Voer vervolgens het volgende commando uit om te authenticeren met het wachtwoord dat in het Redis configuratiebestand staat:

127.0.0.1:6379> AUTH AlsW34%#df

Je zou de volgende uitvoer moeten krijgen:

OK

Voer nu het vorige commando opnieuw uit:

127.0.0.1:6379> INFO server

Dit wordt met succes uitgevoerd en je zou de volgende uitvoer moeten zien:

# Server
redis_version:5.0.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:afa0decbb6de285f
redis_mode:standalone
os:Linux 4.19.0-5-amd64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.3.0
process_id:2308
run_id:2cf0470a9492deddf98bcc72fa9ec94e941edf6c
tcp_port:6379
uptime_in_seconds:50
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:7483371
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf

Als je klaar bent. Je kunt verder gaan met de volgende stap.

Specifieke commando’s hernoemen

Om veiligheidsredenen is het aan te raden om bepaalde commando’s die als gevaarlijk worden beschouwd te hernoemen.

Hier zullen we het commando “config” hernoemen. Het config commando wordt gebruikt om Redis wachtwoord op te vragen. Laten we het met een voorbeeld bekijken:

Maak eerst verbinding en authenticeer Redis shell met het volgende commando:

redis-cli
127.0.0.1:6379> AUTH AlsW34%#df

Vervolgens haal je het Redis wachtwoord op met het volgende commando:

127.0.0.1:6379> config get requirepass

Je zou de volgende uitvoer moeten krijgen:

1) "requirepass"
2) "AlsW34%#df"
127.0.0.1:6379> 

Je kunt het config commando hernoemen door het bestand /etc/redis/redis.conf te bewerken:

nano /etc/redis/redis.conf

Zoek de volgende regel:

# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

Maak het commentaar ongedaan en vervang door je gewenste tekenreeks:

rename-command CONFIG H2sW_Config        

Bewaar en sluit het bestand. Start dan de Redis service opnieuw met het volgende commando:

systemctl restart redis-server

Maak vervolgens verbinding en authenticeer Redis shell met het volgende commando:

redis-cli
127.0.0.1:6379> AUTH AlsW34%#df

Haal vervolgens het Redis wachtwoord op met het config commando:

127.0.0.1:6379> config get requirepass

We hebben dit commando hernoemd zodat je de volgende foutmelding zou moeten krijgen:

(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`, 

Voer nu het hernoemde commando uit zoals hieronder:

127.0.0.1:6379> H2sW_Config get requirepass

Je zou de volgende uitvoer moeten krijgen:

1) "requirepass"
2) "AlsW34%#df"

Verlaat tenslotte de Redis shell met het volgende commando:

127.0.0.1:6379> exit

Conclusie

Gefeliciteerd! Je hebt met succes Redis server geïnstalleerd en beveiligd op Debian 10. Ik hoop dat je nu genoeg kennis hebt om je Redis server met wachtwoord authenticatie te beveiligen. Voel je vrij om me te vragen als je nog vragen hebt.