Mon serveur est détourné pour du spam !!!

  • Auteur de la discussion Auteur de la discussion rudddy
  • Date de début Date de début
Bonjour,

j'ai vu récemment à de plusieurs reprises que mon IP est considéré comme spam par plusieurs fai, dont hotmail.fr, wanadoo et orange.

J'ai reçu un retour de mail en erreur :

j'ai regardé le message d'origine : ce n'est pas moi qui 'avait envoyé : c'était un spam (medHelp) et j'ai analysé les entêtes de ce mail :

Return-Path: <>
Delivered-To: 1-webmaster@monmail.fr
Received: (qmail 2038 invoked from network); 28 Mar 2008 18:12:55 +0100
Received: from mx.mailprotect.be (217.19.237.57)
by nsXXXXX.ovh.net.84.101.00.in-addr.arpa with SMTP; 28 Mar 2008 18:12:55 +0100
Received: by mx.mailprotect.be (Postfix)
id EC1B74A0151; Fri, 28 Mar 2008 18:09:59 +0100 (CET)
Date: Fri, 28 Mar 2008 18:09:59 +0100 (CET)
From: MAILER-DAEMON@mx.mailprotect.be (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: webmaster@monmail.fr
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="5A1B64A021D.1206724199/mx.mailprotect.be"
Message-Id: <20080328170959.EC1B74A0151@mx.mailprotect.be>

et apparemment le spammeur a utilisé mon serveur pour faire son envoi !!!!

comment bloquer cela ???


Merci de votre aide !!
 
finstreet a dit:
bon courage pour sécuriser tes formulaires :)

oui c'est vrai que j'ai un formulaire de contact sur mon site et je recois en ce moment une fois par jour une demande de spam avec des url ds mes champs de formulaire.

1- comment se protéger de cela ?
2- les spammeurs passent par là pour envoyer leur pourriel ?
 
Hello,

les causes les plus fréquentes :
- détournement d'un formulaire de contact sur un des sites
- serveur de mail en "open relay"
- "hack de la machine" pour faire tourner un outil dédié au spam

Maintenant es tu certain que le mail en question soit bien passé par ta machine ?

Edit : pour les formulaires de contact, c'est un grand classique. Il suffit d'interdire les retours chariot dans les différents champs (From / To / Sujet généralement) et c'est réglé.
 
Bool a dit:
Hello,

les causes les plus fréquentes :
- détournement d'un formulaire de contact sur un des sites
- serveur de mail en "open relay"
- "hack de la machine" pour faire tourner un outil dédié au spam

Maintenant es tu certain que le mail en question soit bien passé par ta machine ?

oui suivant l'entête de ce mail : il comprend mon nom de sreveur : nsXXXX.ovh.net !!!

comment vérifier les 3 points que tu as précisés ???
 
- serveur de mail en "open relay"
Le plus simple : vérifier que le serveur demande bien une authentification avant de donnée la possibilité d'envoyé un mail. (vous pouvez facilement tester ça avec un telnet addresse_du_serveur 25).

Ensuite, si il demande une authentification, regarder quelles utilisateurs ont le droits d'envoyer des mails (sous linux, à parts root et les logins d'utilisateurs, il faudrait tous les bloquer .... et en particulier l'utilisateurs nobody ... ).

- "hack de la machine" pour faire tourner un outil dédié au spam
Si la machine a été piraté, jeter un coup d'oeil dans les logs (/var/logs/)
(en espérant que la hacker ne c'est pas amusé à supprimer ses traces ^^).
Des logiciels peuvent analyser automatiquement les logs
Executer des logiciels du genre chkrootkit pour linux, qui permettent de savoir si un SK est passé par là ...

- détournement d'un formulaire de contact sur un des sites
Il y avait une faille dans php, qui permettait d'utiliser le champs de sujet, pour changer d'adresse de destination ... peut être faire une mise à jour.
Sinon, faire un preg_match("#^(.*)(to|from|cc|cci)(.*): (.*)$#i",$var) sur l'ensemble des champs (j'ai pas testé ma regexp, mais ça devrait être un truc du genre :p)
 
voila réponse du support : vous en pensez quoi ?

Bonjour,

Si vous avez eu une personne se servant de votre serveur dédié générer du spam donc certainement l'ip n'est plus blanche. Par contre vérifiez bien que vous n'avez pas autoriser d'autre domaine a pouvoir utiliser le serveur de mail de votre machine. Ensuite je vous invite a vérifier votre serveur dédié pour controler votre site et vos scripts .

Je reste à votre disposition pour tout renseignement complémentaire.

Cordialement,Kenny
 
Bool a dit:
pour les formulaires de contact, c'est un grand classique. Il suffit d'interdire les retours chariot dans les différents champs (From / To / Sujet généralement) et c'est réglé.

comment on l'interdit ? à la saisie en js ou à la validation en php ?

Merci
 
en PHP évidement ! le JS n'est pas interprété par les robots, et même s'il l'était il serait très facilement contourné.

Sinon la réponse du support est un truc bateau, même réponse que les nôtres en gros. C'est peut être même une réponse "pré formatée" :P
 
Bool a dit:
en PHP évidement ! le JS n'est pas interprété par les robots, et même s'il l'était il serait très facilement contourné.
en fait, je viens de changer j'avais un vieux script avec :
Code:
extract($_POST,EXTR_OVERWRITE);
c'est aps beau ej sais mais j'ai récupéré toutes les variables une par une !!!
sinon comment bloquer le retour chariot en php ? en expression régulière, strpos, trim ??
et quels sont les codes de retour chariot ?
Merci

Bool a dit:
Sinon la réponse du support est un truc bateau, même réponse que les nôtres en gros. C'est peut être même une réponse "pré formatée" :P
:? [/quote]
 
deathwish a dit:
Si la machine a été piraté, jeter un coup d'oeil dans les logs (/var/logs/)
(en espérant que la hacker ne c'est pas amusé à supprimer ses traces ^^).

ou la la j'ai des logs très bizarres :

87.118.64.163 - - [31/Mar/2008:00:05:32 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 299 "-" "-"
161.53.64.111 - - [31/Mar/2008:00:44:50 +0200] "GET /phpmyadmin/main.php HTTP/1.0" 404 296 "-" "-"
161.53.64.111 - - [31/Mar/2008:00:44:50 +0200] "GET /db/main.php HTTP/1.0" 404 288 "-" "-"
161.53.64.111 - - [31/Mar/2008:00:44:50 +0200] "GET /PMA/main.php HTTP/1.0" 404 289 "-" "-"
87.118.64.163 - - [31/Mar/2008:00:53:22 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 299 "-" "-"
64.182.121.85 - - [31/Mar/2008:04:02:40 +0200] "GET /thisdoesnotexistahaha.php HTTP/1.1" 404 302 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
64.182.121.85 - - [31/Mar/2008:04:02:41 +0200] "GET /vhcs2/lostpw.php HTTP/1.1" 404 293 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
64.182.121.85 - - [31/Mar/2008:04:02:41 +0200] "GET /vhcs2/tools/filemanager/login.php HTTP/1.1" 404 310 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
213.186.41.69 - - [31/Mar/2008:09:26:02 +0200] "GET /phpmyadmin/main.php HTTP/1.0" 404 296 "-" "-"
213.186.41.69 - - [31/Mar/2008:09:26:03 +0200] "GET /PhpMyAdmin/main.php HTTP/1.0" 404 296 "-" "-"
213.186.41.69 - - [31/Mar/2008:09:26:03 +0200] "GET /PMA/main.php HTTP/1.0" 404 289 "-" "-"
 
Avec un simple truc du genre par exemple :
Code:
$x = str_replace( array( "\r", "\n" ), '', $x );
 
non c'est "classique" : un robot scrupte ton site à la recherche de failles... tant qu'il n'en trouve pas, pas vraiment de soucis.
 
Bool a dit:
non c'est "classique" : un robot scrupte ton site à la recherche de failles... tant qu'il n'en trouve pas, pas vraiment de soucis.

ok mais le jour où i len trouve je suis fini ... :x

sinon tu sais comment bloquer mon serveur smtp à d'autres IP afin qu'ils n'utilisent plus mon serveur ?
 
Oui c'est comme tout : si tu laisses traîner une faille, y a des chances pour qu'elle soit rapidement trouvée et exploitée.
Là le robot en question cherche visiblement des outils spécifiques : PMA et VHCS.

Pour tester l'open relay, il y a plein d'outils sur le net : https://www.google.fr/search?hl=fr&q=ope ... ogle&meta=

Après coté configuration, ça va dépendre du MTA utilisé (Qmail, Postfix, Exim, Sendmail, etc).
 
Bool a dit:
Oui c'est comme tout : si tu laisses traîner une faille, y a des chances pour qu'elle soit rapidement trouvée et exploitée.
Là le robot en question cherche visiblement des outils spécifiques : PMA et VHCS.

Pour tester l'open relay, il y a plein d'outils sur le net : https://www.google.fr/search?hl=fr&q=ope ... ogle&meta=

Après coté configuration, ça va dépendre du MTA utilisé (Qmail, Postfix, Exim, Sendmail, etc).

je suis en qmail
 
Je ne pourrais donc pas te répondre... mais ça t'empêche pas de faire le test avant de bousiller inutilement la configuration (surtout avec un qmail :P).
 
Bool a dit:
Je ne pourrais donc pas te répondre... mais ça t'empêche pas de faire le test avant de bousiller inutilement la configuration (surtout avec un qmail :P).

j'ai testé mais il me mets can't connect to port 25 (idem qd je fais un telnet de mon pc !!!)

merci de ton aide
 
Bah si tu n'as même pas de serveur SMTP sur ta machine, je ne vois pas où est le soucis...
 
Bool a dit:
Bah si tu n'as même pas de serveur SMTP sur ta machine, je ne vois pas où est le soucis...

alors comment partent mes mails sans serveur smtp ?

voici une entête de mail que j'envoie de mon CRM :
Code:
Received: (qmail 26312 invoked from network); 31 Mar 2008 14:50:46 +0200
Received: from nsXXXX.ovh.net (HELO ns.domaine.fr) (IP.121.IP.117)
 
Le serveur SMTP ne te sert qu'à la réception. Pour l'envoi c'est un "client" SMTP.
Le MTA sait généralement faire les deux, mais ce n'est pas pour autant la même chose.

En SSH fait un netstat -lnp afin de voir les ports ouverts. Tu verras bien si tu as vraiment un serveur SMTP écoutant sur le port 25.
 
Bool a dit:
Le serveur SMTP ne te sert qu'à la réception. Pour l'envoi c'est un "client" SMTP.
Le MTA sait généralement faire les deux, mais ce n'est pas pour autant la même chose.

En SSH fait un netstat -lnp afin de voir les ports ouverts. Tu verras bien si tu as vraiment un serveur SMTP écoutant sur le port 25.
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2410/xinetd
 
rofl... il doit donc y avoir une grosse temporisation, ce qui fait que les outils classiques passent leur chemin.

Regarde éventuellement dans les logs du serveur de mail pour voir si quelqu'un s'en sert de l'extérieur, mais s'il met vraiment des plombes à répondre (cf timeout telnet), y a peu de chance que ce soit le cas.

Sinon essaye d'autres test open-relay ; certains auront peut être un timeout plus élevé.
 
Bool a dit:
Avec un simple truc du genre par exemple :
Code:
$x = str_replace( array( "\r", "\n" ), '', $x );

malheureusement, ça ne suffit pas !!!

j'ai même adapté le script suivant mais ça passe quand même encore à travers.


Code:
if (!preg_match($regex_mail, $_POST['xxx']) ||
			preg_match($regex_head, $_POST['yyy']) ||
			preg_match($regex_head, $_POST['ttt']) ||
			preg_match($regex_head, $_POST['eee']) ||
			preg_match($regex_head, $_POST['zzz']) ||
			preg_match('/http/i', $_POST['yyy']) ||
			preg_match('/http/i', $_POST['ttt']) ||
			preg_match('/http/i', $_POST['eee']) ||
			preg_match('/http/i', $_POST['zzz'])
			)
		header('location: http://www.domaine.tld/index.php');

en fait j'ai remarqué, que les spammeurs entrent leurs urls dans mes champs, donc j'ai mis :

Code:
preg_match('/http/i', $_POST['yyy'])
pour bloquer si un des champ contient http mais apparemment ca ne marche pas ...

qqn peut-il m'aider sur la syntaxe svp ?

merci
 
Euh.... j'utilise avec succès la méthode du str_replace() depuis des années. La "faille", ils ne peuvent pas l'inventer : tu as forcément un soucis dans ton code.
 
Bool a dit:
Euh.... j'utilise avec succès la méthode du str_replace() depuis des années. La "faille", ils ne peuvent pas l'inventer : tu as forcément un soucis dans ton code.

tu peux m'aider alors stp ?

voici mon code :

Code:
if($_POST['ACTION'] == 'validation') {
/* Expression régulière permettant de vérifier si le format d'une adresse e-mail est correct */
$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    
/* Expression régulière permettant de vérifier qu'aucune en-tête n'est inséré dans nos champs */
$regex_head = '/[\n\r]/';

	/* On vérifie qu'il n'y a aucun header dans les champs */
	if (!preg_match($regex_mail, $_POST['xxx']) ||
			preg_match($regex_head, $_POST['yyy']) ||
			preg_match($regex_head, $_POST['zzz']) ||
			preg_match($regex_head, $_POST['eee']) ||
			preg_match($regex_head, $_POST['fff']) ||
			preg_match('/http/i', $_POST['yyy']) ||
			preg_match('/http/i', $_POST['zzz']) ||
			preg_match('/http/i', $_POST['eee']) ||
			preg_match('/http/i', $_POST['fff'])
			)
		header('location: http://www.domaine.tld/index.php');

tu vois une faille ?

merci de ton aide
 
Fais voir le tout, qu'on vérifie le bon déroulement du script...
Du genre après ton "Location: xxx" tu as bien mis un exit ?
 
Oui et oui ;)
Sans le "exit" se script continue son execution... donc ta redirection ne sert à rien.
 
Bool a dit:
Oui et oui ;)
Sans le "exit" se script continue son execution... donc ta redirection ne sert à rien.

je viens de le faire j'ai fais un test et ca marche nickel

t'es une bombe !!!
(en espérant que ca va les calmer ...)
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut