Sådan installeres og sikres Memcached på Ubuntu 20.04

en tidligere version af denne tutorial blev skrevet af Kathleen Juell.

introduktion

hukommelse objekt caching systemer som Memcached kan optimere backend database ydeevne ved midlertidigt at lagre oplysninger i hukommelsen, bevarer ofte eller for nylig anmodet poster. På denne måde reducerer de antallet af direkte anmodninger til dine databaser.

i denne vejledning lærer du, hvordan du installerer og konfigurerer en Memcached server. Du lærer også, hvordan du tilføjer godkendelse for at sikre Memcached ved hjælp af Simple Authentication and Security Layer (SASL). Endelig lærer du, hvordan du binder Memcached til en lokal eller privat netværksgrænseflade for at sikre, at den kun er tilgængelig på pålidelige netværk af godkendte brugere.

forudsætninger

for at følge denne tutorial skal du bruge:

  • en Ubuntu 20.04 server med en sudo ikke-root bruger og en brandmur aktiveret. For at konfigurere dette kan du følge vores indledende serveropsætning med Ubuntu 20.04 tutorial.

med disse forudsætninger på plads, vil du være klar til at installere og sikre din Memcached server.

Alternativt, hvis du vil eksperimentere med at installere og konfigurere Memcached i din bro. ser ved hjælp af en interaktiv terminal, skal du klikke på Start en interaktiv Terminal! knappen nedenfor for at komme i gang.

Start en interaktiv Terminal!

Trin 1 — installation af Memcached

hvis du ikke allerede har Memcached installeret på din server, kan du installere den fra de officielle Ubuntu-arkiver. Først skal du sørge for, at dit lokale pakkeindeks opdateres ved hjælp af følgende kommando:

  • sudo apt update

installer derefter den officielle pakke som følger:

  • sudo apt install memcached

du kan også installere libmemcached-tools, som er en pakke, der indeholder forskellige værktøjer, som du kan bruge til at undersøge, teste og administrere din Memcached server. Føj pakken til din server med følgende kommando:

  • sudo apt install libmemcached-tools

Memcached skal nu installeres som en tjeneste på din server sammen med værktøjer, der giver dig mulighed for at teste dens forbindelse.

for at starte Memcached skal du køre følgende systemctl kommando:

  • sudo systemctl start memcached

nu Kan du gå videre til at sikre dens konfigurationsindstillinger.

Trin 2 — konfiguration af Memcached netværksindstillinger (Valgfrit)

hvis din Memcached server kun skal understøtte lokale IPv4-forbindelser ved hjælp af TCP, kan du springe dette afsnit over og fortsætte til Trin 3 i denne vejledning. Ellers, hvis du vil konfigurere Memcached til at bruge UDP-stik, unikke Domænestik eller tilføje support til IPv6-forbindelser, skal du fortsætte med de relevante trin i dette afsnit af vejledningen.

sørg først for, at din Memcached-forekomst lytter på den lokale IPv4 loopback-grænseflade 127.0.0.1. Den aktuelle version af Memcached, der leveres med Ubuntu og Debian, har sin -l konfigurationsparameter indstillet til den lokale grænseflade, hvilket betyder, at den er konfigureret til kun at acceptere forbindelser fra den server, hvor Memcached kører.

Kontroller, at Memcached i øjeblikket er bundet til den lokale IPv4 127.0.0.1 interface og lytter kun til TCP-forbindelser ved hjælp af kommandoen ss :

  • sudo ss -plunt

de forskellige flag vil ændre ss output på følgende måder:

  • -p tilføjer navnet på den proces, der bruger en sokkel
  • -l begrænser output til kun at lytte stikkontakter i modsætning til også at inkludere tilsluttede stikkontakter til andre systemer
  • -u inkluderer UDP-baserede stikkontakter i output
  • -n viser numeriske værdier i output i stedet for menneskelige læsbare navne og værdier
  • -t inkluderer TCP-baserede stikkontakter i output

du skal modtage output som følgende:

Output
Netid 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)). . .

denne udgang bekræfter, at memcached er bundet til IPv4 loopback 127.0.0.1 adresse kun ved hjælp af TCP-protokollen.

nu hvor du har bekræftet, at Memcached er konfigureret til kun at understøtte IPv4 med TCP-forbindelser, kan du redigere /etc/memcached.conf for at tilføje understøttelse af UDP -, Domænestik eller IPv6-forbindelser.

konfiguration af IPv6

for at aktivere IPv6-forbindelser til Memcached skal du åbne filen /etc/memcached.conf med nano eller din foretrukne editor:

  • sudo nano /etc/memcached.conf

find først følgende linje i filen:

/etc/memcached.conf
. . .-l 127.0.0.1

denne linje er, hvor Memcached er konfigureret til at lytte på den lokale IPv4-grænseflade. For at tilføje IPv6-understøttelse skal du tilføje en linje, der indeholder IPv6 loopback-adressen (::1) som denne:

/etc/memcached.conf
. . .-l 127.0.0.1-l ::1

Gem og luk filen ved at trykke på CTRL+O derefter ENTER for at gemme, derefter CTRL+Xfor at afslutte nano. Genstart derefter Memcached ved hjælp af kommandoen systemctl :

  • sudo systemctl restart memcached

nu Kan du kontrollere, at Memcached også lytter til IPv6-forbindelser ved at gentage kommandoen ss fra det foregående afsnit:

  • sudo ss -plunt

du skal modtage output som følgende:

Output
Netid 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 fremhævede dele af output indikerer, at Memcached nu lytter til TCP-forbindelser på den lokale IPv6-grænseflade.

Bemærk, at hvis du vil deaktivere IPv4-support og kun lytte til IPv6-forbindelser, kan du fjerne linjen -l 127.0.0.1 fra /etc/memcached.conf og genstarte tjenesten ved hjælp af kommandoen systemctl.

konfiguration af UDP

hvis du vil bruge Memcached med UDP-stik, kan du aktivere UDP-support ved at redigere /etc/memcached.conf konfigurationsfilen.

Åbn /etc/memcached.conf ved hjælp af nano eller din foretrukne editor, og tilføj derefter følgende linje til slutningen af filen:

/etc/memcached.conf
. . .-U 11211

hvis du ikke har brug for TCP-support, skal du finde linjen -p 11211 og ændre den til -p 0 for at deaktivere TCP-forbindelser.

når du er færdig med at redigere filen, skal du gemme og lukke den ved at indtaste CTRL+O for at gemme og derefter CTRL+X for at afslutte.

genstart derefter din Memcached-tjeneste med kommandoen systemctl for at anvende dine ændringer:

  • sudo systemctl restart memcached

Kontroller, at Memcached lytter til UDP-forbindelser ved hjælp af kommandoen ss -plunt igen:

  • sudo ss -plunt

hvis du deaktiverede TCP-support og har IPv6-forbindelser aktiveret, skal du modtage output som følgende:

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)). . .

Bemærk, at dit output kan være anderledes, hvis du kun har IPv4-forbindelser aktiveret, og hvis du har forladt TCP-forbindelser aktiveret.

konfiguration af Domænestik

hvis du vil bruge Memcached med Domænestik, kan du aktivere denne support ved at redigere konfigurationsfilen /etc/memcached.conf. Bemærk, at hvis du konfigurerer Memcached til at bruge et Domænestik, deaktiverer Memcached TCP-og UDP-support, så sørg for, at dine applikationer ikke behøver at oprette forbindelse ved hjælp af disse protokoller, før du aktiverer sokkelsupport.

Åbn /etc/memcached.conf ved hjælp af nano eller din foretrukne editor, og tilføj derefter følgende linjer til slutningen af filen:

/etc/memcached.conf
. . .-s /var/run/memcached/memcached.sock-a 660

-a flaget bestemmer tilladelserne på sokkelens fil. Sørg for, at den bruger, der skal oprette forbindelse til Memcached, er en del af memcache – gruppen på din server, ellers modtager den en meddelelse om tilladelse nægtet, når du prøver at få adgang til stikket.

genstart derefter din Memcached-tjeneste med kommandoen systemctl for at anvende dine ændringer:

  • sudo systemctl restart memcached

Kontroller, at Memcached lytter efter Stikforbindelser til domænet ved hjælp af kommandoen ss -lnx :

  • sudo ss -lnx | grep memcached

flagget -x begrænser output fra ss for at vise socket-filer. Du skal modtage output som følgende:

Output
u_str LISTEN 0 1024 /var/run/memcached/memcached.sock 20234658 * 0

nu hvor du har konfigureret Memcached ‘ s netværksindstillinger, kan du fortsætte til næste trin i denne vejledning, som tilføjer SASL til godkendelse til Memcached.

Trin 3 — Tilføjelse af autoriserede brugere

hvis du vil føje godkendte brugere til din Memcached-tjeneste, kan du bruge Simple Authentication and Security Layer (SASL), som er en ramme, der fjerner godkendelsesprocedurer fra applikationsprotokoller. Først tilføjer du support til SASL til din server, og derefter konfigurerer du en bruger med godkendelsesoplysninger. Når alt er på plads, kan du derefter aktivere SASL i Memcached ‘ s konfigurationsfil og bekræfte, at alt fungerer korrekt.

tilføjelse af en godkendt bruger

for at komme i gang med at tilføje SASL-support skal du installere pakken sasl2-bin, som indeholder administrative programmer til SASL-brugerdatabasen. Dette værktøj giver dig mulighed for at oprette en godkendt bruger eller brugere. Kør følgende kommando for at installere den:

  • sudo apt install sasl2-bin

opret derefter den mappe og fil, som Memcached vil kontrollere for sine SASL-konfigurationsindstillinger ved hjælp af kommandoen mkdir :

  • sudo mkdir -p /etc/sasl2

Opret nu SASL-konfigurationsfilen ved hjælp af nano eller din foretrukne editor:

  • sudo nano /etc/sasl2/memcached.conf

tilføj følgende linjer:

/etc/sasl2/memcached.conf
log_level: 5mech_list: plainsasldb_path: /etc/sasl2/memcached-sasldb2

ud over at angive logningsniveauet er mech_list indstillet til plain, som fortæller Memcached, at den skal bruge sin egen adgangskodefil og bekræfte en adgangskode i almindelig tekst. Den sidste linje, du tilføjede, angiver stien til den brugerdatabasefil, du vil oprette næste. Gem og luk filen, når du er færdig.

nu opretter du en SASL-database med brugeroplysninger. Du bruger kommandoen saslpasswd2 med flagget -c til at oprette en ny brugerindtastning i SASL-databasen. Brugeren vil være sammy her, men du kan erstatte dette navn med din egen bruger. Flagget -f angiver stien til databasen, som vil være den sti, du angiver i /etc/sasl2/memcached.conf:

  • sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy

endelig giver memcache bruger og gruppe ejerskab over SASL database med følgende chown kommando:

  • sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2

du har nu en SASL-konfiguration på plads, som Memcached kan bruge til godkendelse. I det næste afsnit bekræfter du, at Memcached kører med standardindstillingerne først, og derefter omkonfigurere det og kontrollere, at det fungerer med SASL-godkendelse.

konfiguration af SASL-Support

vi kan først teste forbindelsen til vores Memcached-forekomst med kommandoen memcstat. Denne kontrol hjælper os med at fastslå, at Memcached kører og er korrekt konfigureret, før SASL og brugergodkendelse er aktiveret. Når vi har foretaget ændringer i vores konfigurationsfiler, kører vi kommandoen igen for at kontrollere, om der er forskellige output.

for at kontrollere, at Memcached er i gang ved hjælp af kommandoen memcstat, skal du skrive følgende:

  • memcstat --servers="127.0.0.1"

hvis du bruger IPv6, skal du erstatte ::1 i stedet for IPv4 127.0.0.1 – adressen. Hvis du bruger et Domænestik, skal du bruge stien til stikket i stedet for IP-adressen, for eksempel --servers=/var/run/memcached/memached.sock.

når du kører kommandoen memcstat og opretter forbindelse til Memcached med succes, skal du modtage output som følgende:

Output
Server: 127.0.0.1 (11211) pid: 2299875 uptime: 2020 time: 1632404590 version: 1.5.22 . . .

Bemærk: Hvis du bruger Memcached med UDP-understøttelse, kan kommandoen memcstat ikke oprette forbindelse til UDP-porten. Du kan bruge følgende netcat kommando til at bekræfte forbindelsen:

  • nc -u 127.0.0.1 11211 -vz

hvis Memcached svarer, skal du modtage output som følgende:

Output
Connection to 127.0.0.1 11211 port succeeded!

hvis du bruger Memcached med IPv6 og UDP, skal kommandoen være følgende:

  • nc -6 -u ::1 11211 -vz

nu Kan du gå videre til at aktivere SASL. For at gøre det skal du tilføje parameteren -S til /etc/memcached.conf. Åbn filen med nano eller din foretrukne editor igen:

  • sudo nano /etc/memcached.conf

nederst i filen skal du tilføje følgende:

/etc/memcached.conf
. . .-S

næste, finde og uncomment -vvmulighed, som vil give verbose output til /var/log/memcached. Den ikke-kommenterede linje skal se sådan ud:

/etc/memcached.conf
. . .-vv

Gem og luk filen.

Genstart nu Memcached-tjenesten ved hjælp af følgende systemctl kommando:

  • sudo systemctl restart memcached

kontroller derefter journalctl logfilerne for Memcached for at være sikker på, at SASL-support er aktiveret:

  • sudo journalctl -u memcached |grep SASL

du skal modtage en outputlinje som følgende, hvilket indikerer, at SASL-support er initialiseret:

Output
Sep 23 17:00:55 memcached systemd-memcached-wrapper: Initialized SASL.

nu Kan du kontrollere forbindelsen til Memcached igen. Med SASL-understøttelse på plads og initialiseret, skal følgende memcstat kommando mislykkes uden gyldige godkendelsesoplysninger:

  • memcstat --servers="127.0.0.1"

kommandoen skal ikke producere output. Skriv følgende shell-kommando for at kontrollere dens status:

  • echo $?

$? vil altid returnere udgangskoden for den sidste kommando, der forlod. Typisk indikerer noget udover 0 procesfejl. I dette tilfælde skal du modtage en udgangsstatus på 1, hvilket indikerer, at kommandoen memcstat mislykkedes.

kører memcstat igen, denne gang med et brugernavn og en adgangskode bekræfter, om godkendelsesprocessen fungerede. Kør følgende kommando med dine legitimationsoplysninger erstattet i stedet for værdierne sammy og dit kodeord, hvis du brugte forskellige legitimationsoplysninger:

  • memcstat --servers="127.0.0.1" --username=sammy --password=your_password

du skal modtage output som følgende:

Output
Server: 127.0.0.1 (11211) pid: 3831 uptime: 9 time: 1520028517 version: 1.4.25 . . .

din Memcached-tjeneste er nu konfigureret og kører med SASL-support og brugergodkendelse.

Trin 4 — tillader adgang over det Private netværk (Valgfrit)

som standard memcached er kun konfigureret til at lytte på den lokale loopback (127.0.0.1) interface, som beskytter Memcached interface mod eksponering for eksterne parter. Der kan dog være tilfælde, hvor du bliver nødt til at tillade adgang fra andre servere. I dette tilfælde kan du justere dine konfigurationsindstillinger for at binde Memcached til en privat netværksgrænseflade.

Bemærk: Vi dækker, hvordan du konfigurerer brandvægsindstillinger ved hjælp af UFV i dette afsnit, men det er også muligt at bruge DigitalOcean Cloud-brandvægge til at oprette disse indstillinger. For mere information om opsætning af DigitalOcean Cloud brandvægge, se vores Introduktion til DigitalOcean Cloud brandvægge. Hvis du vil vide mere om, hvordan du begrænser indgående trafik til bestemte maskiner, skal du tjekke afsnittet i denne tutorial om anvendelse af brandvægs regler ved hjælp af tags og servernavne og vores diskussion af brandvægsmærker.

begrænsning af IP-adgang med brandvægge

før du justerer dine konfigurationsindstillinger, er det en god ide at opsætte brandvægsregler for at begrænse de maskiner, der kan oprette forbindelse til din Memcached server. Først skal du registrere den private IP-adresse på enhver maskine, som du gerne vil bruge til at oprette forbindelse til Memcached. Når du har den private IP-adresse (eller adresser), tilføjer du en eksplicit regel for at give maskinen adgang til Memcached.

hvis du bruger memcached, kan du begrænse adgangen til din Memcached-forekomst ved at skrive følgende på din Memcached-server:

  • sudo ufw allow from client_system_private_IP/32 to any port 11211

hvis mere end et system får adgang til Memcached via det private netværk, skal du sørge for at tilføje yderligere ufw regler for hver maskine ved hjælp af ovenstående regel som en skabelon.

du kan finde ud af mere om UFO brandvægge ved at læse vores UFO essentials guide.

når disse ændringer er på plads, kan du justere Memcached-tjenesten til at binde til din servers private netværksgrænseflade.

Binding af Memcached til den Private netværksgrænseflade

nu hvor din brandvæg er på plads, kan du justere Memcached-konfigurationen til at binde til din servers private netværksgrænseflade i stedet for 127.0.0.1.

find først den private netværksgrænseflade til din Memcached server ved hjælp af følgende ip kommando

  • ip -brief address show

afhængigt af din servers netværkskonfiguration kan output være anderledes end følgende eksempel:

Output
lo 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 dette eksempel identificeres netværksgrænsefladerne ved deres eth0 og eth1 navne. De fremhævede IPv4-adresser på linjen eth0 er de offentlige IP-adresser til serveren.

den fremhævede 10.136.32.212 adresse på eth1 linjen er den private IPv4-adresse for serveren, og fe80::2cee:92ff:fe21:8bc4 adressen er IPv6 privat adresse. Dine IP-adresser vil være forskellige, men vil altid falde inden for følgende intervaller baseret på RFC 1918-specifikationen):

  • 10.0.0.0 til 10.255.255.255 (10/8 præfiks)
  • 172.16.0.0 til 172.31.255.255 (172.16 / 12 præfiks)
  • 192.168.0.0 til 192.168.255.255 (192.168/16 præfiks)

når du har fundet din servers private IP-adresse eller-adresser, skal du åbne filen /etc/memcached.conf igen ved hjælp af nano eller din foretrukne editor:

  • sudo nano /etc/memcached.conf

Find linjen-l 127.0.0.1, som du har markeret eller ændret tidligere, og skift adressen, så den passer til din servers private netværksgrænseflade:

/etc/memcached.conf
. . .-l memcached_servers_private_IP. . .

hvis du gerne vil have Memcached lytte på flere adresser, tilføje en anden lignende linje for hver adresse, enten IPv4 eller IPv6 ved hjælp af -l memcached_servers_private_IP format.

Gem og luk filen, når du er færdig.

genstart derefter Memcached-tjenesten:

  • sudo systemctl restart memcached

Tjek dine nye indstillinger med ss for at bekræfte ændringen:

  • sudo ss -plunt
Output
Netid 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)). . .

Test forbindelsen fra din eksterne klient for at sikre, at du stadig kan nå tjenesten. Det er en god ide at også kontrollere adgang fra en ikke-autoriseret klient (prøv at oprette forbindelse uden bruger og adgangskode) for at sikre, at din SASL-godkendelse fungerer som forventet. Det er også en god ide at prøve at oprette forbindelse til Memcached fra en anden server, der ikke har tilladelse til at oprette forbindelse for at kontrollere, at de regler, du oprettede, er effektive.

konklusion

i denne tutorial undersøgte du, hvordan du konfigurerer Memcached med IPv4, IPv6, TCP, UDP og unikke Domænestik. Du lærte også, hvordan du sikrer din Memcached server ved at aktivere SASL-godkendelse. Endelig lærte du, hvordan du binder Memcached til din lokale eller private netværksgrænseflade, og hvordan du konfigurerer brandvægsregler for at begrænse adgangen til Memcached.

for at lære mere om Memcached, tjek projektdokumentationen.

Write a Comment

Din e-mailadresse vil ikke blive publiceret.