Project

General

Profile

Anomalie #3532

Le filesystem de la VM Drupal partie Mysql se remplit dangereusement

Added by Frédéric Couchet almost 3 years ago. Updated almost 3 years ago.

Status:
Fermé
Priority:
Immédiate
Assignee:
Christian P. Momon
Category:
-
Target version:
Start date:
01/02/2019
Due date:
% Done:

0%

Estimated time:
Difficulté:
2 Facile

Description

Salut,

ce mercredi 2 janvier 2019 matin le site www.april.org était down :

Erreur 50x - Le service demandé n'est pas accessible pour le moment

/var/lib/mysql était à 100%

Il y avait dans /var/lib/mysql/drupal6 deux fichiers watchdog-170409101709.BAK watchdog-181030225617.BAK qui prenaient 1,6 Go,
je les ai déplacé dans ~root. Mais je pense qu'on peut les supprimer, je
vous laisse juges.

/var/lib/mysql est ensuite à 58%.

Le site est de retour.

Mais vers 15h00 j'ai noté que /var/lib/mysql était à 89% avec notamment un fichier drupal6/watchdog.MYD de 1,2 Go.

Il faudrait voir si une config a été modifiée au niveau du Drupal qui générerait ce problème.

Ou alors c'est en lien avec https://agir.april.org/issues/1919.

History

#1

Updated by Christian P. Momon almost 3 years ago

A priori, un fichier watchdog de Mysql qui grandit est un signe d'activité du site web l'utilisant.

Dans les logs Apache, détection d'une IP qui floode un peu (1 000 000 de requêtes depuis hier) :

(April) root@drupal6:/var/log/apache2# zgrep -n 42.49.180.xx www.april.org.access.log |wc -l
227493
(April) root@drupal6:/var/log/apache2# zgrep -n 42.49.180.xx www.april.org.access.log.1 |wc -l
798642
(April) root@drupal6:/var/log/apache2# head -1 www.april.org.access.log www.april.org.access.log.1 
==> www.april.org.access.log <==
109.234.x.x - - [02/Jan/2019:06:25:24 +0100] "GET /lav.xml HTTP/1.0" 200 664657 "-" "-" 

==> www.april.org.access.log.1 <==
109.234.x.x - - [01/Jan/2019:06:25:28 +0100] "GET /lav.xml HTTP/1.0" 200 664657 "-" "-" 

Les requêtes ne sont pas gentilles :

"GET /en/category/ HTTP/1.0" 404 22282 "https://www.april.org:443/" "uB8ZDnn6';select pg_sleep(3); --" 
"GET /en/category/ HTTP/1.0" 404 22282 "https://www.april.org:443/" "CKZULjdk');select pg_sleep(6); --" 
"GET /en/print/node HTTP/1.0" 200 6888 "https://www.april.org:443/" "Xz2SwCKV'));select pg_sleep(9); --" 
"GET /en/category/ HTTP/1.0" 404 22282 "https://www.april.org:443/" "9QghF5Ig'));select pg_sleep(6); --" 
"GET /en/print/node HTTP/1.0" 200 6888 "https://www.april.org:443/" "(select convert(int,CHAR(65)))" 
"GET /en/category/themes/ HTTP/1.0" 404 18649 "https://www.april.org:443/" "(select(0)from(select(sleep(6)))v)/*'+(select(0)from(select(sleep(6)))v)+'\"+(select(0)from(select(sleep(6)))v)

L'IP semble être utilisée en Chine :

whois 42.49.180.xx
[…]
inetnum:        42.48.0.0 - 42.49.255.255
netname:        UNICOM-HN
descr:          China Unicom HuNan province network
descr:          China Unicom
descr:          No.21,Jin-Rong Street,
descr:          Beijing 100033
country:        CN

Ban de l'IP sur la VM bastion dans /etc/nginx/sites-available/sites-enabled/www.april.org :

location / {
    # Ban IP from cracker generating huge Mysql watchdog file (#3532).
    deny 42.49.180.18;

    proxy_pass http://172.16.0.7;
}

Constatation : le fichier watchdog de Mysql grandit 5 fois moins vite : passe de ~30Mo/h à ~5Mo/h.

À étudier :
  • débannir l'ip ;
  • consolider l'espace disque Mysql pour résister à de « plus » fortes sollicitations.
#2

Updated by Christian P. Momon almost 3 years ago

  • Status changed from Nouveau to En cours de traitement
#3

Updated by Quentin Gibeaux almost 3 years ago

À noter qu'on a eu un cas un peu similaire de spam (mais juste un crawl) le mois dernier : https://agir.april.org/issues/3524
J'avais bloqué directement via iptables sur bastion

#4

Updated by François Poulain almost 3 years ago

J'ai aussi réduit au minimum (100) le crappy log de drupal dans https://www.april.org/admin/settings/logging/dblog qui pourri la table watchdog. J'ai forcé le cron via https://www.april.org/admin/reports/status

#5

Updated by Quentin Gibeaux almost 3 years ago

  • Assignee set to Christian P. Momon
#6

Updated by Quentin Gibeaux almost 3 years ago

  • Target version changed from Décembre 2018 to Janvier 2019
#7

Updated by Quentin Gibeaux almost 3 years ago

Débannir l'IP et vérifier si l'attaque continue

#8

Updated by Christian P. Momon almost 3 years ago

IP débannie et constat de l'absence de requête depuis cette IP.

#9

Updated by Christian P. Momon almost 3 years ago

  • Status changed from En cours de traitement to Résolu
#10

Updated by Quentin Gibeaux almost 3 years ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF