So installieren und sichern Sie Memcached unter CentOS 7

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 und installieren Sie es:

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

Installieren von Memcached aus offiziellen Repositorys

Wenn Sie Memcached noch nicht auf Ihrem Server installiert haben, können Sie es über die offiziellen CentOS-Repositorys installieren. Stellen Sie zunächst sicher, dass Ihr lokaler Paketindex aktualisiert ist:

sudo yum update

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

sudo yum install memcached

Wir können auch + libmemcached + installieren, eine Bibliothek, die verschiedene Tools für die Arbeit mit Ihrem Memcached-Server bietet:

sudo yum install libmemcached

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.

Sichern der Konfigurationseinstellungen im Speicher

Um sicherzustellen, dass unsere Memcached-Instanz die lokale Schnittstelle "+ 127.0.0.1 " überwacht, ändern wir die Variable " OPTIONS " in der Konfigurationsdatei unter " / etc / sysconfig / memcached +". Wir werden auch den UDP-Listener deaktivieren. Beide Aktionen schützen unseren Server vor Denial-of-Service-Angriffen.

Sie können + / etc / sysconfig / memcached + mit + vi + öffnen:

sudo vi /etc/sysconfig/memcached

Suchen Sie die Variable + OPTIONS +, die anfangs so aussieht:

/ etc / sysconfig / memcached

. . .
OPTIONS=""

Durch die Bindung an unsere lokale Netzwerkschnittstelle wird der Datenverkehr auf Clients auf demselben Computer eingeschränkt. Wir werden dies tun, indem wir "+ -l 127.0.0.1 " zu unserer " OPTIONS +" - Variablen hinzufügen. Dies kann für bestimmte Umgebungen zu restriktiv sein, kann jedoch als Sicherheitsmaßnahme einen guten Ausgangspunkt darstellen.

Da das UDP-Protokoll für Denial-of-Service-Angriffe viel effektiver ist als TCP, können wir auch den UDP-Listener deaktivieren. Dazu fügen wir den Parameter "+ -U 0 " zu unserer Variablen " OPTIONS +" hinzu. Die vollständige Datei sollte folgendermaßen aussehen:

/ etc / sysconfig / memcached

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

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
. . .
       0      0 :11211         0.0.0.0:*               LISTEN      2383/
. . .

Dies bestätigt, dass "+ memcached " nur über TCP an die Adresse " 127.0.0.1 +" gebunden ist.

Autorisierte Benutzer hinzufügen

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 Befehl + memstat + 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 ausgeführt wird:

memstat --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 können wir den Parameter "+ -S " zu unserer Variablen " OPTIONS " in " / etc / sysconfig / memcached +" hinzufügen, wodurch SASL aktiviert wird. Öffne die Datei erneut:

sudo vi /etc/sysconfig/memcached

Wir werden die Parameter + -S + und + -vv + zu unserer Variablen + OPTIONS + hinzufügen. Die Option + -vv + liefert eine ausführliche Ausgabe an + / var / log / memcached +, was uns beim Debuggen hilft. Fügen Sie diese Optionen der Variablen "+ OPTIONS +" wie folgt hinzu:

/ etc / sysconfig / memcached

. . .
OPTIONS=""

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 05 18:16:11 memcached-server memcached[3846]: Initialized SASL.
. . .

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

memstat --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 zuletzt beendeten Befehls zurück. In der Regel weist etwas anderes als "+ 0 " auf einen Prozessfehler hin. In diesem Fall sollte der Exit-Status " 1 " angezeigt werden, der besagt, dass der Befehl " memstat +" fehlgeschlagen ist.

Hinzufügen eines authentifizierten Benutzers

Jetzt können wir zwei Pakete herunterladen, mit denen wir mit der Cyrus SASL-Bibliothek und ihren Authentifizierungsmechanismen arbeiten können, einschließlich Plugins, die PLAIN-Authentifizierungsschemata unterstützen. Mit diesen Paketen "+ cyrus-sasl-devel " und " cyrus-sasl-plain +" können wir unseren Benutzer erstellen und authentifizieren. Installieren Sie die Pakete, indem Sie Folgendes eingeben:

sudo yum install cyrus-sasl-devel cyrus-sasl-plain

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

sudo mkdir -p /etc/sasl2
sudo vi /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 wir "+ mech_list " auf " plain +", was Memcached mitteilt, dass es eine eigene Kennwortdatei verwenden und ein Klartextkennwort überprüfen soll. 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 Befehl "+ saslpasswd2 " verwenden, um mit der Option " -c " einen neuen Eintrag für unseren Benutzer in unserer Datenbank zu erstellen. Unser Benutzer wird hier * sammy * sein, aber Sie können diesen Namen durch Ihren eigenen Benutzer ersetzen. Mit der Option " -f " geben wir den Pfad zu unserer Datenbank an, den wir in " /etc/sasl2/memcached.conf +" festgelegt haben:

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

Schließlich möchten wir dem Benutzer "+ memcached +" den Besitz über die SASL-Datenbank erteilen:

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

Starten Sie den Memcachedienst neu:

sudo systemctl restart memcached

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

memstat --servers="127.0.0.1" --username= --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.

Zugriff über das private Netzwerk zulassen

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.

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. Wenn Sie die Voraussetzungen erfüllt und FirewallD auf Ihrem Server installiert haben und keine Verbindung mit Memcached von einem anderen Host aus * planen *, müssen Sie Ihre Firewall-Regeln nicht anpassen. Ihre eigenständige Memcached-Instanz sollte dank der zuvor definierten Variablen "+ OPTIONS " " 127.0.0.1 " abhören und daher keine Bedenken hinsichtlich des eingehenden Datenverkehrs haben. Wenn Sie jedoch den Zugriff anderer Hosts auf Ihren Memcached-Server zulassen möchten, müssen Sie die Firewall-Einstellungen mit dem Befehl ` firewall-cmd +` ändern.

Beginnen Sie mit dem Hinzufügen einer dedizierten Memcached Zone zu Ihrer + firewalld + -Richtlinie:

sudo firewall-cmd --permanent --new-zone=memcached

Geben Sie dann an, welcher Port geöffnet bleiben soll. Memcached verwendet standardmäßig den Port "+ 11211 +":

sudo firewall-cmd --permanent --zone=memcached --add-port=11211/tcp

Geben Sie als Nächstes die privaten IP-Adressen an, die auf Memcached zugreifen dürfen sollen. Dazu müssen Sie die private IP-Adresse Ihres * Client-Servers * kennen:

sudo firewall-cmd --permanent --zone=memcached --add-source=

Laden Sie die Firewall neu, um sicherzustellen, dass die neuen Regeln wirksam werden:

sudo firewall-cmd --reload

Pakete von der IP-Adresse Ihres Clients sollten nun gemäß den Regeln in der dedizierten Memcached Zone verarbeitet werden. Alle anderen Verbindungen werden von der Standardzone "+ public +" verarbeitet.

Nach diesen Änderungen können wir die erforderlichen Konfigurationsänderungen an unserem Memcached-Dienst vornehmen und ihn an die private Netzwerkschnittstelle unseres Servers binden.

Binding Memcached to the Private Network Interface

Der erste Schritt beim Binden an die private Netzwerkschnittstelle unseres Servers besteht darin, die zuvor festgelegte Variable "+ OPTIONS +" zu ändern.

Wir können + / etc / sysconfig / memcached + erneut öffnen, indem wir Folgendes eingeben:

sudo vi /etc/sysconfig/memcached

Suchen Sie im Inneren die Variable "+ OPTIONS ". Wir können jetzt " -l 127.0.0.1 +" ändern, um die private IP-Adresse unseres Memcached-Servers wiederzugeben:

/ etc / sysconfig / memcached

. . .
OPTIONS="-l  -U 0 -S -vv"

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

Starten Sie den Memcachedienst erneut:

sudo systemctl restart memcached

Überprüfen Sie Ihre neuen Einstellungen mit + netstat +, 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
. . .
       0      0 :11211         0.0.0.0:*               LISTEN      2383/
. . .

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 in der project documentation. Weitere Informationen zum Arbeiten mit Memcached finden Sie in unserem Tutorial unter How To Installieren und Verwenden von Memcache unter Ubuntu 14.04.