Dicas, informação e principalmente anotações!

Main menu:




Archive

Meta

Monitorar usuário nobody no envio de e-mails PHP

Olá pessoal,

Já tive problemas no passado para identificar de qual site hospedado em meu servidores estava partindo SPAM, já que todos os e-mails na fila tinha o usuário nobody.
O SPAM em sites php pode ser enviados pelo próprio dono do site ou por uma vulnerabilidade na programação, que permite o spammer fazer um include de um código para evio de e-mails.
Um exemplo:
http://www.exemplo.com/index.php?pagina=http://www.uol.com.br
Se acessar um endereço assim e abria a página do UOL no meio do site, ele está vulnerável!
Depois de muito procurar, encontrei uma solução genial na internet, e acom algumas modificações estou espondo aqui.
Pena que não lembro o site onde encontrei. Poderia por as referências.

Mãos a obra!

1 - Logar como root no servidor.
2 - Criar um arquivo que será o repsonsável por chamar o sendmail e gravar os logs.
vi /usr/sbin/sendmail.exe
#!/usr/local/bin/perl

use Env;
my $date = `date`;
chomp $date;
open (INFO, “>>/var/log/spam_log”) || die “Failed to open file: $!”;
my $uid = $>;
my @info = getpwuid($uid);
if($REMOTE_ADDR) {
        print INFO “$date - $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME \n”;
}
else {
       print INFO “$date - $PWD -  @info \n”;
}
my $mailprog = ‘/usr/sbin/sendmail’;
foreach  (@ARGV) {
        $arg=”$arg” . ” $_”;
}
close (INFO);

open (MAIL,”|$mailprog $arg”) || die “cannot open $mailprog: $! \n”;
while (<STDIN> ) {
        print MAIL;
}
close (MAIL);

3 - Permissão no arquivo:
chmod +x /usr/sbin/sendmail.exe

4 - Vamos criar o arquivo onde será gravado o log:
touch /var/log/spam_log
chmod 0777 /var/log/spam_log

5 - Abra o php.ini e edite a linha correspondente ao programa de e-mail:
vi /usr/lib/php.ini
Edite o que estiver como:
sendmail_path = /usr/sbin/sendmail
Para:
sendmail_path = /usr/sbin/sendmail.exe

6 - Restart no apache e pronto!

Para ver os logs de quem envia o e-mail digite:
tail -f /var/log/spam_log

Pra sair dos logs, é só apertar CTRL+C

PS: Mesmo que você não utilize o sendmail como servidor de e-mails, pode seguir o mesmo procedimento, apenas alterando para as definições de seu servidor (Exim, Qmail, Postfix, etc).

Abraços!


Rec6
Linkto
del.icios
Linkk
Technorati
Digg
Blogblogs
Eucurti
Google
Adicionar ao Rec6
Adicionar ao Linkto
Adicionar ao del.icio.us
Adicionar ao Linkk
Adicionar ao Technorati
Adicionar ao Digg
Adicionar aos Bookmarks do Blogblogs
Adicionar ao EuCurti
Adicionar ao Google