Tagged with " spam"
apr 3, 2013 - Appunti Sparsi, Linux    No Comments

Monitorare da quale script php vengono inviate le e-mail

Quando un sito viene bucato e viene utilizzato per inviare tonnellate di email di spam, la prima cosa che si deve affrontare, oltre alla pulizia della coda di postfix, è l’individuazione del responsabile.

Le cose diventano difficili quando su un server sono presenti decine e decine di siti, in quanto il file colpevole dell’invio di spam non è facilmente identificabile.

Con questa piccola modifica si potrà avere un log più dettagliato delle e-mail provenienti dai vari siti, permettendoci di identificare il colpevole.

Per prima cosa creiamo due file col seguente contenuto

/usr/local/bin/sendmail-php
#!/bin/sh

logger -p mail.info sendmail-php: site=${HTTP_HOST}, client=${REMOTE_ADDR}, script=${SCRIPT_NAME}, filename=${SCRIPT_FILENAME}, docroot=${DOCUMENT_ROOT}, pwd=${PWD}, uid=${UID}, user=$(whoami)

/usr/sbin/sendmail -t -i $*
/var/www/tpl.php
<?php
putenv("PATH_INFO=". $_SERVER["PATH_INFO"]);
putenv("SCRIPT_NAME=". $_SERVER["SCRIPT_NAME"]);
putenv("SCRIPT_FILENAME=". $_SERVER["SCRIPT_FILENAME"]);
putenv("REMOTE_ADDR=". $_SERVER["REMOTE_ADDR"]);
putenv("HTTP_HOST=". $_SERVER["HTTP_HOST"]);
?>

Impostiamo i permessi:

chmod +x /usr/local/bin/phpsendmail
chmod +rx /var/www/tpl.php

Ora non ci resta che modificare il file php.ini (in Debian si trova in /etc/php5/apache2/php.ini ) modificando/aggiungendo le seguenti righe:

sendmail_path = /usr/local/bin/sendmail-php -t -i
auto_prepend_file = /var/www/tpl.php

Dopo aver riavviato apache, nel file mail.log, troveremo righe di questo tipo:

Mar 30 09:30:25 web1 logger: sendmail-php: site=www.xxxx.it, client=31.184.244.18, script=/includes/.cfwqkt.php, filename=/var/customers/webs/xxx/www/includes/.cfwqkt.php, docroot=/var/customers/webs/xxx/www/, pwd=/var/customers/webs/xxx/www/includes, uid=33, user=www-data

Che ci permetterà di individuare istantaneamente il colpevole

 

Fonti:

http://serverfault.com/questions/130069/find-the-php-script-thats-sending-mails

http://forum.directadmin.com/showthread.php?t=36311

lug 22, 2011 - Appunti Sparsi    No Comments

Controllare periodicamente se un ip è in una DSNBL

Problema da affrontare: sapere il prima possibile se uno dei server che gestisco finisce in una blacklist.

La soluzione è abbastanza semplice: uno script che passa tutte le blacklist DNSBL e controlla. Prima di mettermi al lavoro, ho controllato se qualche anima pia e candida non avesse già sviluppato qualche cosa di carino e… si, c’è ed è molto comodo: http://www.linuxmaza.com/system-administration/script-to-check-ip-on-spam-sources-and-getting-email-and-sms-alerts/ consiglio di darci una occhiata ;)