LinuxParty
En este artículo vamos a explicar diferentes formas de localizar y encontrar algunos envíos de spam que se puede estar produciendo en nuestro propio servidor.
El spam generalmente se suele originar vía web, smtp o mediante algún script en perl.
Si tenemos emails en cola lo mejor es abrir uno de esos email, Las cabeceras contienen la mayoría de las veces información muy valiosa.
En el caso de no tener emails en cola podemos buscar en los logs de nuestras webs o logs de email.
Lea también:
- Prevenir o evitar el envío de spam saliente (verificando si existe el remitente)
- Detectar y encontrar envíos de Spam desde los propios servidores con Postfix
- Como evitar que el servidor envíe Spam
Partimos de la base que el remitente lo pueden falsear por lo cual no tenemos información desde que dominio o cuenta email envían spam.
Cabereas de emails en cola
Si el spam se envía desde una web, la clave es buscar X-PHP-Script o userid, nos dice desde que URL o dominio se envía spam.
Received: by miservidor.com (Postfix, from userid 10039)
id C8D5E9793; Sun, 25 Jun 2017 09:43:34 +0200 (CEST)
From: "Remitente" <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>
To: "Destinatario" <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>
Subject: Asunto del Email
Date: Fecha email +0200
X-PHP-Script: midominio.com/xmlrpc.php for XXX.XXX.XXX.XXX (no está en todas las versiones de Plesk)
X-PHP-Originating-Script: 10039:class-phpmailer.php
X-Mailer: PHPMailer 5.2.22 (https://github.com/PHPMailer/PHPMailer)
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
Si tenemos un Plesk más antiguo puede que no incluya la cabecera X-PHP-Script si ejecutamos desde SSH ungrep de userid nos dirá desde que dominio se envía spam:
# grep 10039/etc/passwd ftpUser:x:10039:10039::/var/www/vhosts/midominio.com:/bin/false
Cabeceras de emails enviados desde fuera del servidor (acceso stmp), no tienen cabecera X-PHP-Script
Received: from ordenador (hostconexion [XXX.XXX.XXX.XXX]) esta cabecera no existe en los emails enviados vía web, nos indica de que IP proviene el mensaje.
by miservidor.com (Postfix) with ESMTPA id 1429F61E0461
for <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>; Fecha email
From: "Remitente" <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>
To: "Destinatario" <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>
Subject: Asunto del Email
Date: Fecha email +0200
Message-ID: <001301d2ebfe$6576c9f0$30645dd0$@miservidor.com>
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_NextPart_000_0014_01D2EC0F.2901E3E0"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AdLr/mTQpC2POA4VQoOOlh/3sCjutA==
Content-Language: es
X-PPP-Message-ID: <20170623085505.25595.16770@miservidor.com>
X-PPP-Vhost: miservidor.com
En este caso lo importante es la IP si buscamos autentificaciones en el log de correo por esa IP veremos desde que cuenta envían spam.
Postfix:
# grep 'sasl_method=' /usr/local/psa/var/log/maillog | grep XXX.XXX.XXX.XXX
Qmail:
# grep smtp_auth /usr/local/psa/var/log/maillog |grep user | grep XXX.XXX.XXX.XXX
Accesos POST o SMTP
Normalmente todo el spam vía web se genera por accesos POST, una manera es buscar esos accesos en todos nuestros dominios:
# grep POST /var/www/vhosts/system/*/logs/access_log |grep -v '" 30' |grep -v '" 50' |grep -v '" 40'
plesk viejos tiene otra ruta:
# grep POST /var/www/vhosts/*/statistics/logs/access_log |grep -v '" 30'|grep -v '" 50' |grep -v '" 40'
Si tenemos WordPress u otro CMS podemos omitir algunos accesos que sabemos que no son envíos de spam, por ejemplo acceso a wp-login.php, wp-cron.php, xmlrpc.php
Por lo cual podemos añadir al final de los comandos anteriores: |grep -v wp-login.php |grep -v wp-cron.php |grep -v xmlrpc.php
Postfix Listado Ordenado por nº autentificaciones:
# grep 'sasl_username' /usr/local/psa/var/log/maillog | awk '{print $9}'| sort | uniq -c | sort -nr | head
Qmail Listado Ordenado por nº autentificaciones:
# grep smtp_auth /usr/local/psa/var/log/maillog |grep user |awk '{print $11}' |sort |uniq -c |sort -nr | head
Spam desde Perl.
Otra forma de envío de spam es mediante algún proceso perl. Muchas veces suelen subir algún fichero a una de nuestras webs por no estar actualizada. La forma fácil es hacer un top en el servidor y buscar el PID del proceso perl, con ese PID ejcutaremos:
cat proc/PID/cwd
otra opción es
lsof -p PID
Cuando ya tengamos localizado el proceso perl lo recomendable es eliminarlo y matar todos los proceso perl:
killall -9 perl
Borrar emails en cola desde SSH
Revisar previamente éste artículo:
Mostrar y vaciar la cola de postfix
Qmail Borrar emails con cierto Texto en el asunto:
/usr/local/psa/admin/bin/mailq -STextoAsunto
Qmail Borrar todos los emails:
/usr/local/psa/admin/bin/mailq -D
Postfix Borrar emails con cierto Texto:
find /var/spool/postfix/ -type f -exec grep -l 'Texto-del-Email' '{}' ; | xargs -n1 basename | xargs -n1 postsuper -d
Postfix Borrar todos los emails:
postsuper -d ALL
-
Email
- Crear o generar un certificado digital para Postifx y Dovecot.
- Instalar y configurar Postfix y Dovecot, con autenticación y TLS
- Detectar y encontrar envíos de Spam desde los propios servidores con Postfix
- Como evitar que el servidor envíe Spam
- Prevenir o evitar el envío de spam saliente (verificando si existe el remitente)
- Mostrar y vaciar la cola de postfix
- Introducción a la Instalación y Configuración de un Servidor de Correo (postfix y dovecot)
- Sustituir MS Exchange: por Linux Email Servers II
- Visualizar la ruta que ha seguido un email con Mail Hops (Thunderbird)
- RainLoop Webmail - Un moderno cliente Web de Email para Linux
- Monitorizar / Vigilar usuario de correo Postfix y eMails
- Tutorial de mailman con postfix
- Usuarios virtuales y dominios con Postfix & Courier
- Cómo combatir virus usando Postfix
- Usando DSPAM & ClamAV con Postfix (Virtual Users) en Debian Etch