2016-10-13 1 views
1

J'ai été en proie à une attaque sur mon serveur, et ont bloqué xmlrpc accès en incluant les éléments suivants dans le fichier de configuration apache:Attaque sur MySQL - et comment l'empêcher?

<files xmlrpc.php> 
    order allow,deny 
    deny from all 
</files> 

Maintenant, au lieu d'écraser le service mysql toutes les deux heures, il broie une fois/deux fois un jour. Ce qui est toujours un problème. fail2ban interdictions 2 tentatives ssh échouées pendant une heure. Cependant, je ne vois 100+ à propos des entrées suivantes dans le daemon.log:

mysqld [18852]: 13/10/2016 03:06:40 139773247216384 [Avertissement] L'accès refusé pour l'utilisateur 'root' @ '139.196.28.237' (en utilisant le mot de passe: OUI)

Toutes ces tentatives se produisent plus de 100 dans une minute et une heure plus tard je vois plusieurs messages comme:

mysqld [18852]: 2016 -10-13 3:32:52 139773325777664 [Avertissement] Non sécurisé statem ent écrit dans le journal binaire en utilisant le format d'instruction depuis BINLOG_FORMAT = STATEMENT. L'instruction est dangereuse car elle utilise une clause LIMIT . Ceci est dangereux car l'ensemble des lignes incluses ne peut pas être prédite. Déclaration: SUPPRIMER DE wp_generic_optionsoption_name LIKE 'jetpack \ _nonce \ _%' et CAST (option_value AS UNSIGNED) < 1476340372 ORDER BY option_id LIMITE 100

quelque temps, il semble plus tard que le service MySQL obtient redémarre , mais échoue ensuite, et les lignes suivantes se trouvent dans le journal des erreurs:

InnoDB: Initializing buffer pool, size = 256.0M 
InnoDB: mmap(281542656 bytes) failed; errno 12 
InnoDB: Cannot allocate memory for the buffer pool 
Plugin 'InnoDB' init function returned error. 
Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 
Unknown/unsupported storage engine: InnoDB 
Aborting 

Quelqu'un peut-il m'expliquer ce qui se passe? Et comment arrêter et empêcher que cela ne se reproduise?

+1

Il manque beaucoup d'informations ici. Je suppose que vous utilisez WordPress? Avec apache? Il est possible que les attaques arrivent par là si vous utilisez une ancienne version, ou avec un mauvais plugin? Il est également possible que votre serveur MySQL soit exposé à Internet, auquel cas le premier travail consisterait à l'ignorer, en supposant que vous n'avez pas besoin d'un accès direct. –

Répondre

2

La géolocalisation de l'adresse IP 139.196.28.237 indique qu'elle provient de Hangzhou, en Chine. Est-ce là l'origine des clients MySQL lorsqu'ils se connectent à votre instance MySQL? Sinon, vous pouvez avoir un attaquant externe. Vous ne devriez probablement pas permettre aux clients externes d'atteindre votre serveur MySQL. Vous avez besoin d'un pare-feu pour bloquer le port de MySQL des demandes externes.

Le message d'avertissement concernant l'instruction dangereuse dans votre journal binlog peut ne pas être lié. Je me souviens que "jetpack" est un plugin WordPress populaire, et la requête SQL peut être une partie normale du code pour jetpack. Vous pouvez corriger ces avertissements en changeant votre format binlog MySQL en MIXED ou ROW. Pour plus d'informations sur les instructions non sécurisées, lisez https://dev.mysql.com/doc/refman/5.7/en/replication-rbr-safe-unsafe.html

Les erreurs sur InnoDB ne disposant pas de mémoire allouée de 256 Mo pour son pool de mémoire tampon indiquent que les processus sur votre serveur utilisent plus de mémoire que le serveur. InnoDB n'alloue pas de mémoire sauf si de la mémoire physique est disponible (elle n'alloue pas de mémoire qui est déjà en cours d'échange). Cela peut également ne pas être lié aux tentatives de connexion. Vous devez augmenter la mémoire sur votre serveur. Si vous utilisez AWS, vous devez augmenter la taille de l'instance.