Como Restringir o PHP5 / Apache Apenas para Enviar Correio Para Usuários Locais

1

Eu preciso de ajuda. Estou executando o último Ubuntu estável que hospeda Apache / PHP5 e também entrega e-mail. Eu hospedo alguns sites WordPress para outros usuários e venho travando uma guerra há meses combatendo invasores que encontram permissões ruins em diretórios e usam isso para enviar scripts php para enviar spam pelo servidor.

Claro que estou tomando medidas para automatizar a segurança do WordPress, mas também gostaria de derrubar a capacidade do PHP5 / Apache de enviar e-mails para qualquer endereço que não seja entregue localmente.

Estou configurando um novo servidor para fazer isso. Eu vou estar executando a última versão do MailScanner com uma escolha de Sendmail ou Postfix. Isso seria especificamente direcionado ao bloqueio do usuário wwwdata para enviar apenas localmente.

Eu já configurei o log de e-mail do PHP5, mas preciso levar isso um passo adiante, porque o meu provedor de hospedagem torna-se draconiano quando o spam começa a fluir. Até agora eu não tive nenhuma sorte em encontrar respostas via Google. A única coisa que eu encontrei até agora envolve a desabilitação da função de correio do PHP ou o registro, revisão, firewall de IPs e exclusão de scripts ofensivos. Qualquer ajuda é apreciada.

    
por ThaKidd KG5ORD 09.09.2015 / 05:31

1 resposta

0

Esta resposta assume o postfix mta.

No php.ini, adicione:

mail.add_x_header = 1

Em /etc/main.cf add:

header_checks = pcre:/etc/postfix/header_checks.pcre

Conteúdo do /etc/postfix/header_checks.pcre

if /X-PHP-Originating-Script.*/
!/To:[a-zA-Z0-9._%+-]+(@(localdomain1.com|localdomain2.com))?$/ REJECT PHP Mail is only allowed to submit mail for local delivery.
endif

O regex usado aqui cobre os caracteres mais usados na parte local dos endereços de e-mail, mas não cobre todos os caracteres válidos de acordo com RFC, YMMV.

    
por 09.09.2015 / 07:48