So installieren und sichern Sie Memcached unter Ubuntu 16.04

Einführung

Memory Object Caching-Systeme wie Memcached können die Leistung der Backend-Datenbank optimieren, indem sie Informationen vorübergehend im Speicher speichern und häufig oder kürzlich angeforderte Datensätze beibehalten. Auf diese Weise reduzieren sie die Anzahl der direkten Anfragen an Ihre Datenbanken.

Da Systeme wie Memcached bei falscher Konfiguration zu Denial-of-Service-Angriffen beitragen können, ist es wichtig, Ihre Memcached-Server zu schützen. In diesem Handbuch wird erläutert, wie Sie Ihren Memcached-Server schützen, indem Sie Ihre Installation an eine lokale oder private Netzwerkschnittstelle binden und einen autorisierten Benutzer für Ihre Memcached-Instanz erstellen.

Voraussetzungen

In diesem Lernprogramm wird davon ausgegangen, dass Sie einen Server mit einem Benutzer ohne Rootberechtigung und einer grundlegenden Firewall eingerichtet haben. Ist dies nicht der Fall, richten Sie Folgendes ein:

Wenn diese Voraussetzungen erfüllt sind, können Sie Ihren Memcached-Server installieren und sichern.

[[Schritt-1 - Installieren von Memcached aus den offiziellen Repositorys]] == Schritt 1 - Installieren von Memcached aus den offiziellen Repositorys

Wenn Sie Memcached noch nicht auf Ihrem Server installiert haben, können Sie es von den offiziellen Ubuntu-Repositories installieren. Stellen Sie zunächst sicher, dass Ihr lokaler Paketindex aktualisiert ist:

sudo apt-get update

Installieren Sie als Nächstes das offizielle Paket wie folgt:

sudo apt-get install memcached

Wir können auchlibmemcached-tools installieren, eine Bibliothek, die verschiedene Tools für die Arbeit mit Ihrem Memcached-Server bereitstellt:

sudo apt-get install libmemcached-tools

Memcached sollte jetzt als Dienst auf Ihrem Server installiert werden, zusammen mit Tools, mit denen Sie die Konnektivität testen können. Wir können jetzt mit dem Sichern der Konfigurationseinstellungen fortfahren.

[[Schritt 2 - Sichern der gespeicherten Konfigurationseinstellungen]] == Schritt 2 - Sichern der gespeicherten Konfigurationseinstellungen

Um sicherzustellen, dass unsere Memcached-Instanz die lokale Schnittstelle127.0.0.1 überwacht, überprüfen wir die Standardeinstellung in der Konfigurationsdatei unter/etc/memcached.conf. In der aktuellen Version von Memcached, die mit Ubuntu und Debian geliefert wird, ist der Parameter-lauf die lokale Schnittstelle eingestellt, wodurch Denial-of-Service-Angriffe des Netzwerks verhindert werden. Wir können diese Einstellung überprüfen, um sicherzustellen, dass sie korrekt eingestellt ist.

Sie können/etc/memcached.conf mitnano öffnen:

sudo nano /etc/memcached.conf

Suchen Sie die folgende Zeile in der Datei, um die Schnittstelleneinstellung zu überprüfen:

/etc/memcached.conf

. . .
-l 127.0.0.1

Wenn Sie die Standardeinstellung von-l 127.0.0.1 sehen, müssen Sie diese Zeile nicht ändern. Wenn Sie diese Einstellung so ändern, dass sie offener ist, ist es auch eine gute Idee, UDP zu deaktivieren, da es mit größerer Wahrscheinlichkeit bei Denial-of-Service-Angriffen ausgenutzt wird. Fügen Sie zum Deaktivieren von UDP (ohne Auswirkungen auf TCP) die folgende Option am Ende dieser Datei hinzu:

/etc/memcached.conf

. . .
-U 0

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Starten Sie Ihren Memcachedienst neu, um Ihre Änderungen zu übernehmen:

sudo systemctl restart memcached

Stellen Sie sicher, dass Memcached derzeit an die lokale Schnittstelle gebunden ist und nur auf TCP-Verbindungen wartet, indem Sie Folgendes eingeben:

sudo netstat -plunt

Sie sollten die folgende Ausgabe sehen:

OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
. . .
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      2383/memcached
. . .

Dies bestätigt, dassmemcached nur mit TCP an die Adresse von127.0.0.1gebunden ist.

[[Schritt 3 - Hinzufügen autorisierter Benutzer]] == Schritt 3 - Hinzufügen autorisierter Benutzer

Um Ihrem Memcached-Dienst authentifizierte Benutzer hinzuzufügen, können Sie SASL (Simple Authentication and Security Layer) verwenden, ein Framework, das Authentifizierungsverfahren von Anwendungsprotokollen entkoppelt. Wir werden SASL in unserer Memcached-Konfigurationsdatei aktivieren und dann einen Benutzer mit Authentifizierungsdaten hinzufügen.

SASL-Unterstützung konfigurieren

Wir können zuerst die Konnektivität unserer Memcached-Instanz mit dem Befehlmemcstat testen. Auf diese Weise können wir feststellen, ob die SASL- und Benutzerauthentifizierung aktiviert ist, nachdem wir Änderungen an unseren Konfigurationsdateien vorgenommen haben.

Geben Sie Folgendes ein, um zu überprüfen, ob Memcached aktiv ist:

memcstat --servers="127.0.0.1"

Die Ausgabe sollte folgendermaßen aussehen:

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

Jetzt können wir SASL aktivieren. Zuerst fügen wir den Parameter-S zu/etc/memcached.conf hinzu. Öffne die Datei erneut:

sudo nano /etc/memcached.conf

Fügen Sie am Ende der Datei Folgendes hinzu:

/etc/memcached.conf

. . .
-S

Suchen und kommentieren Sie als Nächstes die Option-vv, mit der/var/log/memcached ausführlich ausgegeben wird. Die unkommentierte Zeile sollte folgendermaßen aussehen:

/etc/memcached.conf

. . .
-vv

Speichern und schließen Sie die Datei.

Starten Sie den Memcachedienst neu:

sudo systemctl restart memcached

Als Nächstes können wir uns die Protokolle ansehen, um sicherzustellen, dass die SASL-Unterstützung aktiviert wurde:

sudo journalctl -u memcached

In der folgenden Zeile sollte angezeigt werden, dass die SASL-Unterstützung initialisiert wurde:

Output. . .
Mar 02 22:03:58 memcached systemd-memcached-wrapper[2760]: Initialized SASL.
. . .

Die Konnektivität kann erneut überprüft werden. Da SASL jedoch initialisiert wurde, sollte dieser Befehl ohne Authentifizierung fehlschlagen:

memcstat --servers="127.0.0.1"

Dieser Befehl sollte keine Ausgabe erzeugen. Wir können Folgendes eingeben, um den Status zu überprüfen:

echo $?

$? gibt immer den Exit-Code des letzten Befehls zurück, der beendet wurde. In der Regel weist alles außer0 auf einen Prozessfehler hin. In diesem Fall sollte ein Exit-Status von1 angezeigt werden, der besagt, dass der Befehlmemcstat fehlgeschlagen ist.

Hinzufügen eines authentifizierten Benutzers

Jetzt können wirsasl2-bin herunterladen, ein Paket, das Verwaltungsprogramme für die SASL-Benutzerdatenbank enthält. Auf diese Weise können wir unseren authentifizierten Benutzer erstellen:

sudo apt-get install sasl2-bin

Als nächstes erstellen wir das Verzeichnis und die Datei, die Memcached auf seine SASL-Konfigurationseinstellungen überprüft:

sudo mkdir -p /etc/sasl2
sudo nano /etc/sasl2/memcached.conf

Fügen Sie der SASL-Konfigurationsdatei Folgendes hinzu:

/etc/sasl2/memcached.conf

mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2

Zusätzlich zur Angabe unserer Protokollierungsstufe setzen wirmech_list aufplain, wodurch Memcached angewiesen wird, eine eigene Kennwortdatei zu verwenden und ein Klartextkennwort zu überprüfen. Wir werden auch den Pfad zu der Benutzerdatenbankdatei angeben, die wir als nächstes erstellen werden. Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Jetzt erstellen wir eine SASL-Datenbank mit unseren Benutzeranmeldeinformationen. Wir werden den Befehlsaslpasswd2 verwenden, um mit der Option-c einen neuen Eintrag für unseren Benutzer in unserer Datenbank vorzunehmen. Unser Benutzer wird hiersammy sein, aber Sie können diesen Namen durch Ihren eigenen Benutzer ersetzen. Mit der Option-f geben wir den Pfad zu unserer Datenbank an. Dies ist der Pfad, den wir in/etc/sasl2/memcached.conf festgelegt haben:

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

Schließlich geben wir den Benutzerbesitz vonmemcachefür die SASL-Datenbank an:

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

Starten Sie den Memcachedienst neu:

sudo systemctl restart memcached

Wenn Siememcstat erneut ausführen, wird bestätigt, ob unser Authentifizierungsprozess funktioniert hat oder nicht. Dieses Mal werden wir es mit unseren Authentifizierungsdaten ausführen:

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

Die Ausgabe sollte folgendermaßen aussehen:

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

Unser Memcached-Dienst wird jetzt erfolgreich mit SASL-Unterstützung und Benutzerauthentifizierung ausgeführt.

[[Schritt 4 - Ermöglichen des Zugriffs über das private Netzwerk optional]] == Schritt 4 - Zulassen des Zugriffs über das private Netzwerk (optional)

Wir haben erläutert, wie Sie Memcached so konfigurieren, dass es die lokale Schnittstelle überwacht. Dadurch können Denial-of-Service-Angriffe verhindert werden, indem die Memcached-Schnittstelle vor dem Kontakt mit Dritten geschützt wird. Es kann jedoch Fälle geben, in denen Sie den Zugriff von anderen Servern aus zulassen müssen. In diesem Fall können Sie Ihre Konfigurationseinstellungen anpassen, um Memcached an die private Netzwerkschnittstelle zu binden.

[.note] #Note: In diesem Abschnitt wird erläutert, wie Sie Firewall-Einstellungen mitUFW konfigurieren. Sie können diese Einstellungen jedoch auch mit DigitalOcean Cloud Firewalls erstellen. Weitere Informationen zum Einrichten von DigitalOcean Cloud Firewalls finden Sie in unserenIntroduction to DigitalOcean Cloud Firewalls. Weitere Informationen zum Begrenzen des eingehenden Datenverkehrs auf bestimmte Computer finden Sie im Abschnitt dieses Lernprogramms zuapplying firewall rules using tags and server names und in unserer Diskussion zufirewall tags.
#

Beschränken des IP-Zugriffs mit Firewalls

Bevor Sie Ihre Konfigurationseinstellungen anpassen, sollten Sie Firewall-Regeln einrichten, um die Computer einzuschränken, die eine Verbindung zu Ihrem Memcached-Server herstellen können. Sie müssen dieclient server’s private IP addresskennen, um Ihre Firewall-Regeln zu konfigurieren.

Wenn Sie die Firewall vonUFWverwenden, können Sie den Zugriff auf Ihre Memcached-Instanz einschränken, indem Sie Folgendes eingeben:

sudo ufw allow from client_servers_private_IP/32 to any port 11211

Weitere Informationen zu UFW-Firewalls finden Sie in unserenufw essentials guide.

Mit diesen Änderungen können Sie den Memcachedienst so anpassen, dass er an die private Netzwerkschnittstelle Ihres Servers bindet.

Binding Memcached to the Private Network Interface

Nachdem Ihre Firewall eingerichtet ist, können Sie die Memcached-Konfiguration so anpassen, dass sie anstelle von127.0.0.1 an die private Netzwerkschnittstelle Ihres Servers gebunden wird.

Wir können die/etc/memcached.conf-Datei erneut öffnen, indem wir Folgendes eingeben:

sudo nano /etc/memcached.conf

Suchen Sie darin die Zeile-l 127.0.0.1, die Sie zuvor überprüft oder geändert haben, und ändern Sie die Adresse so, dass sie mit der privaten Netzwerkschnittstelle Ihres Servers übereinstimmt:

/etc/memcached.conf

. . .
-l memcached_servers_private_IP
. . .

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Starten Sie als Nächstes den Memcachedienst neu:

sudo systemctl restart memcached

Überprüfen Sie Ihre neuen Einstellungen mitnetstat, um die Änderung zu bestätigen:

sudo netstat -plunt
OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address                              Foreign Address         State       PID/Program name
. . .
tcp        0      0 memcached_servers_private_IP:11211         0.0.0.0:*               LISTEN      2383/memcached
. . .

Testen Sie die Konnektivität Ihres externen Clients, um sicherzustellen, dass Sie den Dienst weiterhin erreichen können. Es ist empfehlenswert, auch den Zugriff eines nicht autorisierten Clients zu überprüfen, um sicherzustellen, dass Ihre Firewall-Regeln wirksam sind.

Fazit

In diesem Lernprogramm wird erläutert, wie Sie Ihren Memcached-Server schützen, indem Sie ihn für die Bindung an Ihre lokale oder private Netzwerkschnittstelle konfigurieren und die SASL-Authentifizierung aktivieren.

Weitere Informationen zu Memcached finden Sie unterproject documentation. Weitere Informationen zum Arbeiten mit Memcached finden Sie in unserem Tutorial zuHow To Install and Use Memcache on Ubuntu 14.04.