Post

Uisp Não Adota M5

Uisp Não Adota M5

Problemas com Nginx Proxy Manager e rádios M5

Eu uso nginx proxy manager e estava tendo problema em conectar meus rádios M5.

Infelizmente a solução reduziu a segurança de todos os meus outros serviços deste proxy porque não achei uma solução que poderia ser aplicada a um único host.

Agora existe solução individual de certificado

Outro problema: não sei deixar o meu NPM configurado se recriar o container.

Solução: criar certificados na Let’s Encrypt do tipo RSA

Para isso eu editei o /etc/letsencrypt.ini alterando key-type = ecdsa para key-type = rsa.

1
2
3
4
5
6
text = True
non-interactive = True
webroot-path = /data/letsencrypt-acme-challenge
key-type = rsa
elliptic-curve = secp384r1
preferred-chain = ISRG Root X1

Na nova versão não precisa editar isso.

Alteração no algoritmo de troca de chave:

DH

dhparam

Para isso precisa criar o arquivo dhparam.pem com o comando:

1
openssl dhparam -out /etc/nginx/dhparam.pem 2048

Após criar o arquivo precisa ser indicado na configuração em /etc/nginx/conf.d/include/ssl-ciphers.conf:

1
ssl_dhparam /etc/nginx/dhparam.pem;

ssl_ciphers

  • DHE-RSA-AES128-GCM-SHA256
  • DHE-RSA-AES256-GCM-SHA384

Estático / RSA

Não precisa do dhparam, precisa não existir na lista uma opção com inicio DHE.

ssl_ciphers

  • AES128-GCM-SHA256
1
2
3
4
5
6
/etc/nginx/conf.d/include/ssl-ciphers.conf
# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
ssl_dhparam /etc/nginx/dhparam.pem;

Por último precisa reiniciar o nginx.

Configuração no container

Como estou usando container eu copiei e editei localmente os 2 arquivos de configuração depois enviei tudo para o container com os comandos:

1
2
3
4
5
docker exec nginx-proxy-manager-app-1 openssl dhparam -out /etc/nginx/dhparam.pem 2048

docker cp letsencrypt.ini nginx-proxy-manager-app-1:/etc/letsencrypt.ini

docker cp ssl-ciphers.conf.bkp nginx-proxy-manager-app-1:/etc/nginx/conf.d/include/ssl-ciphers.conf

docker restart nginx-proxy-manager-app-1

Atenção o comando para baixar os arquivos originais eu não listei pq são arquivos pequenos cada um pode fazer como quiser. O importante é olhar o original.

Na nova versão do NPM é possível cria certificados RSA, isso pode ser selecionado, não precisa mais editar o /etc/letsencrypt.ini

Testando a configuração

Para testar usei o nmap:

1
nmap --script ssl-enum-ciphers -p 443 uisp.xxxxxx.com.br

Detalhes Sobre HTTPS

Certificado

Hoje existem certificados:

  • RSA - Baseado em fatoração de número primo
  • ECDSA - Baseado em curva Elíptica (mais seguro, menor e mais leve)

M5 só aceita RSA

Agora o Nginx Proxy Manager permite escolher RSA individualmente e apesar do ECDSA ser o padrão.

Troca de chaves

É o processo de combinar a combinação do cofre com o destinatário sem que o transportador ouça.

Estático

RSA que é chamada de estática pois usa o certificado se ele for comprometido pode usar para des-criptografar comunicações antigas

Quando um DHE é ativado essa opção é desativada.

DHE (Diffie-Hellman Ephemeral)

Precisa de dhparam que é estático publico, mas é único. Para gerar a chave um segundo numero aleatório é gerado. No inicio o dhparam era igual pra todos, então as contas feitas a partir dele poderiam ser pré-calculadas por uma entidade poderosa, agora que são únicos isso fica impossível.

Não é oferecida pelo M5 na conexão, mas ele aceita como cliente. Lembre de criar e especificar o dhparam.

ECDHE (Elliptic Curve DHE)

É a evolução do DHE. Em vez de usar cálculos modulares complexos com números primos gigantes (que exigem muito processamento), ele utiliza a matemática de Curvas Elípticas.

Mas nosso antigo equipamento M5 não é compatível.

P-256 (prime256v1)

Um formato bem moderno pós-quântico compatível com NIST.

Ainda não usado no nosso sistema.

Algoritmo de Criptografia + Modo de Operação

É a espessura e o material das paredes do cofre (Criptografia) e como as trancas são dispostas (Modo).

AES

O algoritmo com tamanho da chave (128 / 256 bits), bom para CPUs modernas que tem instruções especificas para isso (AES-NI). Modos de operação GCM (Rápido/Paralelo) ou CBC (Antigo/Legado).

O único aceito pelos nossos equipamentos.

ChaCha20

Feito para ser rápido via software. O modo é sempre Poly1305

Hashing

É o selo de lacre na porta. Se o selo estiver rompido ou raspado, você sabe que alguém tentou abrir ou alterar o conteúdo.

SHA-1

Obsoleto.

SHA-256 também conhecido com SHA-2

Padrão atual.

Padrão

SHA-384

Uma versão mais pesada e mais segura.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.