cum se instalează și se Securizează Memcached pe Ubuntu 20.04

o versiune anterioară a acestui tutorial a fost scrisă de Kathleen Juell.

Introducere

memory object caching systems, cum ar fi Memcached poate optimiza performanța bazei de date backend prin stocarea temporară a informațiilor în memorie, păstrând înregistrările solicitate frecvent sau recent. În acest fel, acestea reduc numărul de solicitări directe către bazele dvs. de date.

în acest ghid, veți învăța cum să instalați și să configurați un server Memcached. Veți afla, de asemenea, cum să adăugați autentificare pentru a securiza Memcached folosind autentificare simplă și strat de securitate (SASL). În cele din urmă, veți învăța cum să legați Memcached la o interfață de rețea locală sau privată pentru a vă asigura că este accesibilă numai în rețelele de încredere, de către utilizatorii autentificați.

cerințe preliminare

pentru a urma acest tutorial, veți avea nevoie de:

  • un server Ubuntu 20.04 cu un utilizator sudo non-root și un firewall activat. Pentru a configura acest lucru, puteți urmări configurarea inițială a serverului cu tutorialul Ubuntu 20.04.

cu aceste condiții prealabile în loc, va fi gata pentru a instala și asigura serverul Memcached.

alternativ, dacă doriți să experimentați instalarea și configurarea Memcached în browserul dvs. utilizând un terminal interactiv, faceți clic pe Lansați un Terminal interactiv! butonul de mai jos pentru a începe.

lansați un Terminal interactiv!

Pasul 1 — Instalarea Memcached

dacă nu aveți deja Memcached instalat pe serverul dvs., îl puteți instala din depozitele oficiale Ubuntu. Mai întâi, asigurați-vă că indexul local de pachete este actualizat folosind următoarea comandă:

  • sudo apt update

apoi, instalați pachetul oficial după cum urmează:

  • sudo apt install memcached

de asemenea, puteți instala libmemcached-tools, care este un pachet care conține diverse instrumente pe care le puteți utiliza pentru a examina, testa și gestiona serverul Memcached. Adăugați pachetul pe serverul dvs. cu următoarea comandă:

  • sudo apt install libmemcached-tools

Memcached ar trebui acum instalat ca serviciu pe serverul dvs., împreună cu instrumente care vă vor permite să testați conectivitatea acestuia.

pentru a porni Memcached, executați următoarea comandă systemctl :

  • sudo systemctl start memcached

acum Puteți trece la securizarea setărilor de configurare.

Step 2 — Configurarea setărilor de rețea Memcached (opțional)

dacă serverul Memcached trebuie doar să accepte conexiuni IPv4 locale folosind TCP, atunci puteți sări peste această secțiune și continuați cu Pasul 3 în acest tutorial. În caz contrar, dacă doriți să configurați Memcached pentru a utiliza prize UDP, prize de domeniu Unix sau pentru a adăuga suport pentru conexiunile IPv6, continuați cu pașii relevanți din această secțiune a tutorialului.

mai întâi, asigurați-vă că instanța Memcached ascultă pe interfața locală IPv4 loopback 127.0.0.1. Versiunea curentă a Memcached care este livrată cu Ubuntu și Debian are parametrul de configurare -l setat la interfața locală, ceea ce înseamnă că este configurat să accepte numai conexiuni de pe serverul pe care rulează Memcached.

verificați dacă Memcached este legat în prezent la interfața locală IPv4 127.0.0.1 și ascultați numai pentru conexiunile TCP utilizând comanda ss :

  • sudo ss -plunt

diferitele steaguri vor modifica ieșirea ss în următoarele moduri:

  • -p Adaugă numele procesului care utilizează o priză
  • -l limitează ieșirea numai la prizele de ascultare, spre deosebire de includerea prizelor conectate la alte sisteme
  • -u include prize bazate pe UDP în ieșire
  • -n afișează valori numerice în Ieșire în loc de nume și valori lizibile de om
  • -t include prize bazate pe TCP ieșirea

ar trebui să primiți ieșire ca următoarele:

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

această ieșire confirmă faptul că memcached este legat la adresa IPv4 loopback 127.0.0.1 folosind doar protocolul TCP.

acum că ați confirmat că Memcached este configurat să accepte IPv4 numai cu conexiuni TCP, puteți edita /etc/memcached.conf pentru a adăuga suport pentru UDP, prize de domeniu Unix sau conexiuni IPv6.

Configurarea IPv6

pentru a activa conexiunile IPv6 la Memcached, deschideți fișierul /etc/memcached.conf cu nano sau editorul preferat:

  • sudo nano /etc/memcached.conf

mai întâi, găsiți următoarea linie în fișier:

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

această linie este locul în care Memcached este configurat să asculte pe interfața IPv4 locală. Pentru a adăuga suport IPv6, adăugați o linie care conține adresa locală de loopback IPv6 (:: 1) astfel:

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

Salvați și închideți fișierul apăsând CTRL+O apoi ENTER pentru a salva, apoi CTRL+Xpentru a ieși din nano. Apoi reporniți Memcached folosind comanda systemctl :

  • sudo systemctl restart memcached

acum Puteți verifica dacă Memcached ascultă și conexiunile IPv6 repetând comanda ss din secțiunea anterioară:

  • sudo ss -plunt

ar trebui să primiți ieșire ca următoarele:

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

porțiunile evidențiate ale ieșirii indică faptul că Memcached ascultă acum conexiunile TCP pe interfața IPv6 locală.

rețineți că, dacă doriți să dezactivați suportul IPv4 și să ascultați numai conexiunile IPv6, puteți elimina linia -l 127.0.0.1 din /etc/memcached.conf și reporniți serviciul folosind comanda systemctl.

Configurarea UDP

dacă doriți să utilizați Memcached cu Sockets UDP, puteți activa suportul UDP prin editarea fișierului de configurare /etc/memcached.conf.

deschideți /etc/memcached.conf folosindnano sau editorul preferat, apoi adăugați următoarea linie la sfârșitul fișierului:

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

dacă nu aveți nevoie de suport TCP, găsiți linia -p 11211 și schimbați-o la -p 0 pentru a dezactiva conexiunile TCP.

când ați terminat editarea fișierului, salvați-l și închideți-l introducând CTRL+O pentru a salva, apoi CTRL+X pentru a ieși.

apoi, reporniți serviciul Memcached cu comanda systemctl pentru a aplica modificările:

  • sudo systemctl restart memcached

verificați dacă Memcached ascultă conexiunile UDP folosind comanda ss -plunt din nou:

  • sudo ss -plunt

dacă ați dezactivat suportul TCP și aveți conexiuni IPv6 activate, atunci ar trebui să primiți ieșire ca următoarele:

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

rețineți că ieșirea dvs. poate fi diferită dacă aveți activate numai conexiunile IPv4 și dacă ați lăsat activate conexiunile TCP.

Configurarea soclurilor de domeniu Unix

dacă doriți să utilizați Memcached cu Sockets de domeniu Unix, puteți activa acest suport editând fișierul de configurare /etc/memcached.conf. Rețineți că, dacă configurați Memcached pentru a utiliza un soclu de domeniu Unix, Memcached va dezactiva TCP și UDP suport astfel încât să fie sigur că aplicațiile nu trebuie să se conecteze folosind aceste protocoale înainte de a activa suport socket.

deschideți /etc/memcached.conf folosindnano sau editorul preferat, apoi adăugați următoarele rânduri la sfârșitul fișierului:

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

steagul -a determină permisiunile pentru fișierul socket-ului. Asigurați-vă că utilizatorul care trebuie să se conecteze la Memcached face parte din grupul memcache de pe serverul dvs., altfel va primi un mesaj de refuzare a permisiunii atunci când încercați să accesați soclul.

apoi, reporniți serviciul Memcached cu comanda systemctl pentru a aplica modificările:

  • sudo systemctl restart memcached

verificați dacă Memcached ascultă conexiunile Socket de domeniu Unix utilizând comanda ss -lnx :

  • sudo ss -lnx | grep memcached

steagul -x limitează ieșirea ss pentru a afișa fișiere socket. Ar trebui să primiți ieșire ca următoarele:

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

acum că ați configurat setările de rețea Memcached, puteți trece la pasul următor din acest tutorial, care adaugă SASL pentru autentificare la Memcached.

Step 3 — adăugarea utilizatorilor autorizați

pentru a adăuga utilizatori autentificați la Serviciul Memcached, puteți utiliza simple Authentication and Security Layer (SASL), care este un cadru care decuplează procedurile de autentificare din protocoalele aplicației. Mai întâi veți adăuga suport pentru SASL pe serverul dvs., apoi veți configura un utilizator cu acreditări de autentificare. Cu totul în loc, puteți activa apoi SASL în fișierul de configurare Memcached și confirmați totul funcționează corect.

adăugarea unui utilizator autentificat

pentru a începe adăugarea suportului SASL, va trebui să instalați pachetul sasl2-bin, care conține programe administrative pentru baza de date a utilizatorului SASL. Acest instrument vă va permite să creați un utilizator sau Utilizatori autentificați. Rulați următoarea comandă pentru ao instala:

  • sudo apt install sasl2-bin

apoi, creați directorul și fișierul pe care Memcached le va verifica pentru setările de configurare SASL folosind comanda mkdir :

  • sudo mkdir -p /etc/sasl2

acum creați fișierul de configurare SASL folosind nano sau editorul preferat:

  • sudo nano /etc/sasl2/memcached.conf

adăugați următoarele rânduri:

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

în plus față de specificarea nivelului de logare, mech_list este setat la plain, care spune Memcached că ar trebui să utilizeze propriul fișier parolă și să verifice o parolă plaintext. Ultima linie pe care ați adăugat-o specifică calea către fișierul bazei de date utilizator pe care îl veți crea în continuare. Salvați și închideți fișierul când ați terminat.

acum veți crea o bază de date SASL cu acreditări de utilizator. Veți utiliza comanda saslpasswd2 cu steagul -c pentru a crea o nouă intrare de utilizator în baza de date SASL. Utilizatorul va fi sammy aici, dar puteți înlocui acest nume cu propriul dvs. utilizator. Steagul -f specifică calea către baza de date, care va fi calea pe care ați setat-o /etc/sasl2/memcached.conf:

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

în cele din urmă, dați utilizatorului memcache și grupului proprietatea asupra bazei de date SASL cu următoarea comandă chown :

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

acum aveți o configurație SASL pe care Memcached o poate utiliza pentru autentificare. În secțiunea următoare veți confirma că Memcached rulează mai întâi cu setările implicite, apoi reconfigurați-l și verificați dacă funcționează cu autentificarea SASL.

Configurarea suportului SASL

putem testa mai întâi conectivitatea instanței noastre Memcached cu comanda memcstat. Această verificare ne va ajuta să stabilim că Memcached rulează și este configurat corect înainte ca SASL și autentificarea utilizatorului să fie activate. După ce vom face modificări la fișierele noastre de configurare, vom rula din nou comanda pentru a verifica ieșirea diferită.

pentru a verifica dacă Memcached este în funcțiune utilizând comanda memcstat, tastați următoarele:

  • memcstat --servers="127.0.0.1"

dacă utilizați IPv6, înlocuiți ::1 în locul adresei IPv4 127.0.0.1. Dacă utilizați un soclu de domeniu Unix, utilizați calea către soclu în locul adresei IP, de exemplu --servers=/var/run/memcached/memached.sock.

când executați comanda memcstat și conectați-vă la Memcached cu succes, ar trebui să primiți ieșire ca următoarele:

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

Notă: Dacă utilizați Memcached cu suport UDP, comanda memcstat nu se va putea conecta la portul UDP. Puteți utiliza următoarea comandă netcat pentru a verifica conectivitatea:

  • nc -u 127.0.0.1 11211 -vz

dacă Memcached răspunde, ar trebui să primiți ieșire ca următoarele:

Output
Connection to 127.0.0.1 11211 port succeeded!

dacă utilizați Memcached cu IPv6 și UDP, comanda ar trebui să fie următoarea:

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

acum Puteți trece la activarea SASL. Pentru aceasta, adăugați parametrul -Sla /etc/memcached.conf. Deschideți din nou fișierul cu nano sau editorul preferat:

  • sudo nano /etc/memcached.conf

în partea de jos a fișierului, adăugați următoarele:

/etc/memcached.conf
. . .-S

apoi, găsiți și decomentați opțiunea -vv, care va oferi o ieșire detaliată la /var/log/memcached. Linia necomentată ar trebui să arate astfel:

/etc/memcached.conf
. . .-vv

Salvați și închideți fișierul.

acum reporniți serviciul Memcached folosind următoarea comandă systemctl :

  • sudo systemctl restart memcached

apoi, verificați jurnalele journalctl pentru Memcached pentru a vă asigura că suportul SASL este activat:

  • sudo journalctl -u memcached |grep SASL

ar trebui să primiți o linie de ieșire ca următoarea, indicând faptul că suportul SASL a fost inițializat:

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

acum Puteți verifica conectivitatea la Memcached din nou. Cu suportul SASL în loc și inițializat, următoarea comandă memcstat ar trebui să eșueze fără acreditări de autentificare valide:

  • memcstat --servers="127.0.0.1"

comanda nu trebuie să producă ieșire. Tastați următoarea comandă shell pentru a verifica starea acesteia:

  • echo $?

$? va returna întotdeauna codul de ieșire al ultimei comenzi care a ieșit. De obicei, orice altceva în afară de 0 indică eșecul procesului. În acest caz, ar trebui să primiți o stare de ieșire de 1, ceea ce indică faptul că comanda memcstat a eșuat.

rularea memcstat din nou, de data aceasta cu un nume de utilizator și o parolă va confirma dacă procesul de autentificare a funcționat sau nu. Rulați următoarea comandă cu acreditările substituite în locul valorilor sammy și your_password ‘ dacă ați utilizat acreditări diferite:

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

ar trebui să primiți ieșire ca următoarele:

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

Memcached este acum configurat și rulează cu suport SASL și autentificarea utilizatorului.

Step 4 — permiterea accesului prin rețeaua privată (opțional)

în mod implicit Memcached este configurat doar pentru a asculta pe loopback locală (127.0.0.1) interfață, care protejează interfața Memcached de expunerea la părți din afara. Cu toate acestea, pot exista cazuri în care va trebui să permiteți accesul de la alte servere. În acest caz, puteți ajusta setările de configurare pentru a lega Memcached la o interfață de rețea privată.

notă: Vom acoperi modul de configurare a setărilor firewall-ului folosind UFW în această secțiune, dar este posibil să utilizați și firewall-uri Cloud DigitalOcean pentru a crea aceste setări. Pentru mai multe informații despre configurarea firewall-urilor DigitalOcean Cloud, consultați Introducerea noastră în firewall-urile DigitalOcean Cloud. Pentru a afla mai multe despre cum să limitați traficul de intrare la anumite mașini, consultați secțiunea din acest tutorial despre aplicarea regulilor firewall folosind etichete și nume de server și discuția noastră despre etichete firewall.

limitarea accesului IP cu firewall-uri

înainte de a ajusta setările de configurare, este o idee bună să configurați reguli firewall pentru a limita mașinile care se pot conecta la serverul Memcached. Mai întâi va trebui să înregistrați adresa IP privată a oricărei mașini pe care doriți să o utilizați pentru a vă conecta la Memcached. Odată ce aveți adresa IP privată (sau adresele), veți adăuga o regulă de firewall explicită pentru a permite aparatului să acceseze Memcached.

dacă utilizați paravanul de protecție UFW, puteți limita accesul la instanța Memcached tastând următoarele pe serverul Memcached:

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

dacă mai multe sisteme accesează Memcached prin rețeaua privată, asigurați-vă că adăugați reguli suplimentare ufw pentru fiecare mașină folosind regula de mai sus ca șablon.

puteți afla mai multe despre firewall-urile UFW citind ghidul nostru UFW essentials.

cu aceste modificări în loc, puteți ajusta serviciul Memcached pentru a lega la interfața de rețea privată a serverului.

legarea Memcached la interfața de rețea privată

acum că firewall-ul dvs. este în vigoare, puteți ajusta configurația Memcached pentru a se lega la interfața de rețea privată a serverului dvs. în loc de 127.0.0.1.

mai întâi, găsiți interfața de rețea privată pentru serverul Memcached utilizând următoarea comandă ip

  • ip -brief address show

în funcție de configurația rețelei serverului dvs., ieșirea poate fi diferită de următorul exemplu:

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

în acest exemplu, interfețele de rețea sunt identificate prin numele lor eth0 și eth1. Adresele IPv4 evidențiate pe linia eth0 sunt adresele IP publice pentru server.

adresa evidențiată 10.136.32.212 de pe linia eth1 este adresa IPv4 privată pentru server, iar adresa fe80::2cee:92ff:fe21:8bc4 este adresa privată IPv6. Adresele IP vor fi diferite, dar se vor încadra întotdeauna în următoarele intervale pe baza specificației RFC 1918):

  • 10.0.0.0 la 10.255.255.255(prefix 10/8)
  • 172.16.0.0 la 172.31.255.255(prefix 172.16/12)
  • 192.168.0.0 la 192.168.255.255 (192.168/16 prefix)

după ce ați găsit adresa IP privată sau adresele serverului dvs., deschideți din nou fișierul /etc/memcached.conf folosind nano sau editorul preferat:

  • sudo nano /etc/memcached.conf

găsiți linia -l 127.0.0.1 pe care ați verificat-o sau ați modificat-o mai devreme și schimbați adresa pentru a se potrivi cu interfața de rețea privată a serverului dvs.:

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

dacă doriți ca Memcached să asculte pe mai multe adrese, adăugați o altă linie similară pentru fiecare adresă, fie IPv4, fie IPv6 folosind formatul -l memcached_servers_private_IP.

Salvați și închideți fișierul când ați terminat.

apoi, reporniți serviciul Memcached:

  • sudo systemctl restart memcached

verificați noile setări cu ss pentru a confirma modificarea:

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

testați conectivitatea de la clientul dvs. extern pentru a vă asigura că puteți ajunge în continuare la serviciu. Este o idee bună să verificați și accesul de la un client neautorizat (încercați să vă conectați fără utilizator și parolă) pentru a vă asigura că autentificarea SASL funcționează conform așteptărilor. De asemenea, este o idee bună să încercați să vă conectați la Memcached de pe un alt server care nu are voie să se conecteze pentru a verifica dacă regulile firewall-ului pe care le-ați creat sunt eficiente.

concluzie

în acest tutorial ați explorat cum să configurați Memcached cu prize de domeniu IPv4, IPv6, TCP, UDP și Unix. De asemenea, ați învățat cum să vă securizați serverul Memcached activând autentificarea SASL. În cele din urmă, ați învățat cum să legați Memcached de interfața de rețea locală sau privată și cum să configurați regulile firewall pentru a limita accesul la Memcached.

pentru a afla mai multe despre Memcached, consultați documentația proiectului.

Write a Comment

Adresa ta de email nu va fi publicată.