Blog

Ferma lo spam su Plesk con Postfix: account compromesso

Posted by:

Se si amministra un server Plesk con molti domini e caselle di posta,  prima o poi vi accorgerete che la coda di posta di postfix contiene migliaia di messaggi spam.

Cancellare immediatamente i messaggi in coda non è una buona idea: prima è meglio analizzarli per identificare l’origine dello spam.

Sostanzialmente ci sono tre possibilità:

  1. Uno degli account di posta è stato compromesso: Gli spammer hanno indovinato la password di una casella e stanno utilizzando le credenziali per spedire posta.
  2. Uno dei siti web ha uno script con un buco di sicurezza: Attraverso questo exploit gli spammer utilizzano uno script in maniera impropria, oppure hanno caricato un proprio script.
  3. Il server è compromesso e gli spammer lo gestiscono da remoto con un rootkit o simili.

I primi due casi sono la stragrande maggioranza dei casi e ci limiteremo a questi, se il server è completamente compromesso occorre spostare tutti i clienti e fare analisi molto approfondite a macchina ferma. In questo articolo analizzerò il primo casa

Ora che abbiamo un quadro generale procediamo con metodo nella nostra analisi.

Per prima cosa fermiamo il server SMTP:

#/etc/init.d/postfix stop

In questo modo non uscirà altro spam dal server mentre operiamo.

Vediamo i messaggi in coda:

Passiamo poi ad analizzare la coda di posta:

il comando : postqueue ci fornisce una lista dei messaggi in coda

# postqueue -p | more
postqueue: warning: Mail system is down — accessing queue directly
-Queue ID- –Size– —-Arrival Time—- -Sender/Recipient——-
B88EF1E3866*   12739 Fri Mar  6 08:23:38  mail@bounces.mailincentives.com
                                         xxxx@aaabbb.it

C92481E53E3    51990 Wed Mar  4 17:51:02  packagetechsupport@package.lt
          (connect to mail.luskserver.com[66.181.1.1]:25: No route to host)
                                         jeffe@luskserver.com

 In questo esempio il secondo messaggio è quello che ci interessa analizzare nel dettaglio:

 postcat -vq C92481E53E3 | more

postcat: name_mask: all
postcat: inet_addr_local: configured 14 IPv4 addresses
postcat: inet_addr_local: configured 3 IPv6 addresses
*** ENVELOPE RECORDS deferred/C/C92481E53E3 ***
message_size:           51990             761               1               0           51990
message_arrival_time: Wed Mar  4 18:51:02 2015
create_time: Wed Mar  4 18:51:03 2015
named_attribute: log_ident=C92481E53E3
named_attribute: rewrite_context=remote
named_attribute: sasl_method=CRAM-MD5
named_attribute: sasl_username=utente@mioserver.it
sender: packagetechsupport@package.lt
named_attribute: log_client_name=unknown
named_attribute: log_client_address=79.59.237.73
named_attribute: log_client_port=53734
named_attribute: log_message_origin=unknown[79.59.xx.xx]
named_attribute: log_helo_name=kvhkxtpnwmbmujyhyl
named_attribute: log_protocol_name=ESMTP
named_attribute: client_name=unknown

Il dettaglio è molto lungo, ma a noi interessa l’utente che ha spedito l’email tramite SMTP autenticato: La riga in questione è sasl_username.

Abbiamo quindi scoperto l’account compromesso e passeremo quindi a cambiare la password e  ad avvertire il cliente.

Ah, ma prima cancellamo i messaggi in coda e riavviamo postfix:

postsuper -d ALL deferred

/etc/init.d/postfix start

0


# #