nov
30
2009

Impedindo a saída de emails forjados no Postfix

Outro dia um amigo teve um problema de senhas fracas em seu servidor de emails.

Utilizando-se de brute-force obtiveram senhas de emails no servidor e com isso spammers dispararam emails através de uma conta válida autenticando-se via SASL. O remetente dos email (mail from) eram forjado com outros endereços.

Ele me perguntou se eu sabia como bloquear emails forjados e comecei a pesquisar.

A princípio pensei em desenvolver filtro de conteúdo (content filter), abrir as mensagens com um sed e comparar o SASL com o Mail From da mensagem. Mas logo depois resolvi pesquisar um pouco mais no site do Postfix.

Grata a surpresa o Postfix já possui essa proteção, foi então que encontrei o seguinte parâmetro:

reject_sender_login_mismatch
Reject the request when $smtpd_sender_login_maps specifies an owner for the MAIL FROM address, but the client is not (SASL) logged in as that MAIL FROM address owner; or when the client is (SASL) logged in, but the client login name doesn’t own the MAIL FROM address according to $smtpd_sender_login_maps.

Sabido que era a solução do problema, configurei o postfix da seguinte maneira.

Editei o arquivo /etc/postfix/main.cf e adicionei as seguintes linhas.

———————————————————————————————

smtpd_sender_login_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_sender_login_maps.cf

proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $smtpd_sender_login_maps

smtpd_sender_restrictions = reject_sender_login_mismatch

———————————————————————————————

Em seguida foi criado o arquivo referenciado no main.cf do postfix (/etc/postfix/sql/mysql_virtual_sender_login_maps.cf) com o seguinte conteúdo.

———————————————————————————————

user = postfixusr
password = postfixpassword
hosts = localhost
dbname = postfix
query = SELECT username FROM mailbox WHERE username=’%s’ AND active = ’1′

———————————————————————————————
Lembrando que os campos da tabela podem estar diferentes, o exemplo segue conforme as tabelas utilizadas pelo postfixadmin (www.postfixadmin.org)

Se você deseja aplicar o bloqueio de emails forjados somente para usuários autenticados, altere a restrição de envio com o seguinte parâmetro “reject_authenticated_sender_login_mismatch”

Então reinicia-se o postfix (#postfix reload), e está pronto o bloqueio da saída de emails forjados do servidor.

Fonte: http://www.postfix.org/postconf.5.html#reject_sender_login_mismatch

Outros parâmetros que merecem atenção no filtro de emails indesejados.

reject_sender_login_mismatch, reject_unauthenticated_sender_login_mismatch, reject_unknown_sender_domain, reject_unlisted_sender

3 Comentários »

  • [...] Enviado por Wagner Assis (wagnerΘlinuxadm·com·br): “Se a guerra contra o Spam parece não ter fim é importante se proteger para não trabalhar como um zumbi de spammers. Usuários insistem em manter senhas fracas em seus emails e com isso através de ataques brute-force capturam senhas e começam a utilizar servidores legítimos para disparar seus “ataques”. O artigo “Impedindo a saída de emails forjados no Postfix” da http://www.linuxadm.com.br dá uma ajuda aos administradores explicando como proteger o servidor impedindo a saída de emails forjados.” [referência: linuxadm.com.br] [...]

  • Neology disse:

    Como ficaria as regras para quem usa mailbox?

  • Wagner Assis disse:

    Obrigado por fazer o comentário.
    A solução apresentada independe do formato da caixa postal, pois refere-se somente aos parâmetros de validação de usuário (SASL)
    O funcionamento é simples, compara-se o mail from do email de saída ao email (usuário) utilizado na autenticação para o envio de email.

    Qualquer dúvida queira postar o erro para que possa auxiliá-lo.

    Abraços
    Wagner Assis

RSS feed for comments on this post. TrackBack URL


Leave a Reply

Powered by WordPress. Theme: TheBuckmaker. Krise, OpenID