miten asentaa ja suojata Memcached Ubuntu 20.04

tämän opetusohjelman aiemman version on kirjoittanut Kathleen Juell.

Johdanto

Memcachedin kaltaiset Muistioobjektien välimuistijärjestelmät voivat optimoida taustatietokannan suorituskyvyn tallentamalla tietoja väliaikaisesti muistiin, säilyttämällä usein tai äskettäin pyydettyjä tietueita. Tällä tavoin ne vähentävät tietokantoihin kohdistuvien suorien pyyntöjen määrää.

tässä oppaassa kerrotaan, miten Memcached-palvelin asennetaan ja määritetään. Opit myös lisäämään todennuksen Memcachedin suojaamiseen käyttämällä yksinkertaista todennusta ja Suojauskerrosta (SASL). Lopuksi opit sitomaan Memcachedin paikalliseen tai yksityiseen verkkoliittymään varmistaaksesi, että se on käytettävissä vain luotetuissa verkoissa, todennettujen käyttäjien toimesta.

Edeltävät opinnot

tämän opetusohjelman noudattamiseen tarvitset:

  • yksi Ubuntu 20.04-palvelin, jossa on sudo-pääkäyttäjä ja palomuuri käytössä. Tämän perustamiseksi voit seurata alkuperäistä Palvelinasetustamme Ubuntu 20.04-opetusohjelmalla.

näiden edellytysten täyttyessä olet valmis asentamaan ja turvaamaan Memcached-palvelimesi.

Vaihtoehtoisesti, jos haluat kokeilla Memcachedin asentamista ja määrittämistä selaimessasi interaktiivisella päätteellä, Napsauta Launch an Interactive Terminal! alla oleva painike aloittaa.

Käynnistä interaktiivinen pääte!

Vaihe 1 — Memcachedin asentaminen

jos sinulla ei ole jo Memcachedia asennettuna palvelimeesi, voit asentaa sen Ubuntun virallisista arkistoista. Varmista ensin, että paikallinen pakkausindeksi päivitetään seuraavan komennon avulla:

  • sudo apt update

seuraava, asenna virallinen paketti seuraavasti:

  • sudo apt install memcached

voit myös asentaa libmemcached-tools, joka on paketti, joka sisältää erilaisia työkaluja, joilla voit tutkia, testata ja hallita Memcached-palvelinta. Lisää paketti palvelimeesi seuraavalla komennolla:

  • sudo apt install libmemcached-tools

Memcached pitäisi nyt asentaa palvelimena palvelimelle, sekä työkaluja, joiden avulla voit testata sen liitettävyyttä.

käynnistääksesi Memcachedin, suorita seuraava systemctl komento:

  • sudo systemctl start memcached

nyt voit siirtyä varmistamaan sen asetusasetukset.

Vaihe 2 — Memcached Network Settings-asetusten määrittäminen (valinnainen)

jos Memcached-palvelimesi tarvitsee tukea vain paikallisia IPv4-yhteyksiä TCP: llä, voit ohittaa tämän osion ja jatkaa vaiheeseen 3 Tässä opetusohjelmassa. Muussa tapauksessa, jos haluat määrittää Memcached käyttää UDP pistorasiat, Unix Domain pistorasiat, tai lisätä tukea IPv6 yhteydet, jatka asiaankuuluvat vaiheet tässä osassa opetusohjelma.

varmista ensin, että Memcached instanssi kuuntelee paikallista IPv4 loopback-käyttöliittymää 127.0.0.1. Ubuntun ja Debianin kanssa toimivassa Memcachedin nykyisessä versiossa on -l – konfiguraatioparametri, joka on asetettu paikalliseen käyttöliittymään, mikä tarkoittaa, että se on määritetty hyväksymään vain yhteydet palvelimelta, jossa Memcached on käynnissä.

varmista, että Memcached on tällä hetkellä sidottu paikalliseen IPv4 127.0.0.1 – liittymään ja kuuntelee vain TCP-yhteyksiä käyttämällä ss – komentoa:

  • sudo ss -plunt

eri liput muuttavat ss tuotosta seuraavilla tavoilla:

  • -p lisää sen prosessin nimen, joka käyttää pistorasiaa
  • -l rajoittaa ulostulon vain kuunteleviin pistorasioihin, sen sijaan että mukaan sisällytettäisiin myös kytketyt pistorasiat muihin järjestelmiin
  • -u sisältää UDP-pohjaiset pistorasiat ulostulossa
  • -n näyttää numeeriset arvot ulostulossa ihmisen luettavien nimien sijaan ja arvot
  • -t sisältää TCP-pohjaiset pistorasiat lähtö

sinun pitäisi saada lähtö kuten seuraavat:

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

tämä tuloste vahvistaa, että memcached on sidottu IPv4 loopback 127.0.0.1 – osoitteeseen käyttäen vain TCP-protokollaa.

nyt kun olet vahvistanut, että Memcached on määritetty tukemaan IPv4: ää vain TCP-yhteyksillä, voit muokata /etc/memcached.conf lisätäksesi tuen UDP: lle, Unix Domain Socketsille tai IPv6-yhteyksille.

IPv6

määrittäminen IPv6-yhteyksien mahdollistamiseksi Memcachediin, avaa /etc/memcached.conf – tiedosto nano – ohjelmalla tai haluamallasi muokkaimella:

  • sudo nano /etc/memcached.conf

etsi ensin tiedostosta seuraava rivi:

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

tällä rivillä Memcached on määritetty kuuntelemaan paikallista IPv4-rajapintaa. Voit lisätä IPv6-tuen lisäämällä rivin, joka sisältää IPv6: n paikallisen loopback-osoitteen (::1) näin:

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

Tallenna ja sulje tiedosto painamalla CTRL+O sitten ENTER tallentaaksesi, sitten CTRL+X poistuaksesi nano. Käynnistä Memcached uudelleen komennolla systemctl :

  • sudo systemctl restart memcached

Nyt voit varmistaa, että Memcached kuuntelee myös IPv6-yhteyksiä toistamalla ss – komennon edellisestä osiosta:

  • sudo ss -plunt

sinun tulee saada lähtö kuten seuraavat:

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

tulosteen korostetut osat osoittavat, että Memcached kuuntelee nyt TCP-yhteyksiä paikallisella IPv6-käyttöliittymällä.

huomaa, että jos haluat poistaa IPv4-tuen käytöstä ja kuunnella vain IPv6-yhteyksiä, voit poistaa -l 127.0.0.1 – rivin /etc/memcached.conf ja käynnistää palvelun uudelleen komennolla systemctl.

UDP: n määrittäminen

jos haluat käyttää Memcachedia UDP-pistorasioiden kanssa, voit ottaa UDP-tuen käyttöön muokkaamalla /etc/memcached.conf asetustiedostoa.

avaa /etc/memcached.conf käyttäen nano tai haluamaasi editoria, lisää tiedoston loppuun seuraava rivi:

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

jos et tarvitse TCP-tukea, etsi rivi -p 11211 ja vaihda se muotoon -p 0 TCP-yhteyksien poistamiseksi käytöstä.

kun olet muokannut tiedostoa, Tallenna ja sulje se kirjoittamalla CTRL+O tallentaaksesi ja sitten CTRL+X poistuaksesi.

Käynnistä seuraavaksi Memcached-palvelusi uudelleen komennolla systemctl, jolla voit soveltaa muutoksiasi:

  • sudo systemctl restart memcached

varmista, että Memcached kuuntelee UDP-yhteyksiä uudelleen komennolla ss -plunt :

  • sudo ss -plunt

jos olet poistanut TCP-tuen käytöstä ja IPv6-yhteydet käytössä, sinun pitäisi saada tuloste kuten seuraavat:

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

huomaa, että tulosteesi voi olla erilainen, jos sinulla on vain IPv4-yhteydet käytössä ja jos olet jättänyt TCP-yhteydet käyttöön.

Unix Domain Socketsin määrittäminen

jos haluat käyttää Memcachedia Unix Domain Socketsin kanssa, voit ottaa tämän tuen käyttöön muokkaamalla /etc/memcached.conf asetustiedostoa. Huomaa, että jos määrität Memcachedin käyttämään Unix-Toimialuepistorasiaa, Memcached poistaa TCP-ja UDP-tuen käytöstä, joten varmista, että sovelluksiasi ei tarvitse muodostaa yhteyttä näiden protokollien avulla ennen socket-tuen käyttöönottoa.

avaa /etc/memcached.conf käyttäen nano tai haluamaasi editoria, lisää tiedoston loppuun seuraavat rivit:

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

-a – lippu määrittää socket-tiedoston käyttöoikeudet. Varmista, että käyttäjä, joka tarvitsee yhteyden Memcachediin, on osa memcache – ryhmää palvelimellasi, muuten se saa luvan evätyn viestin yrittäessään käyttää pistorasiaa.

Käynnistä seuraavaksi Memcached-palvelusi uudelleen komennolla systemctl, jolla voit soveltaa muutoksiasi:

  • sudo systemctl restart memcached

varmista, että Memcached kuuntelee Unix Domain Socket-yhteyksiä ss -lnx – komennolla:

  • sudo ss -lnx | grep memcached

-x – lippu rajoittaa ss ulostulon socket-tiedostojen näyttämiseen. Sinun pitäisi saada lähtö kuten seuraavat:

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

nyt kun olet määrittänyt Memcachedin verkkoasetukset, voit edetä seuraavaan vaiheeseen tässä opetusohjelmassa, joka on SASL: n lisääminen Memcachediin todennusta varten.

Vaihe 3 — valtuutettujen käyttäjien lisääminen

todennettujen käyttäjien lisäämiseksi Memcached-palveluusi, voit käyttää yksinkertaista todennusta ja Suojauskerrosta (SASL), joka on kehys, joka poistaa parien todennusmenetelmät sovellusprotokollista. Ensin lisäät SASL: n tuen palvelimeesi ja sitten määrität käyttäjän, jolla on tunnistustiedot. Kun kaikki on paikoillaan, voit ottaa SASL: n käyttöön Memcachedin asetustiedoston sisällä ja vahvistaa, että kaikki toimii oikein.

todennetun käyttäjän lisääminen

SASL-tuen lisäämiseksi sinun on asennettava sasl2-bin – paketti, joka sisältää SASL-käyttäjätietokannan hallintaohjelmat. Tämän työkalun avulla voit luoda todennettu käyttäjä tai käyttäjät. Suorita seuraava komento asentaaksesi sen:

  • sudo apt install sasl2-bin

luo seuraavaksi kansio ja tiedosto, jonka Memcached tarkistaa SASL-asetusasetuksineen komennolla mkdir :

  • sudo mkdir -p /etc/sasl2

luo nyt SASL-asetustiedosto käyttäen nano tai haluamaasi muokkainta:

  • sudo nano /etc/sasl2/memcached.conf

lisää seuraavat rivit:

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

kirjaustason määrittelyn lisäksi mech_list on asetettu arvoon plain, mikä kertoo Memcachedille, että sen tulee käyttää omaa salasanatiedostoaan ja tarkistaa tavallinen salasana. Viimeinen lisäämäsi rivi määrittää seuraavaksi luotavan käyttäjän tietokantatiedoston polun. Tallenna ja sulje tiedosto, kun olet valmis.

nyt luot SASL-tietokannan käyttäjätunnuksineen. Luo uusi käyttäjämerkintä SASL-tietokantaan käyttämällä saslpasswd2 – komentoa, jossa on -c – lippu. Käyttäjä on tässä sammy, mutta voit korvata tämän nimen omalla käyttäjälläsi. Lippu -f määrittää tietokannan polun, joka on valitsemasi polku/etc/sasl2/memcached.conf:

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

lopuksi annetaan memcachen käyttäjän ja ryhmän omistusoikeus SASL-tietokantaan seuraavalla chown komennolla:

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

sinulla on nyt käytössä SASL-määritys, jota Memcached voi käyttää todennukseen. Seuraavassa osiossa vahvistat ensin, että Memcached on käynnissä sen oletusasetuksilla, ja määrität sen sitten uudelleen ja varmistat, että se toimii SASL-todennuksen kanssa.

SASL-tuen konfigurointi

voimme ensin testata Memcached-instanssin liitettävyyttä memcstat – komennolla. Tämä tarkistus auttaa meitä selvittämään, että Memcached on käynnissä ja määritetty oikein ennen SASL: n ja käyttäjän todennuksen käyttöönottoa. Kun olemme tehneet muutoksia asetustiedostoihimme, suoritamme komennon uudelleen tarkistaaksemme eri ulostulon.

tarkistaaksesi, että Memcached on toiminnassa komennolla memcstat, kirjoita seuraava:

  • memcstat --servers="127.0.0.1"

jos käytät IPv6: ta, korvaa ::1 IPv4 127.0.0.1 osoite. Jos käytät Unix Domain-liitäntää, käytä liittimeen johtavaa polkua IP-osoitteen sijasta, esimerkiksi --servers=/var/run/memcached/memached.sock.

kun suoritat memcstat – komennon ja muodostat yhteyden Memcachediin onnistuneesti, saat tulosteen kuten seuraavat:

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

Huomautus: Jos käytät Memcachedia UDP-tuella, memcstat – komento ei pysty muodostamaan yhteyttä UDP-porttiin. Voit käyttää seuraavaa netcat – komentoa liitettävyyden varmentamiseen:

  • nc -u 127.0.0.1 11211 -vz

jos Memcached vastaa, sinun pitäisi saada lähtö kuten seuraavat:

Output
Connection to 127.0.0.1 11211 port succeeded!

jos käytät Memcachedia IPv6: n ja UDP: n kanssa, komennon tulee olla seuraava:

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

nyt voit siirtyä SASL: n mahdollistamiseen. Tätä varten lisätään parametri -S arvoon /etc/memcached.conf. Avaa tiedosto ohjelmalla nano tai haluamasi muokkain uudelleen:

  • sudo nano /etc/memcached.conf

lisää tiedoston alareunaan seuraava:

/ etc / memcached.conf
. . .-S

seuraavaksi Etsi ja poista -vv – vaihtoehto, joka antaa monisanaisen tulosteen /var/log/memcached: lle. Kommentoimattoman rivin pitäisi näyttää tältä:

/ etc / memcached.conf
. . .-vv

Tallenna ja sulje tiedosto.

Käynnistä nyt Memcached-palvelu uudelleen seuraavalla systemctl komennolla:

  • sudo systemctl restart memcached

seuraava, tarkista journalctl lokit Memcached olla varma, että SASL tuki on käytössä:

  • sudo journalctl -u memcached |grep SASL

sinun pitäisi saada rivi lähtö kuten seuraava, osoittaa, että SASL tuki on alustettu:

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

Nyt voit tarkistaa yhteyden Memcachediin uudelleen. Kun SASL-tuki on käytössä ja alustettu, seuraavan memcstat – komennon tulee epäonnistua ilman kelvollisia tunnistetietoja:

  • memcstat --servers="127.0.0.1"

komento ei saa tuottaa tulosta. Kirjoita seuraava komentotulkki tarkistaaksesi sen tilan:

  • echo $?

$? palauttaa aina viimeisen poistuneen komennon poistumiskoodin. Tyypillisesti mikä tahansa muu kuin 0 viittaa prosessin epäonnistumiseen. Tällöin sinun tulee saada poistumistila 1, mikä osoittaa, että memcstat – komento epäonnistui.

ajetaan memcstat uudelleen, tällä kertaa käyttäjätunnuksella ja salasanalla vahvistetaan, toimiko tunnistautuminen vai ei. Suorita seuraava komento, jonka tunnistetiedot on korvattu sammy: n ja your_passwordin arvojen sijaan, jos olet käyttänyt eri tunnisteita:

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

sinun pitäisi saada lähtö kuten seuraavat:

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

Memcached-palvelusi on nyt määritetty ja käynnissä SASL-tuella ja käyttäjätunnistuksella.

Vaihe 4 — yksityisverkon käytön salliminen (valinnainen)

oletuksena Memcached on määritetty kuuntelemaan vain paikallista loopback (127.0.0.1) – rajapintaa, joka suojaa Memcached-rajapintaa ulkopuolisille altistumiselta. Saattaa kuitenkin olla tapauksia, joissa sinun täytyy sallia pääsy muilta palvelimilta. Tässä tapauksessa voit säätää määritysasetuksiasi sitomaan Memcachedin yksityiseen verkkoliittymään.

Huom.: Käsittelemme tässä osiossa palomuurin asetusten määrittämistä UFW: n avulla, mutta näiden asetusten luomiseen on myös mahdollista käyttää DigitalOcean Cloud-palomuureja. Lisätietoja DigitalOcean Cloud-palomuurien asennuksesta löytyy DigitalOcean Cloud-palomuurien esittelystä. Jos haluat lisätietoja siitä, miten rajoittaa saapuvan liikenteen tiettyihin koneisiin, tutustu tämän opetusohjelman osaan palomuurisääntöjen soveltamisesta tunnisteiden ja palvelinten nimien avulla ja keskustelustamme palomuuritunnisteista.

IP: n käytön rajoittaminen palomuureilla

ennen kuin asetusasetuksia voi säätää, on hyvä luoda palomuurisäännöt rajoittamaan niitä koneita, jotka voivat muodostaa yhteyden Memcached-palvelimeesi. Ensin sinun täytyy tallentaa yksityisen IP-osoitteen tahansa koneen, jonka haluat käyttää yhteyden Memcached. Kun sinulla on yksityinen IP-osoite (tai osoitteet), lisäät eksplisiittisen palomuurisäännön, jotta kone pääsee käsiksi Memcachediin.

jos käytät UFW-palomuuria, voit rajoittaa pääsyä Memcached-instanssiisi kirjoittamalla seuraavan Memcached-palvelimellesi:

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

jos useampi kuin yksi järjestelmä käyttää Memcachedia yksityisverkon kautta, muista lisätä lisää ufw sääntöjä jokaiselle koneelle käyttäen yllä olevaa sääntöä mallina.

UFW: n palomuureista saa lisätietoa lukemalla ufw essentials-oppaan.

näiden muutosten myötä voit säätää Memcached-palvelua sitoutumaan palvelimen yksityiseen verkkoliittymään.

sitova Memcached yksityiseen verkkoliittymään

nyt kun palomuurisi on käytössä, voit säätää Memcachedin asetuksia sitoutumaan palvelimesi yksityiseen verkkoliittymään 127.0.0.1sijaan.

etsi ensin oma verkkoliittymä Memcached-palvelimellesi käyttämällä seuraavaa ip komentoa

  • ip -brief address show

riippuen palvelimen verkkoasetuksista, tuloste voi olla erilainen kuin seuraava esimerkki:

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

tässä esimerkissä verkkoliitännät tunnistetaan niiden eth0 ja eth1 nimillä. Korostetut IPv4-osoitteet eth0 – rivillä ovat palvelimen julkisia IP-osoitteita.

10.136.32.212 osoite eth1 rivillä on palvelimen yksityinen IPv4-osoite ja fe80::2cee:92ff:fe21:8bc4 osoite on IPv6-osoite. IP-osoitteesi ovat erilaisia, mutta kuuluvat aina seuraaviin vaihteluväleihin RFC 1918-spesifikaation perusteella):

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

kun olet löytänyt palvelimesi yksityisen IP-osoitteen tai-osoitteet, avaa /etc/memcached.conf – tiedosto uudelleen käyttäen nano – tiedostoa tai haluamaasi muokkainta:

  • sudo nano /etc/memcached.conf

Etsi aiemmin tarkistamasi tai muokkaamasi rivi -l 127.0.0.1 ja muuta osoite vastaamaan palvelimen yksityistä verkkoliittymää:

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

jos haluat Memcachedin kuuntelevan useassa osoitteessa, lisää jokaiselle osoitteelle toinen samanlainen rivi, joko IPv4 tai IPv6 käyttäen -l memcached_servers_private_IP – muotoa.

Tallenna ja sulje tiedosto, kun olet valmis.

Käynnistä seuraavaksi Memcached-palvelu uudelleen:

  • sudo systemctl restart memcached

Tarkista uudet asetukset kohdasta ss vahvistaaksesi muutoksen:

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

Testaa yhteys ulkoiselta asiakkaaltasi varmistaaksesi, että voit edelleen tavoittaa palvelun. On hyvä tarkistaa pääsy myös ei-valtuutetulta asiakkaalta (kokeile yhdistää ilman käyttäjää ja salasanaa), jotta SASL-todennus toimii odotetusti. On myös hyvä idea yrittää yhdistää Memcached eri palvelimelta, joka ei ole sallittua muodostaa tarkistaa, että palomuurin säännöt loit ovat tehokkaita.

johtopäätös

tässä opetusohjelmassa selvitit, miten Memcached-asetukset voidaan määrittää IPv4 -, IPv6 -, TCP -, UDP-ja Unix-Domain-pistorasioilla. Opit myös, miten voit suojata Memcached-palvelimesi ottamalla käyttöön SASL-todennuksen. Vihdoin, opit sitomaan Memcached paikalliseen tai yksityiseen verkkoliittymään ja miten määrittää palomuurin sääntöjä rajoittaa pääsyä Memcached.

lisätietoja Memcachedista löytyy projektin dokumentaatiosta.

Write a Comment

Sähköpostiosoitettasi ei julkaista.