předchozí verze tohoto tutoriálu byla napsána Kathleen Juell.
- Úvod
- předpoklady
- Krok 1-Instalace Memcached
- Krok 2-Konfigurace Nastavení Sítě Memcached (Volitelné)
- konfigurace IPv6
- konfigurace UDP
- konfigurace unixových doménových soketů
- Krok 3 — Přidání oprávněných uživatelů
- přidání ověřeného uživatele
- konfigurace podpory SASL
- Krok 4-povolení přístupu přes soukromou síť (Volitelné)
- omezení přístupu IP pomocí firewallů
- vazba Memcached na privátní síťové rozhraní
- závěr
Úvod
systémy ukládání do mezipaměti objektů paměti, jako je Memcached, mohou optimalizovat výkon databáze backend dočasným ukládáním informací do paměti, zachováním často nebo nedávno požadovaných záznamů. Tímto způsobem snižují počet přímých požadavků na vaše databáze.
v této příručce se dozvíte, jak nainstalovat a nakonfigurovat server Memcached. Dozvíte se také, jak přidat ověřování k zabezpečení Memcached pomocí Simple Authentication and Security Layer (SASL). Nakonec se naučíte, jak vázat Memcached na místní nebo soukromé síťové rozhraní, abyste zajistili, že je přístupný pouze v důvěryhodných sítích ověřenými uživateli.
předpoklady
Chcete-li sledovat tento tutoriál, budete potřebovat:
- jeden server Ubuntu 20.04 s uživatelem sudo non-root a povolenou bránou firewall. Chcete-li to nastavit, můžete sledovat naše počáteční nastavení serveru pomocí tutoriálu Ubuntu 20.04.
s těmito předpoklady budete připraveni nainstalovat a zabezpečit svůj server Memcached.
pokud chcete experimentovat s instalací a konfigurací Memcached ve Vašem prohlížeči pomocí interaktivního terminálu, klikněte na tlačítko Spustit interaktivní terminál! tlačítko níže, abyste mohli začít.
Krok 1-Instalace Memcached
pokud ještě nemáte Memcached nainstalován na vašem serveru, můžete jej nainstalovat z oficiálních úložišť Ubuntu. Nejprve se ujistěte, že je index místního balíčku aktualizován pomocí následujícího příkazu:
- sudo apt update
dále nainstalujte oficiální balíček následujícím způsobem:
- sudo apt install memcached
můžete také nainstalovat libmemcached-tools
, což je balíček, který obsahuje různé nástroje, které můžete použít k prozkoumání, testování a správě serveru Memcached. Přidejte balíček na server pomocí následujícího příkazu:
- sudo apt install libmemcached-tools
Memcached by nyní měl být nainstalován jako služba na vašem serveru spolu s nástroji, které vám umožní otestovat jeho připojení.
Chcete-li spustit Memcached, spusťte následující příkaz systemctl
:
- sudo systemctl start memcached
nyní můžete přejít k zabezpečení nastavení konfigurace.
Krok 2-Konfigurace Nastavení Sítě Memcached (Volitelné)
pokud váš server Memcached potřebuje pouze podporu místních připojení IPv4 pomocí protokolu TCP, můžete tuto část přeskočit a pokračovat v kroku 3 v tomto tutoriálu. V opačném případě, pokud chcete nakonfigurovat Memcached pro použití UDP soketů, unixových doménových soketů nebo přidat podporu pro připojení IPv6, pokračujte příslušnými kroky v této části tutoriálu.
nejprve se ujistěte, že vaše instance Memcached poslouchá na lokálním rozhraní IPv4 loopback 127.0.0.1
. Aktuální verze Memcached, která je dodávána s Ubuntu a Debianem, má konfigurační parametr -l
nastavený na místní rozhraní, což znamená, že je nakonfigurován tak, aby přijímal pouze připojení ze serveru, na kterém je spuštěn Memcached.
ověřte, že Memcached je aktuálně vázán na lokální IPv4 127.0.0.1
rozhraní a poslouchejte pouze pro TCP připojení pomocí příkazu ss
:
- sudo ss -plunt
různé příznaky změní ss
výstup následujícími způsoby:
-
-p
přidá název procesu, který používá socket -
-l
omezuje výstup pouze na naslouchací sockety, na rozdíl od zahrnutí připojených socketů do jiných systémů -
-u
zahrnuje sokety založené na UDP na výstupu -
-n
zobrazuje číselné hodnoty na výstupu namísto lidsky čitelných jmen a hodnot -
-t
zahrnuje sokety založené na TCP na výstupu
měli byste obdržet výstup jako následující:
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)). . .
tento výstup potvrzuje, že memcached
je vázán na IPv4 loopback 127.0.0.1
adresu pouze pomocí protokolu TCP.
Nyní, když jste potvrdili, že Memcached je nakonfigurován tak, aby podporoval IPv4 pouze s připojením TCP, můžete upravit /etc/memcached.conf
a přidat podporu pro připojení UDP, Unix Domain Sockets nebo IPv6.
konfigurace IPv6
Chcete-li povolit připojení IPv6 k Memcached, otevřete soubor /etc/memcached.conf
pomocí nano
nebo preferovaného editoru:
- sudo nano /etc/memcached.conf
nejprve najděte v souboru následující řádek:
. . .-l 127.0.0.1
tento řádek je místo, kde je Memcached nakonfigurován pro poslech na lokálním rozhraní IPv4. Chcete-li přidat podporu IPv6, přidejte řádek obsahující adresu IPv6 local loopback (::1) takto:
. . .-l 127.0.0.1-l ::1
Uložte a zavřete soubor stisknutím CTRL+O
poté ENTER
pro uložení, poté CTRL+X
pro ukončení nano
. Poté restartujte Memcached pomocí příkazu systemctl
:
- sudo systemctl restart memcached
nyní můžete ověřit, že Memcached také poslouchá připojení IPv6 opakováním příkazu ss
z předchozí části:
- sudo ss -plunt
měli byste obdržet výstup jako následující:
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))
zvýrazněné části výstupu naznačují, že Memcached nyní poslouchá připojení TCP na lokálním rozhraní IPv6.
Všimněte si, že pokud chcete zakázat podporu IPv4 a poslouchat pouze připojení IPv6, můžete odebrat řádek -l 127.0.0.1
z /etc/memcached.conf
a restartovat službu pomocí příkazu systemctl
.
konfigurace UDP
pokud chcete používat Memcached s UDP sokety, můžete povolit podporu UDP úpravou konfiguračního souboru /etc/memcached.conf
.
otevřete /etc/memcached.conf
pomocí nano
nebo preferovaného editoru a na konec souboru přidejte následující řádek:
. . .-U 11211
pokud nepotřebujete podporu TCP, najděte řádek -p 11211
a změňte jej na -p 0
, abyste zakázali připojení TCP.
po dokončení úpravy souboru jej uložte a zavřete zadáním CTRL+O
pro uložení a poté CTRL+X
pro ukončení.
poté restartujte službu Memcached příkazem systemctl
a použijte změny:
- sudo systemctl restart memcached
ověřte, že Memcached znovu poslouchá připojení UDP pomocí příkazu ss -plunt
:
- sudo ss -plunt
pokud jste zakázali podporu TCP a máte povoleno připojení IPv6, měli byste obdržet výstup jako následující:
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)). . .
Všimněte si, že váš výstup se může lišit, pokud máte povolena pouze připojení IPv4 a pokud máte povolena připojení TCP.
konfigurace unixových doménových soketů
pokud chcete používat Memcached s unixovými doménovými sokety, můžete tuto podporu povolit úpravou konfiguračního souboru /etc/memcached.conf
. Všimněte si, že pokud nakonfigurujete Memcached používat Unix Domain Socket, Memcached zakáže TCP a UDP podporu, takže se ujistěte, že vaše aplikace nemusí připojit pomocí těchto protokolů před povolením podpory socket.
otevřete /etc/memcached.conf
pomocí nano
nebo preferovaného editoru a na konec souboru přidejte následující řádky:
. . .-s /var/run/memcached/memcached.sock-a 660
příznak -a
určuje oprávnění k souboru soketu. Ujistěte se, že uživatel, který se potřebuje připojit k Memcached, je součástí skupiny memcache
na vašem serveru, jinak obdrží při pokusu o přístup k soketu zprávu odepřeno oprávnění.
poté restartujte službu Memcached příkazem systemctl
a použijte změny:
- sudo systemctl restart memcached
ověřte, že Memcached poslouchá připojení unixových doménových soketů pomocí příkazu ss -lnx
:
- sudo ss -lnx | grep memcached
příznak -x
omezuje výstup ss
pro zobrazení souborů socket. Měli byste obdržet výstup jako následující:
Outputu_str LISTEN 0 1024 /var/run/memcached/memcached.sock 20234658 * 0
Nyní, když jste nakonfigurovali síťová nastavení Memcached, můžete v tomto tutoriálu pokračovat dalším krokem, kterým je přidání SASL pro autentizaci do Memcached.
Krok 3 — Přidání oprávněných uživatelů
Chcete-li přidat ověřené uživatele do služby Memcached, můžete použít Simple Authentication and Security Layer (SASL), což je rámec, který de-páry ověřovacích postupů z aplikačních protokolů. Nejprve na svůj server přidáte podporu SASL a poté nakonfigurujete uživatele s ověřovacími pověřeními. Se vším, co je na místě, pak můžete povolit SASL v konfiguračním souboru Memcached a potvrdit, že vše funguje správně.
přidání ověřeného uživatele
Chcete – li začít přidávat podporu SASL, musíte nainstalovat balíček sasl2-bin
, který obsahuje administrativní programy pro databázi uživatelů SASL. Tento nástroj vám umožní vytvořit ověřeného uživatele nebo uživatele. Spusťte následující příkaz a nainstalujte jej:
- sudo apt install sasl2-bin
dále vytvořte adresář a soubor, který Memcached zkontroluje nastavení konfigurace SASL pomocí příkazu mkdir
:
- sudo mkdir -p /etc/sasl2
nyní vytvořte konfigurační soubor SASL pomocí nano
nebo preferovaného editoru:
- sudo nano /etc/sasl2/memcached.conf
přidejte následující řádky:
log_level: 5mech_list: plainsasldb_path: /etc/sasl2/memcached-sasldb2
kromě zadání úrovně protokolování je mech_list
nastaven na plain
, což říká Memcached, že by měl použít svůj vlastní soubor s heslem a ověřit heslo prostého textu. Poslední řádek, který jste přidali, určuje cestu k souboru uživatelské databáze, který vytvoříte dále. Po dokončení uložte a zavřete soubor.
nyní vytvoříte databázi SASL s přihlašovacími údaji uživatele. Příkaz saslpasswd2
s příznakem -c
použijete k vytvoření nové položky uživatele v databázi SASL. Uživatel zde bude sammy, ale toto jméno můžete nahradit svým vlastním uživatelem. Příznak -f
určuje cestu k databázi, což bude cesta, kterou jste nastavili /etc/sasl2/memcached.conf
:
- sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy
nakonec dejte uživateli memcache a skupině vlastnictví nad databází SASL pomocí následujícího příkazu chown
:
- sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2
Nyní máte konfiguraci SASL, kterou může Memcached použít pro ověřování. V další části nejprve potvrdíte, že Memcached je spuštěn s výchozím nastavením, a poté jej znovu nakonfigurujte a ověřte, zda pracuje s ověřením SASL.
konfigurace podpory SASL
nejprve můžeme otestovat připojení naší instance Memcached pomocí příkazu memcstat
. Tato kontrola nám pomůže zjistit, že Memcached je spuštěn a správně nakonfigurován před povolením SASL a ověření uživatele. Poté, co provedeme změny v našich konfiguračních souborech, znovu spustíme příkaz, abychom zkontrolovali jiný výstup.
Chcete-li zkontrolovat, zda je Memcached spuštěn pomocí příkazu memcstat
, zadejte následující:
- memcstat --servers="127.0.0.1"
pokud používáte IPv6, nahraďte ::1
místo adresy IPv4 127.0.0.1
. Pokud používáte soket unixové domény, použijte cestu k soketu místo IP adresy, například --servers=/var/run/memcached/memached.sock
.
když spustíte příkaz memcstat
a úspěšně se připojíte k Memcached, měli byste obdržet výstup jako následující:
OutputServer: 127.0.0.1 (11211) pid: 2299875 uptime: 2020 time: 1632404590 version: 1.5.22 . . .
Poznámka: Pokud používáte Memcached s podporou UDP, příkaz memcstat
se nebude moci připojit k portu UDP. K ověření připojení můžete použít následující příkaz netcat
:
- nc -u 127.0.0.1 11211 -vz
pokud Memcached odpovídá, měli byste obdržet výstup jako následující:
OutputConnection to 127.0.0.1 11211 port succeeded!
pokud používáte Memcached s IPv6 a UDP, příkaz by měl být následující:
- nc -6 -u ::1 11211 -vz
nyní můžete přejít k povolení SASL. Chcete-li to provést, přidejte parametr -S
do /etc/memcached.conf
. Otevřete soubor znovu pomocí nano
nebo preferovaného editoru:
- sudo nano /etc/memcached.conf
v dolní části souboru přidejte následující:
. . .-S
dále najděte a odkomentujte volbu -vv
, která poskytne podrobný výstup na /var/log/memcached
. Uncommented řádek by měl vypadat takto:
. . .-vv
Uložte a zavřete soubor.
nyní restartujte službu Memcached pomocí následujícího příkazu systemctl
:
- sudo systemctl restart memcached
dále zkontrolujte protokoly journalctl
pro Memcached, abyste se ujistili, že je povolena podpora SASL:
- sudo journalctl -u memcached |grep SASL
měli byste obdržet řádek výstupu, jako je následující, což znamená, že podpora SASL byla inicializována:
OutputSep 23 17:00:55 memcached systemd-memcached-wrapper: Initialized SASL.
nyní můžete znovu zkontrolovat připojení k Memcached. S podporou SASL a inicializací by následující příkaz memcstat
měl selhat bez platných přihlašovacích údajů:
- memcstat --servers="127.0.0.1"
příkaz by neměl produkovat výstup. Zadejte následující příkaz shellu a zkontrolujte jeho stav:
- echo $?
$?
vždy vrátí výstupní kód posledního příkazu, který opustil. Typicky cokoli kromě 0
označuje selhání procesu. V takovém případě byste měli obdržet Stav ukončení 1
, což znamená, že příkaz memcstat
selhal.
spuštěno memcstat
tentokrát s uživatelským jménem a heslem potvrdí, zda proces ověřování fungoval nebo ne. Spusťte následující příkaz s vloženými přihlašovacími údaji namísto hodnot sammy
a your_password, pokud jste použili jiná pověření:
- memcstat --servers="127.0.0.1" --username=sammy --password=your_password
měli byste obdržet výstup jako následující:
OutputServer: 127.0.0.1 (11211) pid: 3831 uptime: 9 time: 1520028517 version: 1.4.25 . . .
vaše služba Memcached je nyní nakonfigurována a spuštěna s podporou SASL a ověřením uživatele.
Krok 4-povolení přístupu přes soukromou síť (Volitelné)
ve výchozím nastavení je Memcached nakonfigurován pouze pro poslech na místním Rozhraní loopback (127.0.0.1
), které chrání rozhraní Memcached před vystavením vnějším stranám. Mohou však existovat případy, kdy budete muset povolit přístup z jiných serverů. V takovém případě můžete upravit nastavení konfigurace tak, aby navázalo Memcached na soukromé síťové rozhraní.
Poznámka: V této části se budeme zabývat tím, jak nakonfigurovat nastavení brány firewall pomocí UFW, ale k vytvoření těchto nastavení je také možné použít brány firewall DigitalOcean Cloud. Další informace o nastavení firewallů DigitalOcean Cloud naleznete v našem úvodu do firewallů DigitalOcean Cloud. Chcete-li se dozvědět více o tom, jak omezit příchozí provoz na konkrétní stroje, podívejte se na část tohoto tutoriálu o použití pravidel brány firewall pomocí značek a názvů serverů a naši diskusi o štítcích brány firewall.
omezení přístupu IP pomocí firewallů
než upravíte nastavení konfigurace, je vhodné nastavit pravidla brány firewall, která omezí počítače, které se mohou připojit k vašemu serveru Memcached. Nejprve budete muset zaznamenat Soukromou IP adresu jakéhokoli počítače, který chcete použít k připojení k Memcached. Jakmile budete mít soukromou IP adresu (nebo adresy), přidáte explicitní pravidlo brány firewall, které umožní počítači přístup k Memcached.
pokud používáte bránu firewall UFW, můžete omezit přístup k instanci Memcached zadáním následujícího na serveru Memcached:
- sudo ufw allow from client_system_private_IP/32 to any port 11211
pokud více než jeden systém přistupuje k Memcached prostřednictvím privátní sítě, nezapomeňte přidat další pravidla ufw
pro každý počítač pomocí výše uvedeného pravidla jako šablony.
více o firewallech UFW se dozvíte v našem průvodci UFW essentials.
s těmito změnami můžete upravit službu Memcached tak, aby se vázala na soukromé síťové rozhraní vašeho serveru.
vazba Memcached na privátní síťové rozhraní
Nyní, když je váš firewall na svém místě, můžete upravit konfiguraci Memcached tak, aby se vázala na soukromé síťové rozhraní vašeho serveru místo 127.0.0.1
.
nejprve vyhledejte soukromé síťové rozhraní pro váš server Memcached pomocí následujícího příkazu ip
- ip -brief address show
v závislosti na konfiguraci sítě vašeho serveru se výstup může lišit od následujícího příkladu:
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
v tomto příkladu jsou síťová rozhraní identifikována jejich názvy eth0
a eth1
. Zvýrazněné adresy IPv4 na řádku eth0
jsou veřejné adresy IP pro server.
zvýrazněná adresa 10.136.32.212
na řádku eth1
je soukromá Adresa IPv4 pro server a adresa fe80::2cee:92ff:fe21:8bc4
je soukromá adresa IPv6. Vaše IP adresy se budou lišit, ale vždy budou spadat do následujících rozsahů na základě specifikace RFC 1918):
-
10.0.0.0
do10.255.255.255
(předpona 10/8) -
172.16.0.0
to172.31.255.255
(předpona 172.16 / 12) -
192.168.0.0
až192.168.255.255
(192.Předpona 168/16)
Jakmile najdete soukromou IP adresu nebo adresy vašeho serveru, otevřete soubor /etc/memcached.conf
znovu pomocí nano
nebo preferovaného editoru:
- sudo nano /etc/memcached.conf
najděte řádek -l 127.0.0.1
, který jste dříve zkontrolovali nebo upravili, a změňte adresu tak, aby odpovídala soukromému síťovému rozhraní vašeho serveru:
. . .-l memcached_servers_private_IP. . .
pokud chcete mít Memcached poslouchat na více adresách, přidejte další podobný řádek pro každou adresu, buď IPv4 nebo IPv6 pomocí formátu -l memcached_servers_private_IP
.
Uložte a zavřete soubor po dokončení.
poté restartujte službu Memcached:
- sudo systemctl restart memcached
Zkontrolujte nové nastavení pomocí ss
a potvrďte změnu:
- 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)). . .
otestujte připojení od externího klienta, abyste se ujistili, že se ke službě stále můžete dostat. Je vhodné také zkontrolovat přístup od neautorizovaného klienta (zkuste se připojit bez uživatele a hesla), abyste se ujistili, že vaše ověřování SASL funguje podle očekávání. Je také dobré zkusit se připojit k Memcached z jiného serveru, který se nesmí připojit, aby se ověřilo, že pravidla brány firewall, která jste vytvořili, jsou účinná.
závěr
v tomto tutoriálu jste prozkoumali, jak konfigurovat Memcached pomocí soketů domén IPv4, IPv6, TCP, UDP a Unix. Také jste se naučili, jak zabezpečit Server Memcached povolením ověřování SASL. Nakonec jste se naučili, jak vázat Memcached na místní nebo soukromé síťové rozhraní a jak nakonfigurovat pravidla brány firewall pro omezení přístupu k Memcached.
Chcete-li se dozvědět více o Memcached, podívejte se na projektovou dokumentaci.