Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

quinta-feira, 19 de outubro de 2023

Emissão de certificado Let's Encrypt usando seu DNS

    O objetivo desse artigo é mostrar e explicar como emitir certificado Let's Encrypt usando o desafio via DNS.
    A vantagem desse método é que podemos automatizar o processo e não se preocupar em realizar liberação de acesso no firewall a Let's Encrypt, essas liberações são necessárias para que possa validar a emissão do certificado, como no popular método utilizando desafio via HTTP.
    Assim, iremos simplificar a conexão utilizando o desafio via DNS, visto já ser aberto na internet.

Nota: O sistema operacional que utilizamos em nossa instalação é o Ubuntu 22.04 e o BIND 9.18.19.


No servidor de DNS master do seu domínio fazer:


1 - Habilitando Update dinâmico no Bind(RFC 2136)

Gerar a chave de acesso com o comando abaixo:
tsig-keygen -a hmac-sha512 key_dominio_teste.com.br

Saída:

key "key_dominio_teste.com.br" {
algorithm hmac-sha512;
secret "WMzJ8kSfBZsPEgZ8HtRlSgVaNqkyzbCHANL0+s9uV8HdsMDyJeXE8tos0XLL1U9hWZie6ZvR1YeRWqspSMDijA==";
    };

Pegar a saída do comando acima e adicionar no arquivo de seus arquivos de zonas que por padrão é "/etc/bind/named.conf.local".

Sugiro criar uma chave por domínio e deixar essa chave acima das configurações do seu domínio.

2 - Ativando o DNS dinâmico no domínio teste.com.br

    zone "teste.com.br" {
        type master;
        file "master/teste.com.br.zone";
        check-names warn;
        update-policy {
                grant key_dominio_teste.com.br name _acme-challenge.teste.com.br. txt;
        };
    };

Garantir que o usuário "bind" tenha permissão de leitura e escrita no arquivo de zona "teste.com.br.zone"

Após configurar, reiniciar o serviço "service named restart"


Na máquina que será usada para gerar o certificado Let's Encrypt


1 - Garantir que essa máquina tenha acesso tcp na porta 53 de seu servidor de DNS master

2 - Instalar os pacotes do Let's Encrypt com os comandos abaixo:
apt install certbot
apt install python3-certbot-apache
apt install python3-certbot-dns-rfc2136

3 - Criar um arquivo contendo as informações necessárias para que o cliente possa solicitar o certificado. Como sugestão criar o arquivo em /root/key_dominio_teste.com.br.ini

dns_rfc2136_server = 10.0.0.1
dns_rfc2136_port = 53
dns_rfc2136_name = key_dominio_teste.com.br
dns_rfc2136_secret = WMzJ8kSfBZsPEgZ8HtRlSgVaNqkyzbCHANL0+s9uV8HdsMDyJeXE8tos0XLL1U9hWZie6ZvR1YeRWqspSMDijA==
dns_rfc2136_algorithm = HMAC-SHA512
dns_rfc2136_sign_query = false

    Ajuste as variáveis dns_rfc2136_server com o ip do seu DNS master, dns_rfc2136_name com o nome da sua chave gerada e o dns_rfc2136_secret com a chave gerada
    Garantir a permissão no arquivo ini "chmod 600 /root/key_dominio_teste.com.br.ini"

4 - Gerando o certificado

Com o comando abaixo, iremos criar um certificado do tipo WildCard.

certbot certonly --dns-rfc2136 --dns-rfc2136-credentials /root/key_dominio_teste.com.br.ini --dns-rfc2136-propagation-seconds 300 -d '*.teste.com.br' -d teste.com.br

Após a execução do comando acima a saída esperada:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator dns-rfc2136, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for teste.com.br
dns-01 challenge for teste.com.br
Waiting 300 seconds for DNS changes to propagate
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/teste.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/teste.com.br/privkey.pem
   Your cert will expire on 2024-01-07. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le





Notas e curiosidades


    Quando habilitamos o Update dinâmico no Bind(RFC 2136) esse recurso ativa um journaling do seu arquivo de zona, criando arquivos com extensão ".jnl", esses arquivos crescem sem limites por padrão, você pode limitar o seu crescimento através do "max-journal-size", no entanto eu optei para rodar o comando "rndc -V sync -clean" uma vez ao dia no meu servidor, esse comando realiza a sincronização no seu arquivo de zona de seu domínio e limpa os arquivos de journaling do seu sistema.
    Caso deseje vê o conteudo no arquivo de journaling você pode usar o comando abaixo:
named-journalprint /var/cache/bind/master/teste.com.br.zone.jnl 

terça-feira, 20 de junho de 2023

Ferramenta Web para testar envio de e-mail

 https://sendtestemail.com/?act=send-test-email

quinta-feira, 8 de junho de 2023

Converter PEM para outros formatos

Excelente site que explica os diversos formatos de certificados e como converter.

 https://www.misterpki.com/convert-pem-to-other-formats/

quarta-feira, 10 de agosto de 2022

Teste de SPF, DKIM e DMARC

 Teste de SPF, DKIM e DMARC

https://www.learndmarc.com


Testa Site, E-mail e IPV6

https://top.nic.br/

quinta-feira, 18 de fevereiro de 2016

general: warning: checkhints:

Apareceu isso:

16-Feb-2016 16:11:07.133 general: warning: checkhints: h.root-servers.net/A (198.97.190.53) missing from hints
16-Feb-2016 16:11:07.133 general: warning: checkhints: h.root-servers.net/A (128.63.2.53) extra record in hints
16-Feb-2016 16:11:07.133 general: warning: checkhints: h.root-servers.net/AAAA (2001:500:1::53) missing from hints
16-Feb-2016 16:11:07.133 general: warning: checkhints: h.root-servers.net/AAAA (2001:500:1::803f:235) extra record in hints

Solução:

Atualizar o arquivo /etc/bind/db.root com o conteúdo do arquivo do link http://www.internic.net/domain/named.root e reiniciar o bind.


sexta-feira, 27 de novembro de 2015

slapcat: ../../../../servers/slapd/ch_malloc.c:107: ch_calloc: Assertion `0' failed.

Executando o comando slapcat recebi a mensagem de erro abaixo:

5658494f ch_calloc of 1 elems of 800000008 bytes failed
slapcat: ../../../../servers/slapd/ch_malloc.c:107: ch_calloc: Assertion `0' failed.
Aborted (core dumped)

Resolvi o problema ajustando o "cachesize" no “/etc/ldap/slapd.conf”, não vou dizer o valor, pois cada servidor a sua quantidade de m´mória disponível.

Qualquer crítica, sugestão ou dúvida mande uma mensagem.

Atenciosamente,

Joaquim Ferraz

Criando índice no Postgres

Em uma postagem anterior falamos de como detectar e configurar o número de conexões concorrentes no Postgres e no de hoje iremos falar como criar um índice em uma tabela de seu banco de dados.

Os índices são estruturas que auxiliam na busca de informações em um banco de dados, funciona similarmente ao índice de um livro, sendo assim faz com que as informações sejam recuperadas mais rapidamente e como consequência diminui o tempo de processamento de seu banco e os acessos concorrentes.

Estávamos recebendo diversas reclamações que o acesso a um de nossos sistemas estava bastante lento. Analisando com o utilitário TOP do Linux, detectamos que o processo do Postgres estava utilizando muita CPU. Resolvemos analisar a tabela que armazena as informações de autenticação, detectamos que havia mais de 1 milhão de registro e que a mesma não possuía um índice, como o sistema tem uma rotina que detecta se o usuário já tinha uma sessão aberta, o sistema demora muito tempo realizando a busca nos mais de 1 milhões de registros.

Resolvemos o problema criando um índice para a tabela com o campo que é usado para a pesquisa, o comando usado para criar segue abaixo.


# create index nome_do_índice on  nome_da_tabela(nome_do_campo);

nome_do_índice = Nome que você deseja dar ao índice criado.
nome_da_tabela = Nome da tabela que você deseja criar o índice.
nome_do_campo = Nome do campo que é usado para a busca da informação.


Após a criação do índice o acesso ao sistema melhorou sensivelmente, outro beneficio detectado foi que diminuiu o número de conexões concorrentes ao banco, pois como o acesso as informações ficou mais ágil, fez com que fosse liberado mais rapidamente a conexão com o banco.

Qualquer crítica, sugestão ou dúvida mande uma mensagem.


Atenciosamente,
Joaquim Ferraz