Desabilitando um conjunto de cifra / cifra no postfix / TLS para destinatário específico

2

Usamos o Postfix 2.9.4 e o OpenSSL 0.9.8j-fips 07 de janeiro de 2009 (SLES11 SP4).

Recebemos esta mensagem de erro ao enviar e-mails para um destinatário específico:

error:1408D13A:SSL routines:SSL3_GET_KEY_EXCHANGE:unable to find ecdh parameters:s3_clnt.c:1336

Lendo o código em s3_clnt.c para nossa versão do OpenSSL, ele diz em um comentário

For now we only support named (not generic) curve and the ECParameters in this case is just three bytes.

Analisando o código, este não é um tipo de curva nomeada ou o parâmetro está fora do intervalo.

A minha pergunta é: Como eu ensino o nosso cliente SMTP (ou então o servidor de recebimento) para omitir este conjunto de cifras / cifras ou conjunto de parâmetros?

    
por Ronald 01.02.2017 / 13:33

4 respostas

1

Política TLS por domínio

Você pode usar o Mapa de políticas TLS do Postfix para criar uma lista de domínios e quais políticas de TLS se aplicam a eles.

Você também pode alterar suas opções globais smtp e smtpd no postfix para limitar quais cifras podem ou devem ser usadas.

Outra opção, neste caso, seria especificar quais cifras usar como visto em TLS Forward Secrecy in Postfix e perhaqps apenas use strong.

    smtpd_tls_eecdh_grade = strong | ultra

Aqui está um exemplo /etc/postfix/tls_policy

.google.com     secure match=.google.com:.gmail.com protocols=TLSv1 ciphers=high
.paypal.com     secure match=.paypal.com protocols=TLSv1 ciphers=high
.example.tld    ciphers=medium
.blizzard.com   may

Em seguida, crie o mapa com:

postmap tls_policy

Em /etc/postfix/main.cf você precisaria:

smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

Em /etc/postfix/main.cf você pode tentar excluir cifras com smtpd_tls_exclude_ciphers e smtpd_tls_mandatory_exclude_ciphers e / ou definir smtpd_tls_eecdh_grade = strong

Se ajustar as exclusões de cifra ou definir um tls_policy não ajudar, convém considerar a possibilidade de atualizar o openssl e o postfix.

    
por 01.02.2017 / 17:28
1

Solução para definir uma lista de códigos específica para apenas um destinatário:

master.cf: smtp2 unix - - n - - smtp -o tls_high_cipherlist=!ECDH:...(some more)

transport_map: <domain> smtp2:<domain> (segundo domínio omitível?)

tls_policy_map: <domain> verify match=hostname ciphers=high

Isto omite os algoritmos problemáticos de ECDH e trabalhou neste szenario.

    
por 03.02.2017 / 15:53
0

Você pode usar um mapa de transporte de postfix para rotear o e-mail para destinos específicos por meio de outro serviço definido em master.cf . Lá você deve poder usar as opções usuais de configuração do postfix para o TLS ativar / desativar as cifras.

    
por 01.02.2017 / 14:56
0

Uma maneira mais fácil de resolver isso (em vez de introduzir uma nova entrada master.cf para smtp) é usar o mapa tls_policy e definir

tls_policy:  <domain>    verify hostname=<hostname> exclude=kECDH

É isso.

Se você não tem tls_policy (em uma versão mais antiga do postfix), você pode usar o parâmetro

-o smtp_tls_mandatory_exclude_ciphers=kECDH

na entrada master.cf para este domínio.

Obrigado a todos os colaboradores que me guiaram o caminho certo para descobrir isso; -)

    
por 06.02.2017 / 09:25