Como tratar problemas de Spam en Plesk

Como tratar problemas de Spam en Plesk 14 de febrero de 2010 | Autor: DeiMoS

Dependiendo del número de clientes alojados en un servidor, encontrar que cuenta está enviando spam puede resultar difícil.

Mediante consola podemos ver como está la cola de correo:

  # /var/qmail/bin/qmail-qstat
  messages in queue: 500
  messages in queue but not yet preprocessed: 0

Tenemos 500 mensajes en la cola. Examinemos la cola mediante qmail-read. Tanto correo en cola sin enviar tiene pinta de spam.

  # /var/qmail/bin/qmail-qread
  …

Examinamos el contenido de los mensajes en la cola usando el gestor de cola de correo de Plesk o bien el comando less. Primero deberíamos encontrar el mensaje usando qmail-qread, luego encontrarmos el contenedor del fichero de correo en /var/qmail/queue con el comando find.

  # /var/qmail/bin/qmail-read
  [...]
  20 Jan 2010 02:35:10 GMT #220458745    1552  <>
  remote user@yahoo.com
  [...]
  #find /var/qmail/queue/ -name 220458745
  /var/qmail/queue/mess/12/220458745
  /var/qmail/queue/remote/12/220458745
  /var/qmail/queue/info/12/220458745
  # less /var/qmail/queue/mess/12/220458745
  Received: (qmail 10728 invoked from network); 20 Jan 2010 02:35:10 +0100
  Received: from unknown (HELO User) (90.91.92.93)
  by domain.com with SMTP; 20 Jan 2010 02:35:10 +0100
  Reply-To: <support@bankofamerica.com>
  From: “PayPal”<support@bankofamerica.com>
  Subject: Bank of america
  Date: Tue, 20 Jan 2010 02:35:10 +0100
  MIME-Version: 1.0
  Content-Type: text/html;
  charset=”Windows-1251″
  Content-Transfer-Encoding: 7bit
  X-Priority: 1
  X-MSMail-Priority: High
  X-Mailer: Microsoft Outlook Express 6.00.2600.0000
  X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
  [...]

Vaya, parece que tenemos alguien enviando spam desde la dirección ip: 90.91.92.93 (es una ip ficticia de ejemplo como los datos del correo). Ahora deberíamos eliminar dichos mensajes antes de que nos metan la ip del servidor en una lista negra. Una vez eliminados, comprobamos que seguimos teniendo los mismos mensajes. Llega la hora de usar tcpdump para analizar el tráfico de dicha ip que nos está dando la lata.

  # tcpdump -i eth0 -n src 90.91.92.93 \or dst 90.91.92.93 -w smtp.tcpdump -s 2048

Con esto analizamos todo el tráfico entrante y saliente de dicha ip y lo guardamos en un archivo llamado smtp.tcpdump, el cual luego analizaremos mediante el comando less.

  220 server.domain.com ESMTP
  helo User
  250-server.domain.com
  250-AUTH=LOGIN CRAM-MD5 PLAIN
  250-AUTH LOGIN CRAM-MD5 PLAIN
  250-STARTTLS
  250-PIPELINING
  250 8BITMIME
  AUTH LOGIN
  334 VXNlcm5hbWU6
  dGVzdA==
  334 UGFzc3dvcmQ6
  MTIzNDU=
  235 go ahead

Quizá esté algo más enrevesado o con caracteres de otra codificación, pero tenemos que buscar lo que hay debajo de los números 334, y encontraremos usuario y contraseña.

Procedemos a decodificar esas cadenas de texto mediante perl:

  #perl –MIME::Base64 -e ‘print decode_base64(“dGVzdA==”)’
  #perl –MIME::Base64 -e ‘print decode_base64(“MTIzNDU=”)’

Esto nos revelará el usuario y contraseña con los que se ha autentificado dicho spammer y revisaremos el servidor, ya que un cliente ha creado un usuario llamado “test” con contrasela “12345″

  # mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa
  [...]
  mysql> SELECT m.mail_name, d.name, a.password FROM mail AS m LEFT JOIN (domains AS d, accounts AS a) ON (m.dom_id = d.id AND m.account_id = a.id) WHERE m.mail_name=’test’ AND a.password=’12345′;
  +———–+————+———-+
  | mail_name | name | password |
  +———–+————+———-+
  | test | example.com | 12345 |
  +———–+————+———-+
  1 row in set (0.01 sec)

Bien, ahora procedemos a eliminar la cuenta y repetirle al cliente que “NO SE DEBEN USAR CONTRASEÑAS INSEGURAS”

Se recomienda que se active en el servidor lo siguiente:

Ajustes de Servidor > Correo > Verificar las contraseñas para los buzones en el vocabulario