Minha pergunta é sobre como impedir que scripts php enviem emails. Ela foi marcada como uma duplicata de outra questão mais geral sobre segurança de servidor, mas não é disso que trata esta questão.
Depois de uma longa e amarga luta contra hackerspammers que estão de alguma forma injetando arquivos php codificados em base64 desonestos em vários diretórios da web em meu servidor Debian/Apache/PHP, (a luta amarga envolvendo primeiro corrigir scripts existentes e alterar senhas de ftp, senhas de serviços da web e mysql senhas, depois reconstruir sites do zero, instalar o maldet - que reduziu o problema, mas não o eliminou completamente - e, finalmente, desativar completamente o postfix, interrompendo o serviço (mas não desinstalando) e, em seguida, bloqueando o tráfego da porta 25 do servidor no firewall) Ainda estou tendo problemas.
Meus problemas desapareceram por muitos meses e o servidor foi automaticamente removido das listas negras de acordo com o mxtoolbox. Mas hoje recebi um e-mail do mxtoolbox dizendo que meu servidor está novamente na lista negra de muitos serviços. Não entendo completamente como isso é possível, já que desativei o tráfego de saída da porta 25.
Quando há um problema, meu postfix mailq é preenchido com centenas de milhares de e-mails de um determinado usuário da web em meu servidor.
Minhas perguntas são estas:
Dado que desativei o tráfego da porta 25 usando
iptables -A OUTPUT -p tcp --dport 25 -j REJECT
,como é possível que o mxtoolbox esteja relatando que meu servidor ainda está enviando spam? Quando verifico o mailq, os e-mails são copiados. Quando inicio o postfix, os itens no mailq não são enviados como esperado e vejo(delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused)
ao lado de cada entrada.Tendo identificado a localização do RAT observando a
X-PHP-Originating-Script
linha em um e-mail com spam no mailq, posso encontrar e destruir o arquivo em questão, o que resolve o problema entre 5 dias e muitos meses.Como evito completamente que qualquer script php envie um email?Se eu entrardisable_functions = mail
no meu arquivo php.ini, entendo que isso impede o uso de funções internas, mas não de funções personalizadas, das quais um spammer poderia tirar vantagem.O que mais estou fazendo de errado?
Advertência: eu sei que o número 2 não resolve meu problema na raiz, mas depois de seguir conselhos e fortalecer a segurança do meu servidor de todas as maneiras que entendo ao longo de alguns anos, estou trabalhando em "lidar com o problema de reputação de correio" em vez de "resolver todos os problemas de segurança, período".
Este é um acompanhamento do meuúltima pergunta relacionadaaqui no ServerFault.
Responder1
Você tem escolhas
- Remover postfix
- Remover php-mail (nome do pacote Ubuntu/Debian)
No entanto, os spammers ainda podem escrever seu próprio código SMTP.
Verifique se o SMTP está realmente bloqueado assim
telnet alt4.gmail-smtp-in.l.google.com 25
Responder2
O controle de firewall para a porta 25 ainda é sua melhor opção, você pode então dizer a qualquer usuário válido para enviar e-mail através de servidores autenticados como mandrill ou outros em smtps (tcp/587) ou usar APIs de e-mail de ESP de terceiros
Você ainda pode escrever código php que se conectará diretamente aos servidores MX por meio de soquetes, a menos que use a abordagem de firewall.
Você também pode redirecionar o TCP/25 para um sistema pega-tudo para monitorar quem está comprometido ou abusivo.