Aller au contenu

Attaque d'un pirate ?


apotheose

Messages recommandés

Bonjour à tous,

Il y a quelques semaines, j'ai eu un différend avec le développeur qui avait travaillé sur le développement du back-office du site Internet de l'agence que je dirige.

Depuis samedi, comme par hasard (même peut-être est-ce seulement un hasard), toutes les pages JPS du site affichent une belle erreur HTTP Status 500 (le site est sur Apache Tomcat), ce qui est plutôt dramatique pour le "sérieux" de ma société.

Quand j'essaie de me connecter à ma base SQL pour savoir ce qui se passe, voilà ce qui s'affiche :

phpMyAdmin - error

#1226 - User 'blabla' has exceeded the 'max_connections' resource (current value: 50)

Le service technique de mon herbergeur althosting m'a alors répondu ceci :

1) Un de vos scripts semble se connecter a la base mysql mais ne se referme pas nous avons plusieurs centaines de connection de votre utilisateur en mode sleep, merci de remedié à ce problème.

2) Il semble qu'il y ai quelque part sur votre site une fonction qui se connecte en permanence sur le serveur sans jamais se deconnecter (les requetes restent en mode sleep) d'ou l'erreur que vous obtenez.

3) Vous n'etes pas en mesure de vous connecter car il y a trop de connection actuellement de votre compte sur le serveur sql, il semble que ce soit votre site qui crée ses connections , sans doute une requete sql non fermé, nous avons reseter votre nombre de connection votre site devrait donc remarcher mais il faudrait pouvoir identifier la requete qui pose problème.

Effectivement, depuis qu'ils ont "reseté" la chose, ça marche, mais la liste des processus de la base SQL s'allonge minute après minute :

ID Utilisateur Serveur Base de don. Commande Durée

16743 blabla localhost:2611 blabla Sleep 1550

16744 blabla localhost:4823 blabla Sleep 1523

16746 blabla localhost:4851 blabla Sleep 1425

16748 blabla localhost:1917 blabla Sleep 1346

16749 blabla localhost:3083 blabla Sleep 1308

16753 blabla localhost:3246 blabla Sleep 1259

16755 blabla localhost:3176 blabla Sleep 1242

16760 blabla localhost:2721 blabla Sleep 1180

16815 blabla localhost:1346 blabla Sleep 956

16825 blabla localhost:1955 blabla Sleep 904

16842 blabla localhost:1237 blabla Sleep 674

16844 blabla localhost:2410 blabla Sleep 561

16845 blabla localhost:1358 blabla Sleep 496

16889 blabla localhost:4893 blabla Sleep 386

16903 blabla localhost:4442 blabla Sleep 194

16919 blabla localhost:2445 blabla Sleep 86

Je suis légèrement nul en informatique (je sais programmé en C et HTML, mais rien de plus), mais savez-vous ce qui se passe et ce que je peux faire pour réparer le problème ?

Mille mercis ! :-)

Lien vers le commentaire
Partager sur d’autres sites

Pour ma part, je dirais de partir à la recherche dans le code d'une fonction qui appelle la BDD sans jamais fermer la connexion, ce qui peut s'avérer très vite fastidieux en fonction de la taille du site et de la logique de codage du dev.

Peut-être qqun aura une solution plus rapide et plus simple à te proposer, moi je ne vois que ça :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Si tu peux mettre les mains dans ton code ou si quelqu'un peut le faire pour toi, tu devrais tenter un truc:

Faire en sorte que chaque requête s'identifie quand elle ouvre et referme la connexion (genre, elle écrit dans un fichier log que la requete "bla bla bla" du fichier xxx.java ligne xyz a démarré le XX/YY/ZZ à HH:MM:SS et s'est finie le XX/YY/ZZ à HH:MM:SS).

Bien sûr, cette écriture se fait en 2 fois: une première fois lors de l'ouverture de la connexion et une deuxième à la fermeture

Et là, tu verras apparaitre des lignes qui auront une date et une heure de début mais pas de fin!!! :transpi:

À partir de là, tu connais la requête SQL en question (parce qu'elle sera écrite dans le fichier log), et tu pourras remonter à la source du pb...

Lien vers le commentaire
Partager sur d’autres sites

Solution propre : trouver dans le script les appels à la BDD et refermer les accès à la base quand les requettes sont terminées.

Si jamais personne n'a les compétences pour faire ça, il est toujours possible de mettre un reset dans le cron, mais c'est hyper crade.

Merci, mais c'est compliqué, tout ça... :(

La série noire continue, puisque lorsque j'envoie un fichier sur le serveur via mon FTP, ça me met maintenant :

"Requested action not taken (e.g., file or directory not found, no access)"

Lien vers le commentaire
Partager sur d’autres sites

Tu peux aussi, accesoirement, reconfiguré ton serveur SQL, pour qu'au lieu qu'il laisse des connexions inactives pendant 8 heures, qu'il ne les laissent que pendant 10 secondes avant de les couper tout seul. C'est la solution que j'ai utilisé sur le site d'un ami, parce que je n'avais pas envie de lire ces milliers de fichiers. :)

Lien vers le commentaire
Partager sur d’autres sites

Merci bien pour ta réponse.

Mais personne n'a touché au code depuis des semaines (à part le présumé "pirate" ?). Où le code peut-il avoir été pis ? Dans les pages .jsp ?

Je connais pas le jsp, mais vu que c'est du code JAVA, oui l'erreur se situe quelque part la-dedans!

Maintenant, il te faut trouver là où la connexion ne se referme pas: bonne chance pour trouver si tu ne connais rien en programmation

P.S.: je t'invite, si ce n'est déjà fait, à changer les mdp de connexions au site et à la BDD afin que plus aucune intrusion ne vienne de l'éventuel pirate

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...