Les systèmes de mise en cache d'objets mémoire tels que Memcached peuvent optimiser les performances de la base de données en stockant temporairement en mémoire les enregistrements fréquemment consultés ou récemment récupérés. Ainsi, ils réduisent le nombre de requêtes directes vers les bases de données.
Étant donné que des systèmes comme Memcached peuvent exposer le serveur à des attaques Dos s'ils ne sont pas configurés correctement, il est important d'assurer à l'avance la sécurité des serveurs Memcached. Dans ce didacticiel, vous apprendrez comment sécuriser un serveur Memcached en liant l'installation à une interface réseau locale ou privée et en créant un utilisateur autorisé pour l'instance Memcached.
Exigences
Pour travailler, vous aurez besoin de :
- Serveur CentOS 7 configuré avec .
- FirewallD, configuré selon le manuel.
Installer Memcached à partir du référentiel officiel
Si Memcached n'est pas déjà installé sur votre serveur, vous pouvez l'installer à partir des référentiels officiels CentOS. Tout d’abord, mettez à jour votre index de package local :
Installez ensuite le package officiel :
sudo miam installer memcached
Vous pouvez également installer libmemcached-tools, une bibliothèque qui fournit plusieurs outils pour travailler avec le serveur Memcached :
sudo miam install libmemcached
Memcached est désormais installé en tant que service, et le serveur dispose également d'outils qui vous permettront de tester sa connectivité. Vous pouvez accéder à la configuration.
Protection Memcached
Pour vous assurer que l'instance Memcached écoute sur l'interface locale 127.0.0.1, vous devez vérifier le paramètre par défaut dans le fichier de configuration /etc/sysconfig/memcached et également désactiver l'écouteur UDP. Ces actions protégeront le serveur des attaques par déni de service.
Ouvrez le fichier /etc/sysconfig/memcached :
Recherchez la variable OPTIONS :
. . .
OPTIONS=""
La connexion à une interface réseau locale limitera le trafic vers les clients sur une seule machine. Pour ce faire, ajoutez -l 127.0.0.1 à la variable OPTIONS. Cette limite peut être trop restrictive pour certains environnements, mais c'est un bon début pour mettre en place la sécurité.
Étant donné que UDP est utilisé dans les attaques DOS beaucoup plus efficacement que TCP, vous pouvez également désactiver l'écouteur UDP. Pour ce faire, ajoutez le paramètre -U 0 à la variable OPTIONS. Le fichier résultant devrait ressembler à ceci :
PORT="11211"
UTILISATEUR="memcached"
MAXCONN="1024"
TAILLE DU CACHE="64"
OPTIONS="-l 127.0.0.1 -U 0"
Enregistrez et fermez le fichier.
Assurez-vous que Memcached est lié à l'interface locale et n'écoute que les connexions TCP :
sudo netstat -plunt
. . .
tcp 0 0 127.0.0.1:11211 0.0.0.0:* ÉCOUTER 2383/memcached
. . .
Cela confirme que memcached est lié à 127.0.0.1 et utilise uniquement TCP.
Ajout d'utilisateurs autorisés
Pour ajouter des utilisateurs autorisés à Memcached, vous pouvez utiliser Simple Authentication and Security Layer (SASL), un framework qui isole la procédure d'authentification des protocoles d'application. Activez SASL dans le fichier de configuration Memcached, puis ajoutez un utilisateur avec les informations d'authentification.
Prise en charge SASL
Tout d'abord, vous devez vérifier la connectivité de l'instance Memcached à l'aide de la commande memcstat. Cela aidera à confirmer que SASL et l'authentification utilisateur sont activées une fois les modifications de configuration apportées.
Pour vérifier que Memcached est opérationnel, saisissez ce qui suit :
memstat --serveurs="127.0.0.1"
Serveur : 127.0.0.1 (11211)
pid : 3831
temps de disponibilité : 9
heure : 1520028517
version : 1.4.25
. . .
Vous pouvez maintenant activer SASL. Tout d'abord, vous devez ajouter l'option -S à la variable OPTIONS dans /etc/sysconfig/memcached.conf. Ouvrez à nouveau le fichier :
sudo vi /etc/sysconfig/memcached
Ajoutez les paramètres -S et –vv à la variable OPTIONS. Ce dernier fournira une sortie détaillée dans /var/log/memcached, ce qui est utile pour le dépannage.
La ligne devrait ressembler à ceci :
. . .
OPTIONS="-l 127.0.0.1 -U 0 -S -vv"
Enregistrez et fermez le fichier.
Redémarrez le service Memcached :
sudo systemctl redémarrer memcached
Ensuite, vous devez consulter les journaux pour vous assurer que la prise en charge SASL est activée :
sudo journalctl -u memcached
Vous devriez voir la ligne suivante, qui confirme la prise en charge de SASL :
. . .
05 mars 18:16:11 memcached-server memcached : SASL initialisé.
. . .
Vous pouvez maintenant tester à nouveau la connexion, mais après avoir activé la prise en charge SASL, cette commande devrait renvoyer une erreur non authentifiée :
memstat --serveurs="127.0.0.1"
Cette commande n'affiche pas le résultat à l'écran. Saisissez ce qui suit pour vérifier son état :
$? renverra toujours le code de sortie de la dernière commande terminée. En règle générale, toute réponse autre que 0 indique que le processus a échoué. Dans ce cas, vous devriez voir un état de sortie de 1, ce qui signifie que la commande memcstat n'a pas été exécutée correctement.
Création d'un utilisateur
Vous devez maintenant télécharger deux packages permettant de fonctionner avec la bibliothèque Cyrus SASL et les mécanismes d'authentification, y compris des plugins prenant en charge les schémas d'authentification PLAIN. Les packages cyrus-sasl-devel et cyrus-sasl-plain vous permettront de créer un utilisateur et d'effectuer une authentification. Installer les packages :
sudo miam installer cyrus-sasl-devel cyrus-sasl-plain
Ensuite, vous devez créer un répertoire et un fichier dans lesquels Memcached vérifiera les paramètres de configuration SASL.
sudo mkdir -p /etc/sasl2
sudo vi /etc/sasl2/memcached.conf
Ajoutez ce qui suit au fichier :
mech_list : simple
niveau_log : 5
chemin_sasldb : /etc/sasl2/memcached-sasldb2
En plus du niveau de journalisation, vous devez ici spécifier le paramètre mech_list et lui attribuer la valeur plain, grâce à laquelle Memcached pourra utiliser son propre fichier de mots de passe et vérifier les mots de passe sous la forme texte brut. Vous devez également spécifier le chemin d'accès au fichier de base de données utilisateur, qui sera créé ensuite. Enregistrez et fermez le fichier.
Nous devons maintenant créer une base de données SASL avec les informations d'identification de l'utilisateur. Utilisez la commande saslpasswd2 pour créer une nouvelle entrée pour l'utilisateur dans la base de données à l'aide de l'option -c. Ici, l'utilisateur est classiquement appelé 8host, mais vous pouvez modifier ce nom. À l'aide de l'option -f, vous pouvez spécifier le chemin d'accès à la base de données (le chemin que vous avez spécifié dans le répertoire /etc/sasl2/memcached.conf) :
sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 8host
Donnez maintenant à l'utilisateur Memcache les droits d'accès à la base de données SASL.
sudo chown memcached:memcached /etc/sasl2/memcached-sasldb2
Redémarrez le service Memcached :
sudo systemctl redémarrer memcached
La commande memcstat confirmera à nouveau si le processus d'authentification a fonctionné. Cette fois, exécutez la commande avec les informations d'identification :
memstat --servers="127.0.0.1" --username=8host --password=votre_mot de passe
Vous obtiendrez le résultat :
Serveur : 127.0.0.1 (11211)
pid : 3831
temps de disponibilité : 9
heure : 1520028517
version : 1.4.25
. . .
Memcached prend désormais en charge SASL et l'authentification des utilisateurs.
Configuration de l'accès au réseau privé
Vous savez maintenant comment configurer Memcached pour qu'il écoute sur l'interface locale, ce qui peut empêcher les attaques par déni de service et protéger l'interface Memcached contre les impacts. parties externes. Cependant, dans certains cas, il est nécessaire d'autoriser l'accès à Memcached à d'autres serveurs. Pour ce faire, vous pouvez lier Memcached à une interface réseau privée.
Restreindre l'accès par adresse IP dans un pare-feu
Avant de commencer la configuration, il est recommandé de configurer des règles de pare-feu pour restreindre l'accès au serveur Memcached. Si vous avez terminé et que vous ne prévoyez pas de vous connecter à Memcached depuis un autre hôte, vous n'avez pas besoin de modifier les règles de pare-feu. Votre instance Memcached autonome devrait écouter sur 127.0.0.1 grâce à la variable OPTIONS que vous avez définie précédemment, vous n'avez donc pas à vous soucier du trafic entrant. Cependant, si vous envisagez d'autoriser l'accès à votre serveur Memcached à partir d'autres hôtes, vous devrez modifier les paramètres de votre pare-feu à l'aide de la commande firewall-cmd.
Tout d'abord, ajoutez une zone Memcached dédiée à votre politique firewalld :
sudo firewall-cmd --permanent --new-zone=memcached
Spécifiez ensuite le port à ouvrir. Par défaut, Memcached utilise 11211.
sudo firewall-cmd --permanent --zone=memcached --add-port=11211/tcp
Ensuite, spécifiez les adresses IP internes des clients qui doivent pouvoir accéder à Memcached.
sudo firewall-cmd --permanent --zone=memcached --add-source=client_server_private_IP
Pour mettre à jour les règles, redémarrez le pare-feu :
sudo pare-feu-cmd --reload
Les paquets provenant de l'adresse IP du client doivent désormais être traités selon les règles de la zone Memcached dédiée. Toutes les autres connexions seront traitées dans la zone publique par défaut.
Vous pouvez ensuite lier Memcached à l'interface réseau privée.
Configuration de Memcached pour prendre en charge une interface réseau privée
Maintenant que le pare-feu est prêt, vous pouvez lier Memcached à l'interface privée du serveur au lieu de 127.0.0.1 en éditant la variable OPTIONS.
Ouvrez /etc/sysconfig/memcached :
sudo vi /etc/sysconfig/memcached
À l’intérieur, recherchez la variable OPTIONS. Vous devez maintenant modifier -l 127.0.0.1 et spécifier l'adresse IP interne du serveur Memcached :
. . .
OPTIONS="-l memcached_servers_private_IP -U 0 -S -vv"
Enregistrez et fermez le fichier.
Redémarrez Memcached :
sudo systemctl redémarrer memcached
Vérifiez que tout fonctionne correctement à l'aide de la commande netstat :
sudo netstat -plunt
Connexions Internet actives (serveurs uniquement)
Proto Recv-Q Send-Q Adresse locale Adresse étrangère État PID/Nom du programme
. . .
tcp 0 0 memcached_servers_private_IP:11211 0.0.0.0:* ÉCOUTER 2383/memcached
. . .
Vérifiez la connexion du client externe pour vous assurer que vous pouvez toujours accéder au service. Il est également recommandé de tester l'accès d'un client non autorisé pour s'assurer que le pare-feu n'autorisera pas la connexion.
Conclusion
Vous savez désormais comment installer Memcached et assurer la sécurité de ce service.
Pour en savoir plus sur Memcached, consultez
Dans cette note, je ne m'attarderai pas en détail sur la question de savoir de quoi il s'agit. Si la question se pose « comment l'installer », alors vous avez déjà la réponse à « qu'est-ce que c'est » (au moins approximativement) ! 🙂
Mais dans aperçu général memcache est un programme spécial qui vous permet de mettre en cache des données (par exemple, les résultats de requêtes SQL, les résultats prêts à l'emploi de scripts, les images = en général, tous les objets nécessaires au travail) dans la RAM du serveur. Cette mémoire est des centaines (parfois des milliers) de fois plus rapide que disques durs Par conséquent, le stockage des données, bien que plus coûteux, est plusieurs fois plus efficace en termes de performances, ce qui a un effet très positif à la fois sur la charge du serveur et sur la vitesse des scripts du site.
Comment installer Memcache sur un serveur Web.
Installez le serveur Memcached lui-même
Miam -y installer memcached
Modifiez sa configuration pour qu'elle écoute uniquement le serveur lui-même et ne traite pas les demandes de l'extérieur (c'est une question à la fois de bon sens et de sécurité - pourquoi quelqu'un verrait-il ce qui y est stocké dans votre mémoire ?)
Pour ce faire, ouvrez le fichier pour le modifier /etc/sysconfig/memcached
Et remplacez la ligne OPTIONS par
OPTIONS="-l127.0.0.1"
Par défaut, dans la même configuration pour le fonctionnement de Memcache, il est indiqué que 64 Mo de RAM sont alloués au stockage des données. Si vous devez en définir davantage, modifiez simplement la valeur dans la ligne
TAILLE DU CACHE="64"
à ce que tu veux.
Mais souviens-toi, que sans avoir besoin d'allouer trop de mémoire, surtout si la totalité ne sera pas utilisée plus tard, est également nuisible ! (ne serait-ce que parce que la RAM est une ressource assez précieuse d'un serveur Web, qui a tendance à s'épuiser au moment le plus inopportun)
Il reste maintenant démarrer le démon Memcache et ajoutez-le au démarrage (sinon, lorsque vous redémarrerez tout le serveur, vous devrez le démarrer manuellement) :
/etc/init.d/memcached démarre chkconfig memcached sur
Les dernières étapes consistent à installer le module memcache :
Miam -y installe php-pecl-memcache
....et redémarrez Apache :
/etc/init.d/httpd redémarrage
À la fin, voici comment vérifier si Memcache écoute sur le port 11211 : .
Tous. Il ne vous reste plus qu'à préciser dans les paramètres de mise en cache du site
Adresse du serveur: 127.0.0.1 (ou localhost c'est la même chose)
Port: 11211
Et profitez de tous les avantages de cette méthode de mise en cache.
Foire aux questions
-
Définition des autorisations pour un fichier :
chmod 644 /path/to/file/filename.ext où,- /path/to/file/ - chemin d'accès au fichier à partir de la racine
- nomfichier.ext - nom du fichier
Comment définir les autorisations sur tous les fichiers (y compris les fichiers dans les sous-dossiers)
Allez dans le dossier où se trouvent les fichiers et exécutez : find . -type f -exec chmod 644 () \; - 1) Client SSH
- 2) Données de connexion au serveur (son adresse IP, son nom d'utilisateur et son mot de passe) - celles-ci peuvent être obtenues auprès du fournisseur qui vous a fourni le serveur.
Le moyen le plus simple de supprimer tout le contenu d'un fichier (l'effacer) est d'y copier le « contenu » du fichier /dev/null (/dev/null dans *nix est synonyme de vide. Tout ce qui est copié dedans est perdu, tout ce qui y est copié est vide).
Vous pouvez le faire en exécutant :
Cp /dev/null fichier.ext
, où file.ext est le nom du fichier à effacer.
Le moyen le plus simple- exécutez la commande :
Rechercher /chemin/vers/dossier | toilettes -l
Où /path/to/folder est le chemin d’accès au dossier en cours de vérification à partir de la racine du disque.
Trouver. -minprofondeur 2 | awk -F/ "( print $2"/" )" | trier | uniq-c | trier -n
Mais souvent, de tels détails ne sont pas nécessaires - il suffit de voir 2-3 dossiers contenant le plus d'éléments. Pour cela, à la fin de la même commande ajoutez | queue -3(Le "3" est le nombre d'éléments qui seront affichés):
Trouver. -minprofondeur 2 | awk -F/ "( print $2"/" )" | trier | uniq-c | trier -n | queue -3
Il s'est avéré que de nombreux utilisateurs ne savent pas comment se connecter au serveur via chut (accéder à sa console) pour continuer à l'utiliser. Dans cet article, je vais essayer de corriger ce manque de connaissances ! :) Pour vous connecter via SSH à un serveur distant, vous n'avez pas besoin de grand chose :
Commençons par le premier point.
Connexion via SSH depuis Windows
Le schéma est le même pour toutes les versions de Windows. Vous devez d'abord télécharger un programme client spécial appelé putty : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html ( cliquez sur putty-0.63-installer.exe) installez-le et exécutez-le, saisissez l'adresse du serveur dans le champ HostName (le champ Port doit avoir la valeur 22) :
Connexion via ssh avec Putty
Confirmez que le nœud est fiable
Entrez votre nom d'utilisateur
Après cela, entrez votre mot de passe et c'est tout : vous êtes connecté au serveur via ssh !
Attention! Lors de la saisie d'un mot de passe, pour des raisons de sécurité, même les « étoiles » ne s'affichent pas ! C'est ainsi que cela devrait être - entrez simplement le mot de passe et appuyez sur " Entrer"
Connexion via SSH depuis Linux
Si une version de Linux est installée sur votre ordinateur de travail, alors tout est très simple : ouvrez un terminal et entrez une commande comme
Chut [email protégé]
et entrez votre mot de passe Où, nom d'utilisateur - nom d'utilisateur. 111.222.333.444 - Adresse IP du serveur Si vous vous connectez pour la première fois, vous devrez également confirmer vos intentions en tapant le mot " Oui" et en appuyant sur " Entrer".
Les systèmes de mise en cache d'objets mémoire tels que Memcached peuvent optimiser les performances de la base de données principale en stockant temporairement les informations en mémoire, en conservant les enregistrements fréquemment ou récemment demandés. De cette manière, ils réduisent le nombre de requêtes directes vers vos bases de données.
Étant donné que des systèmes comme Memcached peuvent contribuer à des attaques par déni de service s'ils sont mal configurés, il est important de sécuriser vos serveurs Memcached. Dans ce guide, nous expliquerons comment protéger votre serveur Memcached en liant votre installation à une interface réseau locale ou privée et en créant un utilisateur autorisé pour votre instance Memcached.
Conditions préalables
Ce didacticiel suppose que vous disposez d'un serveur configuré avec un utilisateur sudo non root et un pare-feu de base. Si ce n'est pas le cas, configurez et installez les éléments suivants :
- Un serveur CentOS 7, configuré selon notre .
- FirewallD, configuré suite à la section de notre guide sur l'utilisation de FirewallD avec CentOS 7.
Une fois ces prérequis en place, vous serez prêt à installer et sécuriser votre serveur Memcached.
Installation de Memcached à partir des référentiels officiels
Si Memcached n'est pas déjà installé sur votre serveur, vous pouvez l'installer à partir des référentiels officiels CentOS. Tout d'abord, assurez-vous que l'index de votre package local est mis à jour :
- sudo miam mise à jour
Ensuite, installez le package officiel comme suit :
- sudo miam installer memcached
On peut également installer libmemcached , une bibliothèque qui fournit plusieurs outils pour travailler avec votre Serveur Memcached :
- sudo miam install libmemcached
Memcached devrait maintenant être installé en tant que service sur votre serveur, ainsi que des outils qui vous permettront de tester sa connectivité. Nous pouvons maintenant passer à la sécurisation de ses paramètres de configuration.
Sécurisation des paramètres de configuration Memcached
Pour nous assurer que notre instance Memcached écoute sur l'interface locale 127.0.0.1 , nous allons modifier la variable OPTIONS dans le fichier de configuration situé à /etc/sysconfig/memcached . Nous désactiverons également l'écouteur UDP. Ces deux actions protégeront notre serveur contre les attaques par déni de service.
Vous pouvez ouvrir /etc/sysconfig/memcached avec vi :
Localisez la variable OPTIONS, qui ressemblera initialement à ceci :
/etc/sysconfig/memcached
OPTIONS=""
La liaison à notre interface réseau locale limitera le trafic aux clients sur la même machine. Nous ferons cela en ajoutant -l 127.0.0.1 à notre variable OPTIONS. Cela peut être trop restrictif pour certains environnements, mais cela peut constituer un bon point de départ comme mesure de sécurité.
Étant donné que le protocole UDP est beaucoup plus efficace pour refuser les attaques de service que TCP, nous pouvons également désactiver l'écouteur UDP. Pour ce faire, nous ajouterons le paramètre -U 0 à notre variable OPTIONS. Le fichier complet devrait ressembler à ceci :
/etc/sysconfig/memcached
PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="-l 127.0.0.1 -U 0"
Enregistrez et fermez le fichier lorsque vous avez terminé.
Redémarrez votre service Memcached pour appliquer vos modifications :
Vérifiez que Memcached est actuellement lié à l'interface locale et écoute uniquement les connexions TCP en tapant :
- sudo netstat -plunt
Vous devriez voir le résultat suivant :
Connexions Internet actives (serveurs uniquement) Proto Recv-Q Send-Q Adresse locale Adresse étrangère État PID/Nom du programme . . . tcp 0 0 127.0.0.1 :11211 0.0.0.0:* ÉCOUTER 2383/memcached . . .
Cela confirme que memcached est lié à l'adresse 127.0.0.1 en utilisant uniquement TCP.
Ajout d'utilisateurs autorisés
Pour ajouter des utilisateurs authentifiés à votre service Memcached, il est possible d'utiliser Simple Authentication and Security Layer (SASL), un framework qui dissocie les procédures d'authentification des protocoles d'application. Nous activerons SASL dans notre fichier de configuration Memcached, puis passerons à l'ajout d'un utilisateur avec des informations d'authentification.
Configuration de la prise en charge SASL
Nous pouvons d'abord tester la connectivité de notre instance Memcached avec la commande memstat. Cela nous aidera à établir que SASL et l'authentification des utilisateurs sont activés après avoir apporté des modifications à nos fichiers de configuration.
Pour vérifier que Memcached est opérationnel, tapez ce qui suit :
- memstat --serveurs="127.0.0.1"
Nous pouvons maintenant passer à l'activation de SASL. Tout d'abord, nous pouvons ajouter le paramètre -S à notre variable OPTIONS dans /etc/sysconfig/memcached , ce qui activera SASL. Ouvrez à nouveau le fichier :
- sudo vi /etc/sysconfig/memcached
Nous ajouterons les paramètres -S et -vv à notre variable OPTIONS. L'option -vv fournira une sortie détaillée à /var/log/memcached , ce qui nous aidera lors du débogage. Ajoutez ces options à la variable OPTIONS comme suit :
/etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1 -U 0 -S -vv "
Enregistrez et fermez le fichier.
- sudo systemctl redémarrer memcached
Ensuite, nous pouvons jeter un œil aux journaux pour nous assurer que la prise en charge SASL a été activée :
- sudo journalctl -u memcached
Vous devriez voir la ligne suivante, indiquant que la prise en charge SASL a été initialisée :
05 mars 18:16:11 memcached-server memcached : SASL initialisé. . . .
Nous pouvons vérifier à nouveau la connectivité, mais comme SASL a été initialisé, cette commande devrait échouer sans authentification :
- memstat --serveurs="127.0.0.1"
Cette commande ne devrait pas produire de sortie. Nous pouvons taper ce qui suit pour vérifier son statut :
- écho $?
$? renverra toujours le code de sortie de la dernière commande terminée. En général, tout ce qui est supérieur à 0 indique un échec du processus. Dans ce cas, nous devrions voir un état de sortie de 1 , ce qui nous indique que la commande memstat a échoué.
Ajout d'un utilisateur authentifié
Nous pouvons maintenant télécharger deux packages qui nous permettront de travailler avec la bibliothèque Cyrus SASL et son mécanismes d'authentification, y compris les plugins prenant en charge PLAINE schémas d'authentification. Ces packages, cyrus-sasl-devel et cyrus-sasl-plain , nous permettront de créer et d'authentifier notre utilisateur. Installez les packages en tapant :
- sudo miam installer cyrus-sasl-devel cyrus-sasl-plain
Ensuite, nous allons créer le répertoire et le fichier que Memcached vérifiera pour ses paramètres de configuration SASL :
- sudo mkdir -p /etc/sasl2
- sudo vi /etc/sasl2/memcached.conf
Ajoutez ce qui suit au fichier de configuration SASL :
/etc/sasl2/memcached.conf
Mech_list : plain log_level : 5 sasldb_path : /etc/sasl2/memcached-sasldb2
En plus de spécifier notre niveau de journalisation, nous définirons mech_list sur plain , ce qui indique à Memcached qu'il doit utiliser son propre fichier de mots de passe et vérifier un mot de passe en texte brut. Nous spécifierons également le chemin d’accès au fichier de base de données utilisateur que nous créerons ensuite. Enregistrez et fermez le fichier lorsque vous avez terminé.
Nous allons maintenant créer une base de données SASL avec nos informations d'identification utilisateur. Nous utiliserons la commande saslpasswd2 pour créer une nouvelle entrée pour notre utilisateur dans notre base de données en utilisant l'option -c. Notre utilisateur sera sammy ici, mais vous pouvez remplacer ce nom par votre propre utilisateur. En utilisant l'option -f, nous spécifierons le chemin d'accès à notre base de données, qui sera le chemin que nous avons défini dans /etc/sasl2/memcached.conf :
- sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy
Enfin, nous souhaitons donner à l'utilisateur memcached la propriété de la base de données SASL :
- sudo chown memcached:memcached /etc/sasl2/memcached-sasldb2
Redémarrez le service Memcached :
- sudo systemctl redémarrer memcached
Exécuter à nouveau memstat confirmera si notre processus d'authentification a fonctionné ou non. Cette fois, nous l'exécuterons avec nos informations d'authentification :
- memstat --servers="127.0.0.1" --username=sammy --password=votre_mot de passe
Vous devriez voir la sortie comme le suivant:
Serveur : 127.0.0.1 (11211) pid : 3831 disponibilité : 9 heure : 1520028517 version : 1.4.25. . .
Notre service Memcached fonctionne désormais avec succès avec le support SASL et l'authentification des utilisateurs.
Autoriser l'accès sur le réseau privé
Nous avons expliqué comment configurer Memcached pour qu'il écoute sur l'interface locale, ce qui peut empêcher les attaques par déni de service en protégeant l'interface Memcached de l'exposition à des tiers. Il peut toutefois y avoir des cas où vous devrez autoriser l'accès à partir d'autres serveurs. Dans ce cas, vous pouvez ajuster vos paramètres de configuration pour lier Memcached à l'interface réseau privée.
Note: Nous verrons comment configurer les paramètres du pare-feu à l'aide de Pare-feuD dans cette section, mais il est également possible d'utiliser les pare-feu DigitalOcean Cloud pour créer ces paramètres. Pour plus d'informations sur la configuration des pare-feu DigitalOcean Cloud, consultez notre . Pour en savoir plus sur la façon de limiter le trafic entrant à des machines particulières, consultez la section de ce didacticiel sur et notre discussion sur .
Limiter l'accès IP avec des pare-feu
Avant d'ajuster vos paramètres de configuration, c'est une bonne idée de configurer des règles de pare-feu pour limiter les machines pouvant se connecter à votre serveur Memcached. Si vous avez suivi les prérequis et installé FirewallD sur votre serveur et que vous l'avez fait pas prévoyez de vous connecter à Memcached à partir d’un autre hôte, vous n’avez alors pas besoin d’ajuster vos règles de pare-feu. Votre instance Memcached autonome devrait écouter sur 127.0.0.1 , grâce à la variable OPTIONS que nous avons définie précédemment, et il ne devrait donc y avoir aucun souci concernant le trafic entrant. Si vous envisagez d'autoriser l'accès à votre serveur Memcached à partir d'autres hôtes, vous devrez alors modifier les paramètres de votre pare-feu à l'aide de la commande firewall-cmd.
Commencez par ajouter une zone Memcached dédiée à votre politique firewalld :
- sudo firewall-cmd --permanent --new-zone=memcached
Ensuite, précisez quel port vous souhaitez garder ouvert. Memcached utilise le port 11211 par défaut :
- sudo firewall-cmd --permanent --zone=memcached --add-port=11211/tcp
Ensuite, spécifiez les adresses IP privées qui doivent être autorisées à accéder à Memcached. Pour cela, vous devrez connaître votre adresse IP privée du serveur client:
- sudo firewall-cmd --permanent --zone=memcached --add-source=client_server_private_IP
Rechargez le pare-feu pour vous assurer que les nouvelles règles prennent effet :
- sudo pare-feu-cmd --reload
Les paquets provenant de l'adresse IP de votre client doivent désormais être traités selon les règles de la zone Memcached dédiée. Toutes les autres connexions seront traitées par la zone publique par défaut.
Une fois ces changements en place, nous pouvons procéder aux modifications de configuration nécessaires de notre service Memcached, en le liant à l'interface réseau privée de notre serveur.
Liaison de Memcached à l'interface réseau privée
La première étape de la liaison à l'interface réseau privée de notre serveur consistera à modifier la variable OPTIONS que nous avons définie précédemment.
Nous pouvons ouvrir à nouveau /etc/sysconfig/memcached en tapant :
- sudo vi /etc/sysconfig/memcached
À l’intérieur, localisez la variable OPTIONS. Nous pouvons maintenant modifier -l 127.0.0.1 pour refléter l'adresse IP privée de notre serveur Memcached :
/etc/sysconfig/memcached
OPTIONS="-l memcached_servers_private_IP -U 0 -S -vv"
Enregistrez et fermez le fichier lorsque vous avez terminé.
Redémarrez à nouveau le service Memcached :
- sudo systemctl redémarrer memcached
Vérifiez vos nouveaux paramètres avec netstat pour confirmer le changement :
- sudo netstat -plunt
Testez la connectivité de votre client externe pour vous assurer que vous pouvez toujours accéder au service. C'est une bonne idée de vérifier également l'accès d'un client non autorisé pour vous assurer que vos règles de pare-feu sont efficaces.
Conclusion
Dans ce didacticiel, nous avons expliqué comment sécuriser votre serveur Memcached en le configurant pour qu'il se lie à votre interface réseau locale ou privée et en activant l'authentification SASL.
M emcache est un élément clé de l'infrastructure de nombreuses applications. Les bases de données, les files d'attente et les services distants sont souvent goulot requêtes Web, mais dans de nombreux cas, les informations qu'elles contiennent ne changent pas. Memcache est un démon standard qui peut mettre en cache des valeurs arbitraires et tout accélérer, des requêtes MySQL aux requêtes REST.
Premiers pas avec Memcache
Pour compléter ce guide, vous aurez besoin des éléments suivants :
- 1 nœud (Cloud ou) avec CentOS 7 et pile installée
Lorsque nous aurons terminé, la pile LAMP sera étendue avec Memcache et vous pourrez commencer à l'intégrer dans les sites et applications existants.
Gestion
Tout d’abord, nous allons installer le package Memcaché .
Miam -y installer memcached
Le package est maintenant installé, mais il doit également être en cours d'exécution. Nous devons également le configurer pour qu'il démarre au démarrage du système.
Systemctl démarre memcached.service systemctl active memcached.service
Memcached doit maintenant être configuré pour une utilisation optimale. Nous nous en occuperons.
Nano /etc/sysconfig/memcached
Voulez-vous allouer de la mémoire pour Memcached ? Ceci est réalisé en modifiant la valeur CACHESIZE en la quantité souhaitée de RAM allouée au cache.
PORT="11211"
UTILISATEUR="memcached"
MAXCONN="1024"
TAILLE DU CACHE="64"
OPTIONS=""
Puisque vous venez de modifier la configuration, vous devez redémarrer Memcached pour que les nouvelles valeurs prennent effet.
Systemctl redémarre memcached.service
Pour utiliser Memcached depuis PHP, une extension est requise. Nous allons installer dans l’exemple suivant.
Miam -y installe php-pecl-memcache
Maintenant que PHP a été mis à jour, vous devez redémarrer Apache. Redémarrez également Memcached.
Systemctl redémarre httpd.service systemctl redémarre memcached.service
Vérifions le chargement du module Memcached.
Php-m | grep memcache memcache
Pour vérifier davantage l'état du module, nous créerons une page d'informations PHP. Cette fonction renvoie des informations de configuration environnement PHP. Si Memcached est configuré correctement, il inclura informations détailléesà propos du support Memcached.
Nano /var/www/html/index.php
Maintenant, nous allons enfin vérifier l'état du module Memcaché en PHP. Visitez la page que vous venez de créer sur : http://your_main_ip/index.php
Conclusion
Memcached est un système qui met en cache toutes les données en mémoire. Cela signifie que vous pouvez générer le cache le plus d'une manière rapide ce qui vous permettra d'utiliser rapidement des applications avec les langages de programmation les plus modernes, tels que Python, PHP, Ruby, etc. Dans mon sujet « Installation de memcached sur Unix/Linux (CentOS/Debian/Ubuntu) », je vais vous expliquer comment installer memcached sur Unix/Linux et utiliser un exemple prêt à l'emploi pour montrer comment je l'ai fait. Pour les tests, j'ai choisi CentOS 6 et Debian 8.
Installer Memcached sur Debian/Ubuntu
$ sudo apt-get mise à jour
Utilisez maintenant la commande suivante pour installer Memcached :
$ sudo apt-get install memcached
Je vais maintenant installer PHP avec quelques packages requis :
# apt-get install php5 php5-dev php-pear php5-memcached
Vous devez également installer le module MemCache pour PHP :
# apt-get install libmemcached-dev build-essential
Enfin nous installons l'extension php Memcache en utilisant PECL :
# pecl installe memcache
Activons maintenant la prise en charge de MemCache en PHP. Avant de créer un nouveau fichier, assurez-vous simplement qu'il existe déjà et si le fichier existe déjà, exécutez simplement la commande ci-dessous :
$ echo "extension=memcache.so" > /etc/php5/apache2/conf.d/20-memcache.ini
Après toutes les modifications, redémarrez le service Apache :
# redémarrage du service Apache2
Installation de Memcached sur RedHat/CentOS/Fedora
Tout d'abord, mettons à jour le système d'exploitation :
# miam mise à jour
Après la mise à jour, installez memcached :
# Miam, installe Memcached
Configuration de Memcached
Modifions le fichier :
$ vim /etc/sysconfig/memcached
Assurez-vous que ce fichier de configuration contient les lignes suivantes :
PORT="11211" USER="memcached" MAXCONN="256" CACHESIZE="64" OPTIONS="-l 127.0.0.1"
PORT 11211 est le port d'écoute par défaut pour Memcached.
UTILISATEUR— il s'agit de l'utilisateur Memcached à partir duquel le démon sera lancé.
MAXCONN— le nombre maximum de connexions possibles.
TAILLE DU CACHÉ- C'est le nombre de mégaoctets (64 Mo) à utiliser, si vous avez beaucoup de trafic, c'est bon pour la plupart des petits/moyens sites. Pour un serveur occupé, vous pouvez l'augmenter de 512 ou 1 Go (1024 Mo).
OPTIONS=”-l 127.0.0.1″- cela signifie que memcached écoutera uniquement sur localhost, évitant toute connexion externe. Vous pouvez définir l'adresse IP du serveur. Par défaut, il est défini sur INADDR_ANY. Il s'agit d'une option importante car il n'existe aucun autre moyen de garantir l'installation. Une liaison à une interface interne ou de passerelle est suggérée.
Pour CentOS/RHEL 6/5 :
Le lancement de Memcached est effectué :
# démarrage du service memcached
Ajoutons memcached au démarrage du système d'exploitation :
# chkconfig memcached activé
Pour CentOS/RHEL 7 :
# systemctl activer memcached # systemctl démarrer memcached
Installation d'extensions PHP avec Memcached.
faire:
# miam installez php-pear pecl_http php-devel
Et on exécute :
$ pecl installer memcache
Si PECL vous pose la question que vous voyez ci-dessous lors de l'installation, appuyez simplement sur ENTRÉE :
"Activer la prise en charge du gestionnaire de session Memcache ?"
J'ai une erreur :
ERREUR : `/var/tmp/memcache/configure --enable-memcache-session=yes" a échoué
Correction :
# miam, installez libmemcached libmemcached-devel
J'ai obtenu ce qui suit :
Vérification de l'emplacement zlib... configure : erreur : la prise en charge de memcached nécessite ZLIB. Utilisez --with-zlib-dir=
# miam, installez zlib zlib-devel
Ajoutez le module memcache.so à php.ini
# echo "extension=memcache.so" >> /etc/php.ini
Nous redémarrons les services.
Si php-fpm est installé sur votre serveur, alors pour le redémarrer, exécutez :
# rechargement du service php-fpm
Si Apache est installé sur votre serveur, alors pour le redémarrer, exécutez :
Pour CentOS/RHEL 7 :
# systemctl redémarre httpd
Pour CentOS/RHEL 6/5 :
# redémarrage du service httpd
Test/vérification du fonctionnement de Memcached
Vérification des paramètres MemCache
Utilisez la commande suivante pour vérifier et vous assurer que le service Memcached fonctionne normalement :
$ echo "paramètres de statistiques" | nc localhost 11211
Nous devons maintenant vérifier si l'extension est activée et nous assurer qu'elle fonctionne correctement. Créez un fichier dans votre répertoire personnel et écrivez le code PHP suivant :
#écho "" > /var/www/html/php_info.php
Si vous ouvrez le site, vous verrez :
Vérifiez si Memcached est installé en tant que module PHP :
# php -i | grep memcache -je
Configuration d'un pare-feu pour Memcached
Ajoutez les règles suivantes pour autoriser la connexion (pour que Memcached fonctionne) :
Iptables -A INPUT -p tcp --destination-port 11211 -m état --état NOUVEAU -m iprange --src-range 192.168.1.10-192.168.1.15 -j ACCEPT iptables -A INPUT -p udp --destination-port 11211 -m state --state NOUVEAU -m iprange --src-range 192.168.1.10 -192.168.1.15 -j ACCEPTER
Vérifiez si le démon memcached est en cours d'exécution sur le système d'exploitation :
$ps-aux | grep memcached
Avec cela, l'article « Installation de memcached sous Unix/Linux (CentOS/Debian/Ubuntu) » est terminé.