Installation et configuration de Memcache dans Centos. Définition des autorisations pour un fichier

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

    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

  • 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
    Encore plus simple - allez dans le dossier du site et exécutez : chmod 644 filename.ext

    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 () \;
  • 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 :

    • 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.

    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
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 . . .

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=

pour spécifier le préfixe où se trouvent les en-têtes ZLIB et la bibliothèque ERREUR : `/var/tmp/memcached/configure" a échoué

# 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é.



Avez-vous aimé l'article? Partagez avec vos amis !