en tidigare version av denna handledning skrevs av Kathleen Juell.
- Inledning
- förutsättningar
- Steg 1 — Installera Memcached
- steg 2 — Konfigurera Memcached-nätverksinställningar (tillval)
- Konfigurera IPv6
- konfigurera UDP
- konfigurera Unix-Domänuttag
- steg 3 — Lägga till auktoriserade användare
- lägga till en autentiserad användare
- konfigurera SASL-stöd
- steg 4 — tillåter åtkomst via det privata nätverket (valfritt)
- begränsa IP-åtkomst med brandväggar
- bindning Memcached till det privata nätverksgränssnittet
- slutsats
Inledning
Memory object caching system som Memcached kan optimera backend databasprestanda genom att tillfälligt lagra information i minnet, behålla ofta eller nyligen begärda poster. På detta sätt minskar de antalet direkta förfrågningar till dina databaser.
i den här guiden lär du dig hur du installerar och konfigurerar en Memcached-server. Du lär dig också hur du lägger till autentisering för att säkra Memcached med SASL (Simple Authentication and Security Layer). Slutligen lär du dig att binda Memcached till ett lokalt eller privat nätverksgränssnitt för att säkerställa att det bara är tillgängligt på betrodda nätverk, av autentiserade användare.
förutsättningar
för att följa denna handledning behöver du:
- en Ubuntu 20.04-server med en sudo-icke-root-användare och en brandvägg aktiverad. För att ställa in detta kan du följa vår första serverinställning med Ubuntu 20.04-handledning.
med dessa förutsättningar på plats är du redo att installera och säkra din Memcached-server.
alternativt, om du vill experimentera med att installera och konfigurera Memcached i din webbläsare med en interaktiv terminal, klicka på Starta en interaktiv Terminal! knappen nedan för att komma igång.
Steg 1 — Installera Memcached
om du inte redan har Memcached installerat på din server kan du installera den från de officiella Ubuntu-repositorierna. Kontrollera först att ditt lokala paketindex uppdateras med följande kommando:
- sudo apt update
installera sedan det officiella paketet enligt följande:
- sudo apt install memcached
du kan också installera libmemcached-tools
, som är ett paket som innehåller olika verktyg som du kan använda för att undersöka, testa och hantera din Memcached-server. Lägg till paketet på din server med följande kommando:
- sudo apt install libmemcached-tools
Memcached ska nu installeras som en tjänst på din server, tillsammans med verktyg som gör att du kan testa dess anslutning.
för att starta Memcached, kör följande systemctl
kommando:
- sudo systemctl start memcached
nu kan du gå vidare för att säkra dess konfigurationsinställningar.
steg 2 — Konfigurera Memcached-nätverksinställningar (tillval)
om din Memcached-server bara behöver stödja lokala IPv4-anslutningar med TCP kan du hoppa över det här avsnittet och fortsätta till steg 3 i den här handledningen. Annars, om du vill konfigurera Memcached för att använda UDP-uttag, Unix-Domänuttag eller lägga till stöd för IPv6-anslutningar, fortsätt sedan med relevanta steg i det här avsnittet i handledningen.
kontrollera först att din Memcached-instans lyssnar på det lokala IPv4 loopback-gränssnittet 127.0.0.1
. Den nuvarande versionen av Memcached som levereras med Ubuntu och Debian har sin -l
konfigurationsparameter inställd på det lokala gränssnittet, vilket innebär att den är konfigurerad för att endast acceptera anslutningar från servern där Memcached körs.
kontrollera att Memcached för närvarande är bunden till det lokala IPv4 127.0.0.1
– gränssnittet och lyssna bara för TCP-anslutningar med kommandot ss
:
- sudo ss -plunt
de olika flaggorna kommer att ändra utmatningen ss
på följande sätt:
-
-p
lägger till namnet på processen som använder ett uttag -
-l
begränsar utgången till endast lyssningsuttag, i motsats till att även inkludera anslutna uttag till andra system -
-u
inkluderar UDP-baserade uttag i utgången -
-n
visar numeriska värden i utgången istället för läsbara namn och värden -
-t
inkluderar TCP-baserade uttag i utgången utgången
du bör få utdata som följande:
OutputNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=26)). . .
denna utgång bekräftar att memcached
är bunden till IPv4 loopback 127.0.0.1
– adressen med endast TCP-protokollet.
nu när du har bekräftat att Memcached är konfigurerat för att stödja IPv4 endast med TCP-anslutningar, kan du redigera /etc/memcached.conf
för att lägga till stöd för UDP -, Unix-Domänuttag eller IPv6-anslutningar.
Konfigurera IPv6
för att aktivera IPv6-anslutningar till Memcached, öppna filen /etc/memcached.conf
med nano
eller din föredragna redigerare:
- sudo nano /etc/memcached.conf
hitta först följande rad i filen:
. . .-l 127.0.0.1
den här raden är där Memcached är konfigurerad för att lyssna på det lokala IPv4-gränssnittet. För att lägga till IPv6-stöd, Lägg till en rad som innehåller IPv6 local loopback-adressen (::1) Så här:
. . .-l 127.0.0.1-l ::1
spara och stäng filen genom att trycka på CTRL+O
sedan ENTER
för att spara, sedan CTRL+X
för att avsluta nano
. Starta sedan om Memcached med kommandot systemctl
:
- sudo systemctl restart memcached
nu kan du verifiera att Memcached också lyssnar på IPv6-anslutningar genom att upprepa kommandot ss
från föregående avsnitt:
- sudo ss -plunt
du bör få utdata som följande:
OutputNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=26)) . . .tcp LISTEN 0 1024 :11211 :* users:(("memcached",pid=8889,fd=27))
de markerade delarna av utgången indikerar att Memcached nu lyssnar på TCP-anslutningar på det lokala IPv6-gränssnittet.
Observera att om du vill inaktivera IPv4-stöd och bara lyssna på IPv6-anslutningar kan du ta bort raden -l 127.0.0.1
från /etc/memcached.conf
och starta om tjänsten med kommandot systemctl
.
konfigurera UDP
om du vill använda Memcached med UDP-uttag kan du aktivera UDP-stöd genom att redigera konfigurationsfilen /etc/memcached.conf
.
öppna /etc/memcached.conf
med nano
eller din föredragna redigerare och lägg sedan till följande rad i slutet av filen:
. . .-U 11211
om du inte behöver TCP-stöd, hitta raden -p 11211
och ändra den till -p 0
för att inaktivera TCP-anslutningar.
när du är klar med att redigera filen, spara och stäng den genom att ange CTRL+O
för att spara och sedan CTRL+X
för att avsluta.
starta sedan om din Memcached-tjänst med kommandot systemctl
för att tillämpa dina ändringar:
- sudo systemctl restart memcached
kontrollera att Memcached lyssnar efter UDP-anslutningar med kommandot ss -plunt
igen:
- sudo ss -plunt
om du inaktiverade TCP-stöd och har IPv6-anslutningar aktiverade, bör du få utdata som följande:
Output Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process . . .udp UNCONN 0 0 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=8889,fd=28))udp UNCONN 0 0 :11211 :* users:(("memcached",pid=8889,fd=29)). . .
Observera att din utgång kan vara annorlunda om du bara har IPv4-anslutningar aktiverade och om du har lämnat TCP-anslutningar aktiverade.
konfigurera Unix-Domänuttag
om du vill använda Memcached med Unix-Domänuttag kan du aktivera detta stöd genom att redigera konfigurationsfilen /etc/memcached.conf
. Observera att om du konfigurerar Memcached för att använda ett Unix-Domänuttag kommer Memcached att inaktivera TCP-och UDP-stöd, så se till att dina program inte behöver ansluta med dessa protokoll innan du aktiverar socket-stöd.
öppna /etc/memcached.conf
med nano
eller din föredragna redigerare och lägg sedan till följande rader i slutet av filen:
. . .-s /var/run/memcached/memcached.sock-a 660
flaggan -a
bestämmer behörigheterna för sockets fil. Se till att användaren som behöver ansluta till Memcached är en del av gruppen memcache
på din server, annars kommer den att få ett meddelande om tillstånd nekat när du försöker komma åt uttaget.
starta sedan om din Memcached-tjänst med kommandot systemctl
för att tillämpa dina ändringar:
- sudo systemctl restart memcached
kontrollera att Memcached lyssnar på UNIX Domain Socket-anslutningar med kommandot ss -lnx
:
- sudo ss -lnx | grep memcached
flaggan -x
begränsar produktionen av ss
för att visa socket-filer. Du bör få utdata som följande:
Outputu_str LISTEN 0 1024 /var/run/memcached/memcached.sock 20234658 * 0
nu när du har konfigurerat Memcacheds nätverksinställningar kan du gå vidare till nästa steg i denna handledning, som lägger till SASL för autentisering till Memcached.
steg 3 — Lägga till auktoriserade användare
för att lägga till autentiserade användare i din Memcached-tjänst kan du använda SASL (Simple Authentication and Security Layer), som är ett ramverk som kopplar autentiseringsprocedurer från applikationsprotokoll. Först lägger du till stöd för SASL till din server, och sedan konfigurerar du en användare med autentiseringsuppgifter. Med allt på plats kan du sedan aktivera SASL i Memcacheds konfigurationsfil och bekräfta att allt fungerar korrekt.
lägga till en autentiserad användare
för att komma igång med att lägga till SASL-stöd måste du installera paketet sasl2-bin
, som innehåller administrativa program för SASL-användardatabasen. Med det här verktyget kan du skapa en autentiserad användare eller användare. Kör följande kommando för att installera det:
- sudo apt install sasl2-bin
skapa sedan katalogen och filen som Memcached kommer att kontrollera för sina SASL-konfigurationsinställningar med kommandot mkdir
:
- sudo mkdir -p /etc/sasl2
skapa nu SASL-konfigurationsfilen med nano
eller din föredragna redigerare:
- sudo nano /etc/sasl2/memcached.conf
Lägg till följande rader:
log_level: 5mech_list: plainsasldb_path: /etc/sasl2/memcached-sasldb2
förutom att ange loggningsnivån är mech_list
inställd på plain
, vilket berättar för Memcached att den ska använda sin egen lösenordsfil och verifiera ett lösenord för klartext. Den sista raden som du lade till anger sökvägen till användardatabasfilen som du kommer att skapa nästa. Spara och stäng filen när du är klar.
nu skapar du en SASL-databas med användaruppgifter. Du använder kommandot saslpasswd2
med flaggan -c
för att skapa en ny användarpost i SASL-databasen. Användaren kommer att vara sammy här, men du kan ersätta det här namnet med din egen användare. Flaggan -f
anger sökvägen till databasen, som kommer att vara den sökväg som du anger /etc/sasl2/memcached.conf
:
- sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy
slutligen, ge memcache-användaren och gruppägandet över SASL-databasen med följande chown
– kommando:
- sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2
du har nu en SASL-konfiguration på plats som Memcached kan använda för autentisering. I nästa avsnitt bekräftar du att Memcached körs med standardinställningarna först och konfigurerar sedan om det och verifierar att det fungerar med SASL-autentisering.
konfigurera SASL-stöd
vi kan först testa anslutningen för vår Memcached-instans med kommandot memcstat
. Denna kontroll hjälper oss att fastställa att Memcached körs och konfigureras korrekt innan SASL och användarautentisering är aktiverade. När vi har gjort ändringar i våra konfigurationsfiler kör vi kommandot igen för att söka efter olika utdata.
för att kontrollera att Memcached är igång med kommandot memcstat
, skriv följande:
- memcstat --servers="127.0.0.1"
om du använder IPv6, ersätt ::1
i stället för IPv4 127.0.0.1
– adressen. Om du använder ett Unix-Domänuttag, använd sökvägen till uttaget istället för IP-adressen, till exempel --servers=/var/run/memcached/memached.sock
.
när du kör kommandot memcstat
och ansluter till Memcached framgångsrikt bör du få utdata som följande:
OutputServer: 127.0.0.1 (11211) pid: 2299875 uptime: 2020 time: 1632404590 version: 1.5.22 . . .
om du använder Memcached med UDP-stöd kan kommandot memcstat
inte ansluta till UDP-porten. Du kan använda följande netcat
– kommando för att verifiera anslutning:
- nc -u 127.0.0.1 11211 -vz
om Memcached svarar bör du få utdata som följande:
OutputConnection to 127.0.0.1 11211 port succeeded!
om du använder Memcached med IPv6 och UDP, ska kommandot vara följande:
- nc -6 -u ::1 11211 -vz
nu kan du gå vidare till att aktivera SASL. För att göra det, lägg till parametern -S
till /etc/memcached.conf
. Öppna filen med nano
eller din föredragna redigerare igen:
- sudo nano /etc/memcached.conf
längst ner i filen lägger du till följande:
. . .-S
Nästa, hitta och Avkommentera alternativet -vv
, som kommer att ge detaljerad utmatning till /var/log/memcached
. Den okommenterade raden ska se ut så här:
. . .-vv
spara och stäng filen.
Starta nu om Memcached-tjänsten med följande systemctl
– kommando:
- sudo systemctl restart memcached
kontrollera sedan journalctl
– loggarna för Memcached för att vara säker på att SASL-stöd är aktiverat:
- sudo journalctl -u memcached |grep SASL
du bör få en utmatningsrad som följande, vilket indikerar att SASL-stöd har initierats:
OutputSep 23 17:00:55 memcached systemd-memcached-wrapper: Initialized SASL.
nu kan du kontrollera anslutningen till Memcached igen. Med SASL-stöd på plats och initialiserat bör följande memcstat
– kommando misslyckas utan giltiga autentiseringsuppgifter:
- memcstat --servers="127.0.0.1"
kommandot ska inte producera utdata. Skriv följande skalkommando för att kontrollera dess status:
- echo $?
$?
returnerar alltid exit-koden för det sista kommandot som avslutades. Vanligtvis indikerar allt förutom 0
processfel. I det här fallet bör du få en utgångsstatus på 1
, vilket indikerar att kommandot memcstat
misslyckades.
kör memcstat
igen, den här gången med ett användarnamn och lösenord kommer att bekräfta om autentiseringsprocessen fungerade eller inte. Kör följande kommando med dina referenser ersatta i stället för sammy
och your_password` värden om du använde olika referenser:
- memcstat --servers="127.0.0.1" --username=sammy --password=your_password
du bör få utdata som följande:
OutputServer: 127.0.0.1 (11211) pid: 3831 uptime: 9 time: 1520028517 version: 1.4.25 . . .
din Memcached-tjänst är nu konfigurerad och körs med SASL-stöd och användarautentisering.
steg 4 — tillåter åtkomst via det privata nätverket (valfritt)
som standard är Memcached endast konfigurerat för att lyssna på det lokala loopback-gränssnittet (127.0.0.1
), vilket skyddar Memcached-gränssnittet från exponering för externa parter. Det kan dock finnas fall där du måste tillåta åtkomst från andra servrar. I det här fallet kan du justera dina konfigurationsinställningar för att binda Memcached till ett privat nätverksgränssnitt.
notera: Vi kommer att täcka hur du konfigurerar brandväggsinställningar med UFW i det här avsnittet, men det är också möjligt att använda DigitalOcean Cloud Firewalls för att skapa dessa inställningar. För mer information om hur du konfigurerar DigitalOcean Cloud Firewalls, se vår introduktion till DigitalOcean Cloud Firewalls. För att lära dig mer om hur du begränsar inkommande trafik till vissa maskiner, kolla in avsnittet i denna handledning om att tillämpa brandväggsregler med Taggar och servernamn och vår diskussion om brandväggsetiketter.
begränsa IP-åtkomst med brandväggar
innan du justerar dina konfigurationsinställningar är det bra att ställa in brandväggsregler för att begränsa de maskiner som kan ansluta till din Memcached-server. Först måste du spela in den privata IP-adressen för alla maskiner som du vill använda för att ansluta till Memcached. När du har den privata IP-adressen (eller adresserna) lägger du till en explicit brandväggsregel för att låta maskinen komma åt Memcached.
om du använder UFW-brandväggen kan du begränsa åtkomsten till din Memcached-instans genom att skriva följande på din Memcached-server:
- sudo ufw allow from client_system_private_IP/32 to any port 11211
om mer än ett system har åtkomst till Memcached via det privata nätverket, var noga med att lägga till ytterligare ufw
– regler för varje maskin med ovanstående regel som mall.
du kan läsa mer om UFW-brandväggar genom att läsa vår UFW essentials-guide.
med dessa ändringar på plats kan du justera Memcached-tjänsten för att binda till serverns privata nätverksgränssnitt.
bindning Memcached till det privata nätverksgränssnittet
nu när din brandvägg är på plats kan du justera Memcached-konfigurationen för att binda till serverns privata nätverksgränssnitt istället för 127.0.0.1
.
hitta först det privata nätverksgränssnittet för din Memcached-server med följande ip
kommando
- ip -brief address show
beroende på serverns nätverkskonfiguration kan utmatningen skilja sig från följande exempel:
Outputlo UNKNOWN 127.0.0.1/8 ::1/128eth0 UP 203.0.113.1/20 10.10.0.5/16 2001:DB8::1/64 fe80::7ced:9ff:fe52:4695/64eth1 UP 10.136.32.212/16 fe80::2cee:92ff:fe21:8bc4/64
i det här exemplet identifieras nätverksgränssnitten med namnen eth0
och eth1
. De markerade IPv4-adresserna på raden eth0
är de offentliga IP-adresserna för servern.
den markerade 10.136.32.212
– adressen på raden eth1
är den privata IPv4-adressen för servern och fe80::2cee:92ff:fe21:8bc4
– adressen är den privata IPv6-adressen. Dina IP-adresser kommer att vara olika men kommer alltid att falla inom följande intervall baserat på RFC 1918-specifikationen):
-
10.0.0.0
till10.255.255.255
(10/8 prefix) -
172.16.0.0
till172.31.255.255
(172.16 / 12 prefix) -
192.168.0.0
till192.168.255.255
(192.168/16 prefix)
när du har hittat serverns privata IP-adress eller adresser öppnar du filen /etc/memcached.conf
igen med nano
eller din föredragna redigerare:
- sudo nano /etc/memcached.conf
hitta raden -l 127.0.0.1
som du markerade eller ändrade tidigare och ändra adressen så att den matchar serverns privata nätverksgränssnitt:
. . .-l memcached_servers_private_IP. . .
om du vill ha Memcached lyssna på flera adresser, Lägg till en annan liknande rad för varje adress, antingen IPv4 eller IPv6 med formatet -l memcached_servers_private_IP
.
spara och stäng filen när du är klar.
starta sedan om Memcached-tjänsten:
- sudo systemctl restart memcached
kontrollera dina nya inställningar med ss
för att bekräfta ändringen:
- sudo ss -plunt
OutputNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process. . .tcp LISTEN 0 1024 10.137.0.2:11211 0.0.0.0:* users:(("memcached",pid=8991,fd=27)). . .
testa anslutningen från din externa klient för att säkerställa att du fortfarande kan nå tjänsten. Det är bra att också kontrollera åtkomst från en icke-auktoriserad klient (försök att ansluta utan användare och lösenord) för att säkerställa att din SASL-autentisering fungerar som förväntat. Det är också bra att försöka ansluta till Memcached från en annan server som inte är tillåten att ansluta för att verifiera att brandväggsreglerna du skapade är effektiva.
slutsats
i denna handledning undersökte du hur du konfigurerar Memcached med IPv4 -, IPv6 -, TCP -, UDP-och Unix-Domänuttag. Du lärde dig också hur du säkrar din Memcached-server genom att aktivera SASL-autentisering. Slutligen lärde du dig hur du binder Memcached till ditt lokala eller privata nätverksgränssnitt och hur du konfigurerar brandväggsregler för att begränsa åtkomsten till Memcached.
för att lära dig mer om Memcached, kolla in projektdokumentationen.