Memcached mit SASL auf Ubuntu 20.04 installieren und absichern
Memcached ist ein kostenloses, verteiltes In-Memory-Caching-System, das häufig genutzte Daten und Objekte – wie Datenbankabfragen, API-Antworten, Sitzungsinformationen oder Berechnungsergebnisse – im Arbeitsspeicher speichert. Dadurch werden wiederholte Vorgänge wie Datenbankabfragen reduziert, was die Anwendungsleistung verbessert und die Serverlast verringert.
Diese Anleitung erklärt, wie Sie Memcached auf Ubuntu 20.04 installieren und so konfigurieren, dass SASL (Simple Authentication and Security Layer) für sichere Client-Verbindungen verwendet wird.
Voraussetzungen
- Ein Ubuntu-20.04-Server
- SSH-Zugang als Nicht-Root-Benutzer mit sudo-Rechten
- Sicherstellen, dass der Server aktualisiert ist
Memcached installieren
Memcached ist in den Standard-Paketquellen von Ubuntu 20.04 enthalten und kann mit APT installiert werden. Alternativ lässt sich auch eine bestimmte Version aus dem Quellcode kompilieren. Die folgenden Schritte beschreiben die Installation von Memcached und wie Sie es so einrichten, dass es automatisch beim Serverstart ausgeführt wird.
Paketindex aktualisieren
$ sudo apt update
Memcached und erforderliche Tools installieren
$ sudo apt install memcached libmemcached-tools -y
Installierte Memcached-Version prüfen
$ memcached --version
Beispielausgabe:
memcached 1.5.22
Memcached für automatischen Start aktivieren
$ sudo systemctl enable memcached
Memcached-Dienst starten
$ sudo systemctl start memcached
Memcached konfigurieren
Die Konfigurationsdatei für Memcached befindet sich unter /etc/memcached.conf. Dort können Sie Optionen wie Portnummer, Speichergröße, Verbindungsbegrenzungen und die IP-Adresse, auf der Memcached lauscht, anpassen. Führen Sie die folgenden Schritte aus, um die Einstellungen zu ändern und sicherzustellen, dass Memcached korrekt läuft.
Konfigurationsdatei bearbeiten
$ sudo nano /etc/memcached.conf
SASL-Authentifizierung aktivieren
Fügen Sie -S am Ende der Datei nach -P /var/run/memcached/memcached.pid ein, um SASL zu aktivieren:
...
-P /var/run/memcached/memcached.pid
-S
Ausführliche Protokollierung aktivieren
-v
Gleichzeitige Verbindungen begrenzen
-c 1024
Memcached-Port überprüfen
# Standard-Port für Verbindungen ist 11211
-p 11211
Remote-Zugriff einschränken oder erlauben
Stellen Sie sicher, dass die -l-Direktive auf 127.0.0.1 gesetzt ist, um den Zugriff auf lokale Verbindungen zu beschränken. Um entfernten Zugriff zu ermöglichen, ändern Sie den Wert auf die öffentliche IP-Adresse Ihres Servers:
-l 127.0.0.1
-l ::1
Konfigurationsänderungen übernehmen
$ sudo systemctl restart memcached
Memcached mit SASL absichern
Standardmäßig erzwingt Memcached keine Authentifizierung. Durch das Aktivieren von SASL wird sichergestellt, dass nur authentifizierte Benutzer Zugriff erhalten. Gehen Sie wie folgt vor, um diese Sicherheitsebene hinzuzufügen.
SASL-Paket installieren
$ sudo apt install sasl2-bin -y
Verzeichnis für SASL-Anmeldedaten erstellen
$ sudo mkdir /etc/sasl2
SASL-Konfigurationsdatei erstellen
$ sudo nano /etc/sasl2/memcached.conf
Fügen Sie den folgenden Inhalt ein:
log_level: 5
mech_list: plain
sasldb_path: /etc/sasl2/memcached-sasldb2
Diese Konfiguration:
- log_level: Aktiviert detailliertes Logging auf Stufe 5.
- mech_list: Gibt die Authentifizierungsmethode an;
plainermöglicht einfache Benutzername-Passwort-Authentifizierung. - sasldb_path: Definiert den Speicherort der Memcached-SASL-Datenbank für die Authentifizierung.
SASL-Benutzer erstellen
Ersetzen Sie example-user durch den gewünschten Benutzernamen:
$ sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 example-user
Vergeben Sie ein starkes Passwort, wenn Sie dazu aufgefordert werden.
Eigentümerrechte für die SASL-Datenbank setzen
$ sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2
Memcached neu starten, um Änderungen zu übernehmen
$ sudo systemctl restart memcached
Status des Memcached-Dienstes prüfen
$ sudo systemctl status memcached
Alle SASL-Benutzer auflisten
$ sudo sasldblistusers2 -f /etc/sasl2/memcached-sasldb2
Beispielausgabe:
example-user@ubuntu20: userPassword
Neue Benutzeranmeldedaten testen
Ersetzen Sie example-user@ubuntu20 und strong-password durch Ihre tatsächlichen Daten:
$ memcstat --binary --servers="127.0.0.1" --username='example-user@ubuntu20' --password=strong-password
Wenn die Konfiguration korrekt ist, sollte eine Ausgabe ähnlich der folgenden erscheinen:
Server: 127.0.0.1 (11211)
pid: 5090
uptime: 570
time: 1743878810
version: 1.5.22
libevent: 2.1.11-stable
pointer_size: 64
rusage_user: 0.052240
rusage_system: 0.043533
max_connections: 1024
curr_connections: 2
total_connections: 10
rejected_connections: 8
Verbindung zu Memcached herstellen
Memcached funktioniert mit vielen Anwendungs-Frameworks wie PHP, Perl, Python, Ruby und Java. Um die Verbindung mit PHP zu testen, gehen Sie wie folgt vor.
PHP und Memcached-Modul installieren
$ sudo apt install php php-memcached -y
Beispiel-PHP-Skript erstellen
$ nano memcached.php
Fügen Sie folgenden PHP-Code ein. Ersetzen Sie example-user@ubuntu20 und strong-password durch Ihre Zugangsdaten:
setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$memcached->addServer('127.0.0.1', 11211);
$memcached->setSaslAuthData('example-user@ubuntu20', 'strong-password');
// Wert setzen und abrufen, um die Verbindung zu testen
$memcached->set('example', 'Greetings from centron!');
echo $memcached->get('example');
?>
Dieses Skript verbindet sich mit Memcached unter Verwendung der angegebenen Benutzerdaten und des Binärprotokolls. Es legt einen neuen Schlüssel example mit dem Wert „Greetings from centron!“ an und ruft diesen anschließend aus dem Speicher ab.
PHP-Skript ausführen
$ php memcached.php
Beispielausgabe:
Greetings from centron!
Die Ausgabe bestätigt, dass das PHP-Skript erfolgreich eine Verbindung zu Memcached hergestellt, den Schlüssel example gespeichert und den Wert „Greetings from centron!“ abgerufen hat.
Fazit
Sie haben Memcached auf Ubuntu 20.04 installiert und so konfiguriert, dass es sicher mit Anwendungs-Frameworks wie PHP zusammenarbeitet. Durch das Zwischenspeichern häufig genutzter Daten wie Datenbankabfragen im Arbeitsspeicher trägt Memcached dazu bei, die Serverleistung zu verbessern und die Last zu reduzieren.


