Comment puis-je bloquer les tentatives de piratage visant phpMyAdmin?


35

Mon site Web reçoit quotidiennement des milliers de visites de différentes adresses IP:

/php-myadmin/
/myadmin/
/mysql/

... et des milliers d'autres variations. Aucun de ces répertoires n'existe, je n'ai même pas phpmyadmin sur mon serveur.

Je pense qu'aucune de ces tentatives n'a abouti. Toutefois, ils doivent peser lourdement sur les ressources du serveur et gaspiller de la bande passante. Je souhaiterais donc les arrêter si possible. J'ai bloqué une poignée de ces adresses IP, mais elles reviennent sans cesse avec de nouvelles adresses IP. Existe-t-il un moyen d'éviter ce problème de manière plus permanente?


8
Des milliers de visites par jour ne sont rien. Avez-vous réellement des problèmes de performance ou supposez-vous simplement? Quelques milliers de 404 par jour ne sont vraiment rien .
MDMarra

Non, je ne rencontre pas de problèmes de performances. Mais ça m'énerve et je me demandais si je pouvais faire quelque chose.
amba88

6
Soyez prudent avec le blocage basé sur IP: de nombreuses IP finissent par être renvoyées aux utilisateurs légitimes. De plus, certains utilisateurs légitimes peuvent être infectés dans le cadre d'un botnet. Si vous effectuez un blocage basé sur IP, assurez-vous que son délai d'expiration est raisonnablement court.
Bob

Aucune mention de mod_securitydans ce fil, alors vérifiez cela . Notez qu'un commentaire ci-dessous indique que cela entraînerait en réalité davantage de travail du serveur. Alors peut - être mod_evasiveserait également bon de mettre en œuvre . fail2ban, mais c'est énuméré ci-dessous.
Mbrownnyc

Réponses:


42

Ne t'inquiète pas pour ça. Servir un 404 est un travail minuscule pour un serveur Web. Vous pourriez probablement desservir dix 404 par seconde en utilisant un 486. La bande passante par 404 est négligeable; une petite requête GET et une minuscule réponse 404.

Sérieusement; ne t'inquiète pas pour ça. Cela fait partie intégrante de l’exécution d’un serveur sur Internet.


14
Hell-Banning: Servir une page normale (200 OK) avec une sortie de charabia. Les outils que les enfants utilisent rapporteront la page trouvée et ils devront enquêter à la main (une fausse page de connexion serait certainement un appareil diabolique) :)
12h23

4
@arul - Certains attaquants pourraient prendre cela comme un défi et accorder une attention supplémentaire à votre serveur par dépit. Servir un 404 plus petit ou différent serait-il utile du tout ici? Par exemple, si l'hôte sert normalement un 404 avec un lien de support, devrait-il / devrait-il plutôt servir un 404 standard sans contenu pour ces URL ciblées?
Freiheit

1
Le but est d’amener l’adversaire à dépenser des ressources supplémentaires (temps) pour analyser les résultats. Si vous obtenez un 404, vous savez qu'il n'y a aucune possibilité que l'attaque fonctionne. Les résultats OK de longueur variable sont [sans autre enquête] impossibles à distinguer des résultats attendus. Ils exécutent ces scans parce que la patience n'est pas leur vertu, alors démotivez l'enfer et ils s'arrêteront :)
arul

1
Pour obtenir des points bonus, renvoyez une page statique qui ressemble exactement à la page réelle de phpmyadmin, mais qui n’est pas fonctionnelle.
captncraig

1
Pour des points bonus supplémentaires, créez un délai de 0,5 à 1 seconde. Cela n'augmentera pas de manière significative le temps de chargement par des utilisateurs légitimes, mais ralentira l'analyse effectuée par les pirates. (Vous devez simplement vous assurer que votre serveur a la capacité de maintenir les connexions ouvertes plus longtemps que nécessaire et de toujours traiter les demandes légitimes.)
Moshe Katz

38

Malheureusement pour vous, voici comment Internet fonctionne. N'y faites pas attention. Des milliers de robots / chevaux de Troie scannent Internet. L'IP source sera toujours aléatoire. Il n'y a pas de cure.

La seule solution à 100% pour éliminer ce trafic est illustrée ci-dessous: entrez la description de l'image ici

Une alternative consiste à:
- passer avec https / http du port 80/443 à autre chose. Les robots ne recherchent généralement pas de serveur http sur tous les autres ports 65k.
- utilisez un VPN pour vous connecter au serveur (je suppose que cela n’est pas possible si vous hébergez un site Web public).


LOL +1 pour le diagramme :-) J'ai ce problème ennuyeux (comme nous tous) sur un site statique et c'est la réponse la plus utile.
Dave Everitt

30

Ce que vous voulez, c'est Fail2ban (en supposant qu'il s'agisse d'une machine linux, vous n'avez pas dit ...)

Qu'est-ce que Fail2ban?

Fail2ban analysera les journaux système pour rechercher les expressions régulières à bloquer. Lorsqu'il trouve une correspondance (ou plusieurs correspondances provenant de la même adresse IP, selon la manière dont vous l'avez configurée), il se bloque, généralement via IPTables. Généralement, cette option est utilisée pour bloquer les tentatives d’authentification ayant échoué contre SSH ou des serveurs Web.

Vous le configurez pour les interdire pendant un certain temps (il peut s'agir de minutes, de jours ... dépend de leur persistance), après quoi l'interdiction expirera, à moins qu'ils n'essayent à nouveau.

Comment cela aide-t-il à bloquer les robots d'analyse de phpmyadmin?

Il peut tout aussi bien être utilisé pour faire correspondre les signes courants d’une attaque, comme tenter d’accéder à des dossiers phpmyadmin non existants. Vous devrez trouver la bonne expression régulière pour correspondre à de telles tentatives et vous assurer de ne pas bloquer les utilisateurs légitimes.

La configuration donnée dans cet article de blog peut fonctionner verbatium ou nécessiter quelques ajustements pour votre configuration.

Pourquoi devrais-je les bloquer? Les erreurs 404 ne coûtent pas cher

Les bloquer dans iptables a une certaine utilité - s'ils vérifient les vulnérabilités de phpmyadmin, il est probable qu'ils essaieront également d'autres services pour les vulnérabilités, jusqu'à ce qu'ils rencontrent quelque chose qui fonctionne. Si vous les bannissez, la plupart des scripts / scripts abandonneront après un certain temps et ils passeront à de meilleures cibles.

Même si les analyses ne coûtent pas cher (sauf si elles trouvent réellement une vulnérabilité), elles inondent vos journaux, ce qui rend plus difficile la détection d'attaques réussies et de problèmes avec votre serveur Web.

Comme le dit le commentaire ci-dessous, Fail2ban nécessite certaines ressources système. Mais pas beaucoup. À tout le moins, je peux dire que je n’ai jamais eu un problème de performance que je pourrais attribuer à Fail2ban. J'ai toutefois eu des problèmes de performances avec des scripts très agressifs qui essayaient de forcer brutalement les mots de passe ou qui lançaient des milliers de tentatives d'injection SQL et d'autres exploits par seconde sur mon serveur. Les bloquer au niveau du pare-feu nécessite FAR moins de ressources que les bloquer au niveau du serveur / de l'application. Il peut également être étendu pour exécuter des scripts personnalisés pour interdire les adresses IP. Ainsi, au lieu de les interdire dans IPtables, vous pouvez éventuellement les interdire dans un pare-feu matériel ou envoyer un e-mail à quelqu'un si la même personne continue de vous attaquer pour pouvoir vous plaindre. auprès de votre fournisseur de services Internet ou demandez à votre centre de données de les bloquer sur leur pare-feu.

Des autres conseils?

Il est FORTEMENT RECOMMANDÉ de mettre en liste blanche quelques adresses IP que vous contrôlez afin de ne pas vous verrouiller accidentellement.


6
ce sera un gaspillage de ressources :) Je pense que vous utiliserez plus de cycles de processeur sur Fail2ban que de simplement servir parfois 404 :)
Bartłomiej Zarzecki

4
@ BartłomiejZarzecki Une meilleure sécurité nécessite toujours plus de ressources
user11153

3
@ heinrich5991 il va bloquer après les premiers essais. Cela ne fait aucune différence pour certaines analyses, mais une différence énorme pour les analyses qui tentent plusieurs tentatives sur le serveur.
Grant le

2
Fail2ban (ou similaire) sera, espérons-le, pour plus que juste / phpmyadmin. En supposant qu’il dispose de tout type d’accès à distance, le blocage de type F2B (3 mots de passe et vous ... êtes ... parti!) Concerne plus de 404 utilisateurs.
WernerCD

3
Si vous agissez de la sorte, veillez à ce que l'interdiction expire assez rapidement (quelques heures au maximum), sinon vous risquez de verrouiller des utilisateurs légitimes si l'attaque provient d'une adresse IP allouée de manière dynamique.
Jens Neubauer

7

Ce que je fais est de mettre un petit script dans le répertoire approprié, de sorte qu'il s'exécute si quelqu'un accède à / phpmyadmin /. Ce script ne fait rien d'autre qu'appeler iptables (sous Linux), qui bloque l'adresse IP qui accède au script pendant 30 minutes (après quoi une tâche cron efface la chaîne iptables à laquelle l'adresse IP est ajoutée).

L'avantage par rapport à fail2ban est que vous n'utilisez aucune ressource pour analyser le journal syslog / access-log. L’inconvénient, bien sûr, est que vous ne vérifiez rien d’autre, si ce n’est accéder à cette adresse très spécifique.

Pourquoi je fais ça? Bien sûr, servir un serveur 404 serait facile pour le serveur, mais je ne veux pas qu’ils fouillent, aussi simple que cela. Je veux perdre le temps de leur outil en attendant que le serveur réponde, en essayant de relancer jusqu'à ce qu'il abandonne. En outre, si vous ne les bloquez pas, ils essaieront de nombreuses URL différentes avant de passer à autre chose - parfois plus de mille. En fonction de l'outil, il peut être "sympa" et les espacer de quelques heures, ou ne pas s'en soucier et écraser votre serveur en quelques minutes.

Pourquoi ne sers-je pas une page valide? Leur outil peut arrêter de vous scanner et alerter le skiddie qui l’exécute - qui doit alors vérifier le fichier manuellement. Le revers de la médaille est qu’ils donneront à votre serveur un aspect beaucoup plus attentif qu’ils ne l’auraient fait, si leur analyse ne vous faisait pas apparaître les résultats. Peut-être vont-ils en fouiller un peu plus, peut-être quelques analyses de ports, peut-être vous les énervez, et ils lancent un DoS pour voir s’ils peuvent faire quelque chose. Le simple fait de les bloquer (ce qui, de leur point de vue, fait que le serveur expire au moment où ils accèdent au script phpmyadmin), est un gaspillage efficace du temps de leur outil, tout en évitant toute attention indésirable.

Si vous avez phpMyAdmin sur le serveur, une solution efficace peut être de le placer dans un répertoire séparé et d'utiliser le contrôle des mots de passe de votre serveur Web (.htpasswd pour Apache) pour bloquer l'accès avant même que quoi que ce soit ne l'atteigne.


Cela semble être une bonne alternative ... mais cela ne nécessite-t-il pas que le serveur Web soit en mesure d'exécuter le script avec les autorisations root?
Grant

1
Ajustez l'alias pour des outils tels que phpMyAdmin. Changement simple dans le fichier de configuration pour le changer en adminMyPhp ou chrisPhpAdmin ... ou quelque chose qui ne sera pas script-kiddied.
WernerCD

Désolé pour la réponse tardive - ce n'est pas (nécessairement). Vous pouvez utiliser sudo (avec le fichier sudoers) pour autoriser le serveur Web à exécuter un script connu (et uniquement ce script) avec des autorisations root. Ce script accepterait (en paramètre) l’adresse IP et vous le compareriez à une expression régulière ([0-9] + \. [0-9] + \. [0-9] + \. [0-9] + ) pour s’assurer qu’il n’injecte rien d’étrange.
Aaa

1

FWIW, nous limitons l’accès à / phpmyadmin / aux adresses IP de la liste blanche uniquement.

Nous utilisons également mod_evasive (sur apache2) pour dissuader les attaques par script sous DOS / mal conduites.


1

lier l'outil d'administration mysql à l'adresse de votre machine 127.0.0.1

Ensuite, utilisez ssh avec la redirection de port pour accéder à votre back-office admin.

ajoutez une couche de sécurité supplémentaire qui peut être assez transparente.


-4

Le meilleur moyen que nous ayons trouvé est de protéger par mot de passe le dossier dans lequel phpmyadmin se trouve. En outre, n'utilisez rien qui soit en relation avec phpmyadmin en tant que nom de dossier: pma, phpm, etc ...


2
De la question: None of these directories exist, I don't even have phpmyadmin on my server.- Il ne demande pas comment renforcer ses installations existantes ... il demande quoi faire à propos de choses qui n'existent pas. Vous ne pouvez pas renommer PMAou ce que vous avez s'il n'existe pas.
WernerCD
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.