iptables só permite conexões smtp com start tls

1

É de alguma forma possível bloquear / anular conexões smtp não criptografadas com o iptables?

rejeitando efetivamente todas as conexões que não fazem um início tls.

    
por yawniek 06.10.2010 / 10:24

2 respostas

1

Isso é inevitavelmente complicado. A natureza do TLS é tal que uma conexão de texto simples com o seu MTA deve ser estabelecida antes que o TLS possa ser negociado, portanto o iptables (operando como na camada de transporte) é mal projetado para influenciar problemas em a camada de aplicação.

Você poderia escrever outro módulo de destino e direcionar seu tráfego através disso, mas a menos que você seja um Deus em rede, isso provavelmente não é mais viável para você do que para mim. E eu definitivamente não sei como fazer isso.

O resultado é que o material da camada de aplicação é muito mais fácil de impor dentro do aplicativo. Você não diz qual MTA você está usando, mas eu suspeito que a maioria dos MTAs que são brilhantes o suficiente para fazer TLS são brilhantes o suficiente para exigir isso.

Eu uso o sendmail. Há um bom artigo sobre como exigir TLS de vários provedores no link , que me direciona para a entrada do banco de dados de acesso

TLS_Clt:communication_partner_MTA                           PERM+VERIFY:112

que requer um determinado parceiro de comunicação, supostamente identificado por endereço IP, para autenticar com uma chave de pelo menos 112 bits de comprimento e ter um certificado devidamente assinado. A página de configuração do sendmail no link , na seção CONTROLE DE CONFIGURAÇÃO ANTI-SPAM, diz que as entradas do db de acesso envolvendo endereços IPv4 podem levar a forma de um único octeto, que então se aplica a todos os endereços que começam com esse octeto. Então eu especulo , e eu enfatizo que é apenas especulação, que o sendmail me permitiria ter uma série de entradas

TLS_Clt:1       PERM:112
TLS_Clt:2       PERM:112
TLS_Clt:3       PERM:112
....
TLS_Clt:223       PERM:112

Mandar criptografia (embora não certificados assinados de forma verificável; certificados TLS auto-assinados são muito comuns, e eu estaria inclinado a não impedi-los) de todos os endereços IP. Eu também não teria uma entrada para TLS_Clt:127 , pois o host local provavelmente não deveria ser tão restrito.

Eu repito que eu não testei nenhuma das opções acima, e se o seu MTA é algo diferente de sendmail, o acima não será especificamente útil; mas eu queria mostrar que meu MTA (pelo menos) parece ter ganchos para fazer o que você quer. Boa sorte com suas investigações.

    
por 06.10.2010 / 11:05
1

O Iptables é projetado principalmente para filtrar os metadados de um pacote de rede, como cabeçalhos de IP, opções de TCP e assim por diante. O TLS é tratado no nível do aplicativo: você precisa observar o que acontece dentro do fluxo do TCP.

Você pode inspecionar o conteúdo dos pacotes com a extensão string , e você pode escrever filtros do tipo "userland" se os do kernel não forem suficientes. Mas isso seria muito difícil: por exemplo, fluxos TCP podem ser divididos em pacotes de formas arbitrárias, e os pacotes TCP podem ser recebidos fora de seqüência ... Você teria que lidar com todos esses problemas (duplicar o trabalho do kernel).

O que você está procurando aqui é um proxy SMTP que encaminha conexões TLS e bloqueia conexões não-TLS. A contribuição do Iptable seria apenas garantir que o tráfego SMTP passasse pelo proxy.

    
por 07.10.2010 / 00:02