Newsgroup: it.comp.os.linux.sys
Titolo: Bombardamento Mail

Ciao a tutti.
in circa 30 minuti ho ricevuto 50000 mail ad indirizzi casuali da
indirizzi casuali.
Provengono tutti da uno dei server web (quindi presumo tramite qualche
applicativo php di qualche cliente).
Esiste un modo (oltre a quello di bloccare tutto temporaneamente) per
identificare quale applicativo è sotto attacco dos?
Nel maillog ho solo dei connect da 127.0.0.1 (ovviamente)
non ho altro. Questo mi fa pensare ancora di più che sia proprio php a
mandare tutte queste mail.
Anche perchè la 25 è chiusa da remoto quindi nessuno può inviare
tramite il server web se non passando da qualche programma web.
Non dovrebbe nemmeno essere backscatter proprio perchè sono generati
da 127.0.0.1............
Qualche idea per massacrare l'applicativo, e l'ip dello spammer?
Ciao Ciao

 Qualche idea per massacrare l'applicativo, e l'ip dello spammer?
a occhio: iptraf e guarda chi si attacca al webserver in porta 80

 a occhio: iptraf e guarda chi si attacca al webserver in porta 80
che non mi permette di identificare lo script

 a occhio: iptraf e guarda chi si attacca al webserver in porta 80
Faccio prima a cambiare sendmail_path in php con un wrapper scritto da
me che forza il message-id ad una stringa predefinita (cosi lo vedo nel
maillog) ed inoltre faccio loggare tutto in un file....

 che non mi permette di identificare lo script
una volta identificato l'ip vai di tcpflow
-- 
Flavio Visentin
Membro del CICAP
Comitato Italiano per il Controllo delle Affermazioni di P4

 volta identificato l'ip vai di tcpflow
Ho guardato ora la home del progetto. Non mi pare faccia vedere lo
script di apache.
Domani farò gli opportuni controlli.


no, ma puoi bloccare l'accsso web a chi fa mailbombing.
poi con calma cerchi.

Alessandro ha scritto:

le volte che mi è capitato ho risolto così (se, come buona norma, hai gli 
orologi dei server sincronizzati): prendi la data e ora esatta del connect 
127.0.0.1 e  la greppi sui file di log del server web..
Difficile tu abbia accessi contemporanei al secondo sullo script che invia posta
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Uno che invece sui motori sa tutto e' Raul Torino.  Si chiama Raul Torino
perche' viene da...  Raul, un paesino in provincia di Torino.
		-- Francesco Salvi

 Difficile tu abbia accessi contemporanei al secondo sullo script che invia posta
Be, data e ora non importa che siano aggiornati dato che sono sullo
stesso server.
Però: i log del server web sono (giustamente) divisi per virtual host.
I virtual host sono pressapoco 1000 di conseguenza 1000 file di log da
greppare..Un bel casino.
Per il momento ho risolto parzialmente modificando i 2 script della
form dei contatti (grazie al cielo sono centralizzati). Adesso oltre a
mandare la mail mi logga tutto su un file separato.
Però così non ho il controllo degli script degli utenti. Il wrapper
non è una ottima soluzione in quanto non riesco a far partire il
sendmail per motivi che ignoro. Quindi riuscirei a loggare tutto ma poi
le mail non partono.
Mi sempre alquanto impossibile che non sia possibile loggare le
chiamate alla mail di php.
I grossi provider come fanno? Quelli che hanno 5000 host per server?

 Difficile tu abbia accessi contemporanei al secondo sullo script che invia posta
La cosa interessante è che tramite il greppone su tutti i file di log
del server web, non corrisponde nessun accesso alla data di connect che
ho sul maillog
Nel maillog:
Jan 26 03:48:41 web postfix/smtpd[14061]: connect from
localhost[127.0.0.1]
Jan 26 03:48:41 web postfix/smtpd[14061]: disconnect from
localhost[127.0.0.1]
Jan 26 03:49:41 web postfix/smtpd[14061]: connect from
localhost[127.0.0.1]
Jan 26 03:49:41 web postfix/smtpd[14061]: disconnect from
localhost[127.0.0.1]
Jan 26 03:50:41 web postfix/smtpd[14061]: connect from
localhost[127.0.0.1]
Jan 26 03:50:41 web postfix/smtpd[14061]: disconnect from
localhost[127.0.0.1]
Jan 26 03:51:40 web postfix/smtpd[14061]: connect from
localhost[127.0.0.1]
Jan 26 03:51:40 web postfix/smtpd[14061]: disconnect from
localhost[127.0.0.1]
Jan 26 03:52:40 web postfix/smtpd[14061]: connect from
localhost[127.0.0.1]
Jan 26 03:52:40 web postfix/smtpd[14061]: disconnect from
localhost[127.0.0.1]
E questo è uno spam-run in esecuzione tramite qualche programmino php
non ce ombra di dubbio, ma la cosa interessante è che nei log di
apache NESSUNA (ripeto: NESSUNA) data corrisponde.
Continuo con le indagini.....

 
Aspetta... io (usando la funzione mail() ) non ho dei connect ma dei
Jan 26 13:51:47 smtp postfix/pickup[18963]: 226D01CF8F3: uid=99 
from=<postmaster>
non usi mail()?
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
L'unico modo di comportarsi con una donna e' di fare l'amore con lei
se e' bella, e con un'altra se e' brutta.
		-- Oscar Wilde

 non usi mail()?
E' vero, hai ragione. non ci avevo fatto caso nella fretta.
Allora i connect ogni 30-60 secondi sono quelli di zabbix che monitora
l'smtp.
Adesso rifaccio il greppone direttamente sul message id predo dallo
smarthost.
Sono centinaia di mail tutte alla stessa ora (spaccato il secondo).....
Intanto ho aumentato il log level del pickup di postfix.....Mettendo -v
mostra anche tutto il messaggio che viene passato......Meglio che
niente.... Al prossimo spam-run almeno so di che cosa si sta parlando.

 Sono centinaia di mail tutte alla stessa ora (spaccato il secondo).....
Il greppone non ha dato risultati.
Non c'è attività in nessun sito negli orari corrispondenti al 'pickup' 
da parte di postfix....
Salvo in due siti precisi, ma sono entrambi dei GET di una immagine 
jpeg...... (tra l'altro siti senza php attivo)

Ottavio Campana ha scritto:

--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it

Alessandro ha scritto:

Visto che ci sono già passato... sei sicuro che l'orario cercato sia 
effettivamente il "primo contatto"?
Se il server è un po' busy (e se sta inviano ennemila email di spam è 
possibile!) devi risalire indietro nei log.. ci *deve* essere da qualche 
parte una corrispondenza, altrimenti hai il server hackato
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Al lago di Pago-Pago ho raccolto un naufrago che mi ha detto Grazie-Grazie.
		-- Gino Patroni

 parte una corrispondenza, altrimenti hai il server hackato
Il server busy è lo smarthost, il server web non fa altro che prendere 
le mail da php e buttarle nello smarthost.
Da quel momento in poi le mail non tornano più per nessun motivo sul 
server web. Quindi ci può essere solo un pickup e non contatti 
successivi.
(il mittente è forzato ad un indirizzo presente sul server di posta 
principale che mette in DISCARD ogni cosa gli arriva quindi nemmeno i 
bounce ritorano da dove sono venuti)

 
E allora ribadisco: ci deve essere una traccia nel log..
Altrimenti non sono entrati dal server web, o hai un log perso nel disco..
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Ti do un consiglio: mai sputare in un tornado!
		-- Robin Williams

 Altrimenti non sono entrati dal server web, o hai un log perso nel disco..
Allora, il log perso nel disco lo escludo perchè non ci sono buchi 
temporali..... i socondi sono tutti in fila... (verifica molto banale 
ma abbastanza efficace), nel caso ci fosse un buco nel log, 
mancherebbero i secondi).
Che siano passati da apache è sicuro al 90% dato che sono presenti dei 
pickup.....
Non mi viene in mente altro che generi dei pickup e che allo stesso 
tempo sia raggiungibile da fuori.
Fortunatamente non devo diagnosticare l'invio tramite socket, in quel 
caso si sarebbero stati dei connect e secondo me sarebbe stato più 
difficile.
Un altro problema è anche il fatto che il greppone richiede circa 6 
ore per terminare....i log sono enormi.
Possibile che non esista un modo, A MONTE, per debuggare le chiamate 
alla funzione mail di php? mi basterebbe sapere anche solo il 
virtualhost di apache da dove viene invocata la funzione. poi lo 
script preciso me lo trovo io...Un conto è cercare in un singolo host, 
un conto è cercare su 800.
Avevo trovato una soluzione (non implementabili sul server web 
attuale) ovvero: creare un wrapper di sendmail tramite PHP e loggare 
ip, data e script.
Altra soluzione perfetta sarebbe quella di poter sostituire, in toto, 
la funzione mail di php con una generata da me (che utilizza socket) 
ma l'ultima
volta che ho provato ovviamente php si rifiutava di ridichiarare la 
funzione mail().

 ip, data e script.
Io comunque il wrapper lo uso per fare un check sul body, perň devi comunque 
cambiare la chiamata nello script
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Il segreto di un candidato politico e' di sembrare stupido come chi lo
ascolta, cosi' che gli ascoltatori si sentano intelligenti come lui.
		-- Fred Barnes

 cambiare la chiamata nello script
Ma tu hai bloccato a monte la funzione mail e obblighi tutti ad usare 
la tua?
In php.ini esiste sendmail_path, posso specificare un mio comando al 
posto di sendmail ufficiale, fare i controlli dal mio comando e poi 
'rigirare' tutto
al sendmail originale ma causa safemode ho dei problemi ad 
implementarlo....

 la tua?
No, praticamente solo io "scripto"; i pochi che lo fanno sanno che se osano 
farmi uno scherzetto del genere vengono impiccati.
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Sono stato picchiato, ma mi sono difeso bene.  A uno di quelli gli ho
rotto la mano: mi ci e' voluta tutta la faccia, ma ce l'ho fatta.
		-- Woody Allen

 farmi uno scherzetto del genere vengono impiccati.
Ottimo, ma quanti virtualhost hai sul server?
Vallo a dire a 800-900 clienti.

Alessandro ha scritto:

un migliaio credo...
devo ricontrollare, ogni tanto perdo il conto !
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Nei sexy shop si possono comprare le videocassette dei film porno.
Sono a colori, ma se togliessero il rosa sarebbero in bianco e nero.
		-- Carlo Pistarino

 devo ricontrollare, ogni tanto perdo il conto !
E come hai convinto tutti a non usare mail() facendo scherzi?


Scrivendolo sul contratto?
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 > E come hai convinto tutti a non usare mail() facendo scherzi?Scrivendolo sul contratto?
Pessima soluzione.
Dal punto di vista legale ottima ma dato che non rientra nei miei 
compiti (io sono un tecnico),
come identifichi chi usa la funzione mail() di PHP (che è appunto lo 
scopo di questo post) dato che non viene lasciata traccia?

 scopo di questo post) dato che non viene lasciata traccia?
Adesso vuoi sapere come lo si controlla, sono due cose diverse.
Il server e' tuo?
Sei root, li' dentro?
Mai sentito parlare di grep?


Alessandro ha scritto:

come ho scritto sopra la maggior parte dei miei clienti fa fare il... lavoro 
sporco a me e quasi nessuno ha l'accesso ftp.
Quelli che lo hanno vengono controllati facilmente
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Al mio dentista il caval donato gli fa schifo.
		-- Boris Makaresco

 Quelli che lo hanno vengono controllati facilmente
beato te. da me l'80% ha ftp e si fa i siti in php....