[quote=“Clochette”][quote=“Bobak”]Bonjour,
Comment faire pour se protéger contre les envois d’email indésirable via un scripte PHP piraté ?
Ces derniers jours, malgré un certain nombre de protections, un de nos serveur a eu un WP piraté et il a envoyé du spam.
L’envoi se fessait via une communication directe avec le serveur SMTP en face sans utiliser la fonction mail() de PHP et donc sans aucun log dans mon postfix.
j’ai découvert ces communications avec la commande
Les protections déjà en place, qui se son révélé insuffisante sont : Fail2ban, mod_evasive, modsecurity (avec règles payantes), interception de tout email envoyé avec fonction mail() de PHP.[/quote]
Peut-être refusé aussi l’envoi de mail si il n’y a pas eu d’authentification, et une protection accrue des comptes dédié à la gestion de l’envoi de mail via les formulaire.
Une idée vite fait :
[code] Nos serveurs demandent une authentification smtp depuis un script PHP .
Voici un exemple de code utilisant PHPmailer que vous devrez télécharger pour utiliser ce script, les parties en vert sont à adapter :
// exemple serveur windows ikoula
<?php
include("class.phpmailer.php");
include("class.smtp.php");
date_default_timezone_set("Europe/Paris");
$mail = new PHPMailer();
$body = " Test de PHPMailer.
";
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = "mail.votredomaine.tld";
$mail->Port = 25;
$mail->Username = "votre email";
$mail->Password = "mot de passe";
$mail->From = "votre email"; //adresse d’envoi correspondant au login entrée précédemment
$mail->FromName = "votre nom"; // nom qui sera affiché
$mail->Subject = "This is the subject"; // sujet
$mail->AltBody = "corps du message au format texte"; //Body au format texte
$mail->WordWrap = 50; // nombre de caractère pour le retour a la ligne automatique
$mail->MsgHTML($body);
$mail->AddReplyTo("votre mail","votre nom");
$mail->AddAttachment("./exemples/images/phpmailer.gif"); // pièce jointe si besoin
$mail->AddAddress("adresse destinataire 1","adresse destinataire 2");
$mail->IsHTML(true); // envoyer au format html, passer a false si en mode texte
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Le message à bien été envoyé";
}
?>[/code]
Maintenant si les Wordpress/Joomla sont autant visé c’est qu’il ne sont pas toujours audité et sécurisé/mis à jour qu’il ne le devrais.
Il faut redoubler d’attention lorsque des thèmes et des plugins sont installés sur ce genres de CMS une grande partie sont moisies et responsables directement des compromissions.
Si tu cherche surtout à te laisser une marge avant une mise ne RBL, tu peux aussi mettre en place un nombre maximum de mail envoyer par heure ce qui impactera les campagnes de newsletter sur le serveur mais limitera grandement aussi l’envoi de spam.
Ce type de configuration couplé à un monitoring précis du /var/mail/log qui grossit anormalement devrais pouvoir te permettre de réagir efficacement.[/quote]
Les limitations sont déjà en place via l’interception de la fonction mail() ce qui me permet justement de limiter l’envoi par client.
Mais là il s’agit de se protéger d’un scripte qui ne passe pas par la chaine du SMTP local (fonction mail() du PHP).
Les connexions se font directement avec le serveur SMTP yahoo, free etc …
Et c’est là que je n’ai aucune protection actuellement en place.