8.7. Sécuriser le service Memcached
Memcached est un système de mise en cache d'objets en mémoire distribuée, open source et très performant. Il peut améliorer les performances des applications web dynamiques en réduisant la charge de la base de données.
Memcached est un magasin de valeurs clés en mémoire pour de petits morceaux de données arbitraires, telles que des chaînes de caractères et des objets, provenant des résultats d'appels de bases de données, d'appels d'API ou de rendus de pages. Memcached permet d'affecter la mémoire des zones sous-utilisées aux applications qui ont besoin de plus de mémoire.
En 2018, des vulnérabilités d'attaques par amplification DDoS en exploitant des serveurs Memcached exposés à l'internet public ont été découvertes. Ces attaques ont tiré parti de la communication Memcached utilisant le protocole UDP pour le transport. L'attaque était efficace en raison du taux d'amplification élevé où une requête d'une taille de quelques centaines d'octets pouvait générer une réponse d'une taille de quelques mégaoctets, voire de centaines de mégaoctets.
Dans la plupart des cas, le service memcached
n'a pas besoin d'être exposé à l'Internet public. Une telle exposition peut poser ses propres problèmes de sécurité, en permettant à des attaquants distants de divulguer ou de modifier des informations stockées dans Memcached.
Suivez la section pour renforcer le système utilisant le service Memcached contre d'éventuelles attaques DDoS.
8.7.1. Renforcer Memcached contre les DDoS
Pour réduire les risques de sécurité, effectuez autant d'étapes que possible en fonction de votre configuration.
Procédure
Configurez un pare-feu dans votre réseau local. Si votre serveur Memcached ne doit être accessible que dans votre réseau local, n'acheminez pas le trafic externe vers les ports utilisés par le service
memcached
. Par exemple, supprimez le port par défaut11211
de la liste des ports autorisés :# firewall-cmd --remove-port=11211/udp # firewall-cmd --runtime-to-permanent
Si vous utilisez un seul serveur Memcached sur la même machine que votre application, configurez
memcached
pour qu'il n'écoute que le trafic local. Modifiez la valeur deOPTIONS
dans le fichier/etc/sysconfig/memcached
:OPTIONS="-l 127.0.0.1,::1"
Activer l'authentification SASL (Simple Authentication and Security Layer) :
Modifier ou ajouter le fichier
/etc/sasl2/memcached.conf
:sasldb_path: /path.to/memcached.sasldb
Ajouter un compte dans la base de données SASL :
# saslpasswd2 -a memcached -c cacheuser -f /path.to/memcached.sasldb
Assurez-vous que la base de données est accessible à l'utilisateur et au groupe
memcached
:# chown memcached:memcached /path.to/memcached.sasldb
Activez le support SASL dans Memcached en ajoutant la valeur
-S
au paramètreOPTIONS
dans le fichier/etc/sysconfig/memcached
:OPTIONS="-S"
Redémarrez le serveur Memcached pour appliquer les modifications :
# systemctl restart memcached
- Ajoutez le nom d'utilisateur et le mot de passe créés dans la base de données SASL à la configuration du client Memcached de votre application.
Crypter les communications entre les clients et les serveurs Memcached avec TLS :
Activez la communication cryptée entre les clients et les serveurs Memcached avec TLS en ajoutant la valeur
-Z
au paramètreOPTIONS
dans le fichier/etc/sysconfig/memcached
:OPTIONS="-Z"
-
Ajoutez le chemin d'accès au fichier de la chaîne de certificats au format PEM à l'aide de l'option
-o ssl_chain_cert
. -
Ajoutez un chemin d'accès au fichier de clé privée à l'aide de l'option
-o ssl_key
.