Postfix: Permitir SMTP AUTH apenas de intervalos de endereços IP especificados

2

pode-se implementar uma restrição baseada em endereço IP para SMTP AUTH no Postfix ?

cenário: Estou executando um servidor de e-mail Postfix que recebe e-mails de toda a Internet. Mas o servidor não apenas recebe e-mails, mas também permite que seus usuários autenticados enviem e-mails para usuários internos ou externos. Até agora não há problema.

Infelizmente, estou sempre com um pouco de medo ao ler os arquivos de log. Existem milhares de tentativas de login ilegais, sem sucesso, todos os dias, a partir de endereços IP de todo o mundo.

Mas, na verdade, os hosts legítimos do remetente só vêm de um punhado de intervalos de endereços IP conhecidos. Então eu sei apenas alguém de (por exemplo)

  • 134.500.0.0/16
  • 134.700.42.0/24
  • 134.800.133.7

pode ser um remetente legítimo. (Eu sei que o endereço IP dado no exemplo acima está mal formado. Eu só não queria desvendar os reais.)

Portanto, se o remetente vem de um intervalo de ip diferente, ele com certeza não tem nenhum dos meus usuários e, portanto, não pode retransmitir nada.

Eu não quero que alguém de fora dessas sub-redes seja capaz de retransmitir mesmo se ele descobrir uma combinação válida de nome de usuário / senha para SMTP AUTH. Se ele é de um intervalo de endereços IP não listado em branco, ele não deve enviar. Sob nenhuma circunstância. Portanto, permit_sasl_authenticated sozinho não é suficiente. Contanto que alguém de países "certos" (eu não queira nomeá-los explicitamente ...) consiga fazer o login com credenciais roubadas / brute-forçadas / espiadas, não é seguro o suficiente. :-) (Pense em engenharia social, keyloggers trojan que roubam dados de contas, usuários tontos com senhas fáceis de adivinhar, etc.)

= > Então é possível implementar uma restrição de endereço IP para tentativas de login SMTP AUTH? (O recebimento de emails recebidos não deve ser afetado por isso. Para isso eu tenho policyd-weight etc. Aqui é apenas sobre emails de saída / retransmissão.)

Soluções que não funcionam :

  • iptables restrição de firewall. Como desejo receber mensagens de toda a Internet na porta 25, não consigo implementar restrições no nível da camada de transporte. - Além disso, quero que os usuários legítimos consigam se conectar na porta 25 para admitir novos e-mails de saída no servidor. Então, permitir o envio de e-mails somente por meio de uma porta tcp de mistério restrito de sub-rede, por exemplo, 24343, não é solução também.
  • permit_mynetworks : Nem todo mundo dos intervalos de ip conhecidos é um usuário legítimo. Então não posso permitir que todos de lá mandem. O login SMTP AUTH é necessário para determinar se alguém é um usuário autorizado.
por MrSnrub 07.02.2013 / 16:08

4 respostas

4

Que tal colocar o seu SMTP AUTH em outra porta como 587, e usando o iptables para restringir o acesso a essa porta? 587 não é uma porta oculta, é uma porta de envio de mensagens definida pela RFC. Mail para você chega em 25, e-mail através de você precisa passar por cima de 587.

link

    
por 07.02.2013 / 16:50
1

Você deseja usar um formulário negado de smtpd_sasl_exceptions_networks .

smtpd_sasl_exceptions_networks = !134.500.0.0/16 !134.700.42.0/24 !134.800.133.7

Você também pode estar interessado em smtpd_client_connection_rate_limit .

    
por 12.02.2013 / 05:05
0

Eu aconselho você a usar um HIDS como OSSEC para bloquear temporariamente IPs que tentaram fazer login. Você também pode adicionar uma regra no OSSEC para excluir suas redes confiáveis desta regra, para que os usuários legítimos não sejam bloqueados após algumas tentativas.

Estou propondo isso porque não acho que o Postfix realmente tenha uma maneira de complementar my_networks e SASL.

    
por 07.02.2013 / 16:23
0

There are thousands of unsuccessful, illegal login attempts every day from IP addresses from all over the world.

instale o fail2ban e ajuste um existente ou crie um novo filtro para capturá-lo. Eu uso:

failregex =\[<HOST>\]\: SASL LOGIN authentication failed
    
por 06.09.2013 / 16:57