Sécuriser votre serveur Memcached

Description de la vulnérabilité :

Par défaut, memcached est accessible dans le monde entier sur le port UDP et TCP 11211. Entre autres avantages de memcached, il est possible de s’y connecter à l’aide d’un protocole aussi simple que Telnet et de lancer une commande « stat », pour obtenir de l’information à propos du service lui-même, ou d’autres commandes pour récupérer les données mises en cache par le service. Or, selon le rôle de ce service dans votre infrastructure et selon les politiques de gestion de l’information et les normes de programmation au sein de votre organisation, il est possible que ce service mette en cache de l’information hautement confidentielle. Ce service accessible au grand public pourrait ainsi transmettre à votre insu de l’information confidentielle à une tierce partie. 

Aussi, le service memcached basé sur UDP peut être exploitée pour effectuer des attaques par amplification (l'attaquant peut falsifier l'adresse IP de sa cible pour la saturer avec les réponses de votre serveur).

Par conséquent, ce service ne devrait jamais être accessible au grand public, et ce, malgré sa configuration par défaut. L’accès doit se limiter à votre infrastructure.

Versions touchées :

Toutes les versions de memcached.

Vérifier la vulnérabilité de votre serveur :

Vous pouvez tester l’adresse IP de votre serveur à l’aide de la commande (remplacez <ipaddress> par l’adresse IP de votre serveur) :

Test pour UDP:

# echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u <ipaddress> 11211

Exemple de résultat lorsque le service est exposé:
STAT pid 1111
STAT uptime 246345
STAT time 1526499414
STAT version 1.4.4
STAT pointer_size 64
[...]

Test pour TCP:

# nmap -Pn -p 11211 <ipaddress> --script memcached-info

Exemple de résultat lorsque le service est exposé:
PORT      STATE SERVICE
11211/tcp open  unknown
| memcached-info:
|   Process ID           1726
|   Uptime               43215969 seconds
|   Server time          2015-04-01T14:09:03
|   Architecture         32 bit
|   Used CPU (user)      0.728889
|   Used CPU (system)    1.032842
|   Current connections  10
|   Total connections    1678
|   Maximum connections  1024
|   TCP Port             11211
|   UDP Port             11211
|_  Authentication       no

Solution :

1) Si vous n’avez pas besoin de memcached dans votre organisation, vous devriez désactiver ce service et le désinstaller du serveur.

2) Si vous avez besoin de memcached seulement sur le serveur sur lequel le service est exécuté :

Modifiez le fichier de configuration /etc/sysconfig/memcached
Remplacez :

OPTIONS=""

par

OPTIONS="-l 127.0.0.1"

et procédez à un redémarrage de votre service memcached à l’aide de la commande suivante :

service memcached restart

Assurez-vous de mettre à jour les services qui utilisent ce service memcached, afin qu’il se connectent à l’aide de l’adresse IP « 127.0.0.1 » ou « localhost », car l’adresse IP du serveur ou le service pourraient ne plus être accessibles. 

3) Si vous avez besoin de memcached sur d’autres serveurs dans votre organisation :

Dans ce cas, la meilleure option consiste à bloquer l’accès à ce service au grand public, et à limiter l’accès à quelques adresses IP seulement, en utilisant un filtre de paquets (p. ex., iptables) ou un pare-feu matériel s’il y en a un de disponible.

Facultatif

Vous pouvez utiliser une configuration plus avancée pour accorder des accès à des hôtes autorisés par l’intermédiaire de l’authentification SASL :
http://www.shanison.com/2014/04/29/setup-memcached-with-sasl-authentication/

memcached avec Zimbra: https://wiki.zimbra.com/wiki/Blocking_Memcached_Attack

 

Vous avez d’autres questions ? Envoyer une demande

0 Commentaires

Cet article n'accepte pas de commentaires.
Réalisé par Zendesk