8 votes

Accès à distance au compte MySQL "root" @ "localhost" non sécurisé ?

Un peu de contexte : Nous venons de nous faire pirater notre système PBX. Le serveur lui-même semble sécurisé (pas d'accès non autorisé à la console - SSH, etc.), mais les pirates ont réussi à injecter un nouvel utilisateur administrateur dans le logiciel PBX (FreePBX, basé sur MySQL). Les journaux Apache indiquent que les pirates ont réussi à ajouter l'utilisateur sans utiliser l'interface web (ou un exploit dans l'interface web).

Depuis, j'ai découvert que MySQL fonctionnait sans mot de passe root ( !!) et qu'il était ouvertement lié à l'adresse IP externe (évidemment, j'ai verrouillé cela maintenant). Cependant, le seul utilisateur de niveau racine dans MySQL était 'root'@'localhost' et 'root'@'127.0.0.1' qui n'auraient dû être accessibles que localement.

Donc, ma question est la suivante :

Existe-t-il un moyen d'usurper une connexion à MySQL afin qu'elle autorise la connexion de l'utilisateur 'root'@'localhost' à partir d'une adresse IP distante, SANS exécuter d'autre exploit localement ?

Pour référence, la boîte est Centos 5 (Linux 2.6.10) exécutant Mysql 5.0.95.

2voto

user1344545 Points 403

Le nom root est créé par défaut et est très connu. La valeur littérale root n'a aucune signification dans le système de privilèges de MySQL. Il n'est donc pas nécessaire de continuer avec le nom d'utilisateur. root .

Vous devriez changer root le nom d'utilisateur à quelque chose d'autre afin que le monde extérieur ne puisse pas l'identifier (le deviner) facilement, ce qui réduira les tentatives de piratage.

Par exemple : Si vous avez un utilisateur en tant que root @ localhost qui est connu de tous et que les hackers essaieront de connecter, vous devriez le changer en quelque chose de spécifique comme admin_db_name @ localhost pour une meilleure sécurité.

Surveillez une variable d'état appelée Aborted_connects périodiquement pour savoir Refused connexion à votre serveur MySQL, elle devrait être de 0 après Flush status; et ne devrait pas augmenter davantage.

afficher un statut comme 'Aborted_connects' ;

2voto

mkedobbs Points 2355

Fait "aucun accès non autorisé enregistré" inclure les tentatives de connexion échouées ? Si non, cela pourrait être CVE 2012-2122 .

[...] lorsqu'il est exécuté dans certains environnements avec certains implémentations de la fonction memcmp, (MySQL) permet à des attaquants distants de contourner l'authentification en s'authentifiant à plusieurs reprises avec le même mot de passe incorrect, ce qui provoque finalement une comparaison de jetons pour comparaison de jetons réussit en raison d'une valeur de retour incorrectement vérifiée.

1voto

Shane Madden Points 112034

Non.

MySQL ne vous connectera jamais à un utilisateur avec l'extension localhost ou 127.0.0.1 spécification de l'hôte si vous ne venez pas du système local. Notez que cela couvre également la vulnérabilité de contournement d'authentification, CVE 2012-2122 ; la comparaison du mot de passe peut être trompée, mais pas celle de l'hôte.

Vous devez avoir un proxy sur le système pour "tromper" la vérification de l'hôte source. Quelque chose comme phpmyadmin, ou un équilibreur de charge comme HAProxy fonctionnant devant le port TCP de MySQL me vient à l'esprit.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X