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à:
- Uno degli account di posta è stato compromesso: Gli spammer hanno indovinato la password di una casella e stanno utilizzando le credenziali per spedire posta.
- 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.
- 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
MAR