Fazer o postfix rejeitar o e-mail recebido falsificado como do meu próprio domínio

6

Eu tenho um servidor de postfix configurado corretamente para permitir o recebimento de mensagens para o meu domínio e para exigir autenticação, a fim de enviar mensagens para qualquer outra rede.

Um monte de spam que recebo tem um endereço "de" forjado de usuários inexistentes no meu próprio domínio. SPF poderia parar isso, e eu tenho SPF configurado no meu DNS, mas não tenho certeza se eu quero ir a rota de bloquear totalmente todas as falhas SPF no nível SMTP.

Existe um item de configuração rápido do postfix que eu possa adicionar que rejeitaria o e-mail recebido, que é FROM mydomain e não foi autenticado?

Para ser muito específico, este é o meu postfix conf:

smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_unknown_recipient_domain,
    reject_rhsbl_sender dbl.spamhaus.org,
    permit
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_helo_restrictions = reject_unknown_helo_hostname, reject_invalid_helo_hostname

ainda é possível conectar-se à porta 25 e

MAIL FROM: [email protected] RCPT TO: [email protected]  sem autenticar.

    
por dataless 30.08.2015 / 20:31

3 respostas

6

Is there a quick postfix configuration item I can add that would reject incoming email which is FROM mydomain and wasn't authenticated?

Não é tão rápido, mas você pode implementar uma Política SMTPd simples e escolher as opções sender e sasl_username e verifique se o primeiro vem do seu domínio e o segundo existe e também vem do seu domínio, se assim for, retorne DUNNO , caso contrário, REJECT . Dessa forma, você garante que, para qualquer e-mail recebido, se ele for de seus usuários, ele deve ser autenticado pelo SASL.

To be very specific, this is my postfix conf:

Existem alguns itens adicionais que você pode adicionar à sua política smtpd_recipient_restrictions para tentar impedir o spam e, ao mesmo tempo, melhorar sua segurança:

smtpd_sender_restrictions =
    permit_mynetworks
    reject_unknown_sender_domain
    reject_sender_login_mismatch
    reject_unauth_pipelining
    reject_non_fqdn_sender
    permit

O que significa que cada um pode ser encontrado na página Parâmetros de configuração do Postfix .

Existem alguns itens adicionais que você pode incluir para impedir o spam:

  • SPF é um deles, mas concordo que o bloqueio de qualquer teste não correspondente é bastante pesado, tendo em conta que algumas listas de correio mal implementadas enviam e-mails com o endereço do remetente original de seus servidores para que falhar.

  • DKIM é muito poderoso também (confira OpenDKIM ).

  • SpamAssassin pode ser muito útil nesse caso. Ele não bloqueará o e-mail, mas será adicionado um cabeçalho de spam e, consequentemente, será classificado dessa forma.

  • Você não forneceu uma mensagem Postfix de uma dessas tentativas falsificadas, mas pode verificar se elas são originadas do mesmo endereço IP ou pelo menos um endereço CIDR concreto e colocá-las em uma lista negra com a% parâmetrosmtpd_client_restrictions.

  • O mesmo pode ser aplicado à mensagem HELO/EHLO e pode ser colocado em smtpd_helo_restrictions .

Como você pode ver, existem muitas maneiras, talvez você possa encontrar uma combinação delas que seja adequada ao seu caso e interromper todas as tentativas falsificadas.

    
por 30.08.2015 / 21:43
2

Se você habilitar o serviço de envio de mensagens do Postfix (na porta 587), poderá separar "envio de mensagem de retransmissão de mensagem, permitindo que cada serviço opere de acordo com suas próprias regras (por segurança, política etc.)" ( RFC 4409 ).

Nesta configuração, como os usuários legítimos devem se autenticar para usar a porta 587 para o envio de mensagens, você pode rejeitar com segurança o correio falsificado e não autenticado enviado pela porta 25.

Para habilitar o envio da mensagem (autenticada pelo SASL) na porta 587, adicione uma seção como a seguinte ao master.cf do Postfix:

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

( Fonte )

Em seguida, crie uma tabela de acesso do Postfix (em / etc / postfix / access) especificando como o Postfix deve responder para determinados remetentes:

[email protected]    OK
[email protected]            HOLD
mydomain.com                               REJECT

Veja a página access man para detalhes.

Execute postmap no arquivo de acesso (para criar uma tabela de pesquisa indexada):

postmap /etc/postfix/access

Adicione restrições do remetente ao main.cf:

smtpd_sender_restrictions = permit_sasl_authenticated,
        check_sender_access hash:/etc/postfix/access

Por fim, recarregue a nova configuração. Em sistemas baseados em Debian, isso é feito usando:

sudo service postfix reload
    
por 23.11.2016 / 12:01
0

Encontrei uma maneira de resolvê-lo, embora esteja curioso para saber se alguém tem uma resposta mais direta / simples.

Eu usei a configuração reject_sender_login_mismatch para que o if postfix possa encontrar um mapeamento do endereço "FROM" para um nome de usuário, requer que esse nome de usuário seja autenticado.

Em seguida, a tarefa é criar um mapa que manipule todos os endereços @meudominio, mas que permita que os usuários locais enviem emails para seus endereços corretamente.

Na minha configuração particular, eu uso

virtual_alias_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf

para mapear endereços para usuários reais.

Eu adicionei outro banco de dados de endereços pcre:/etc/postfix/db-sender-logins-fallback.cf , que tem um regex de todos os meus domínios para o meu usuário principal. Então agora, quando combinado:

smtpd_sender_login_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf pcre:/etc/postfix/db-sender-logins-fallback.cf
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

todos os alias só podem ser enviados do usuário para o qual são direcionados, e todos os outros endereços dos meus domínios só podem ser enviados da minha conta de usuário principal e, assim, qualquer spammer que tentar enviar FROM: meu domínio falhará porque não são não logado como eu.

Embora essa seja uma boa melhoria para minha configuração de correio (os usuários locais não podem mais representar um ao outro), isso pode ser muito complicado para pessoas com configurações de conta de usuário muito avançadas. Ainda estou curioso para saber se existe uma maneira de dizer "para esses domínios no FROM :, o usuário deve estar logado".

    
por 30.08.2015 / 21:27

Tags