Como proteger o Apache com Let's Encrypt no Debian 12, 11 ou 10

Proteger seu servidor web Apache com um certificado Let's Encrypt é fundamental para proteger seu site e seus dados. Este guia irá orientá-lo neste processo no Debian 12 Bookworm, Debian 11 Bullseye e Debian 10 Buster. O foco aqui está na implementação de medidas de segurança robustas e, ao mesmo tempo, na simplificação das complexidades frequentemente associadas ao gerenciamento de servidores.

Principais vantagens de usar Let's Encrypt com Apache no Debian:

  • Custo-beneficio: Let's Encrypt oferece certificados SSL gratuitos, tornando a segurança de alto nível acessível a todos.
  • Renovações automatizadas: Os recursos de automação do Let's Encrypt simplificam a obtenção e renovação de certificados SSL, reduzindo o risco de falhas de segurança.
  • Segurança melhorada: Os certificados SSL da Let's Encrypt fornecem criptografia forte para dados em trânsito, aumentando a segurança geral do seu servidor Apache no Debian.
  • Ampla compatibilidade: a maioria dos navegadores modernos reconhece certificados Let's Encrypt, garantindo uma experiência de usuário tranquila.
  • Medidas de segurança proativas: Com atualizações regulares e políticas rigorosas, o Let's Encrypt é uma linha de defesa confiável contra diversas ameaças cibernéticas.

Seguir este guia ensinará como proteger seu servidor Apache no Debian usando Let's Encrypt, elevando a segurança e a confiabilidade de seus serviços web. Fique ligado para obter instruções detalhadas sobre como realizar essa configuração de segurança essencial.

Instale Certbot para Apache

Esta seção se concentrará na instalação do Certbot for Apache em um sistema Linux baseado em Debian. Certbot é uma ferramenta poderosa que simplifica a obtenção e configuração de certificados SSL do Let's Encrypt. Ele funciona lado a lado com o Apache, permitindo ativar HTTPS em seus servidores.

Atualize os repositórios de pacotes Debian antes da instalação do Certbot para Apache

Antes de instalar o Certbot, é crucial garantir que os repositórios de pacotes e os pacotes existentes em seu sistema Debian estejam atualizados. Manter o sistema atualizado garante a instalação da versão mais recente do Certbot e das dependências. Execute os seguintes comandos para atualizar os repositórios de pacotes e atualizar os pacotes existentes:

sudo apt update
sudo apt upgrade

Instale Certbot e plug-in Apache

Agora que seu sistema Debian está atualizado, o próximo passo é instalar o Certbot junto com seu plugin Apache. O plugin Apache é essencial porque permite que o Certbot interaja com o Apache, automatize a obtenção e renovação de certificados e configure o Apache para usá-los. Execute o seguinte comando para instalar o Certbot e o plugin Apache:

sudo apt install certbot python3-certbot-apache

Configurando o Apache e o certificado Let's Encrypt

In this section, we’ll guide you through configuring Apache and generating a Let’s Encrypt SSL certificate for your domain using Certbot. We’ll also cover the use of various options that improve the security of your server configuration.

Certbot Configuration and SSL Certificate Generation on Apache with Debian

After installing Certbot and its Apache plugin, the next action is to run Certbot to generate an SSL certificate for your domain. The command includes several options to optimize security.

Here’s a breakdown of the options used:

  • --apache: Specifies that the web server in use is Apache.
  • --agree-tos: Indicates your agreement to Let’s Encrypt’s terms of service.
  • --redirect: Sets up a permanent 301 redirect from HTTP to HTTPS, ensuring all traffic is encrypted.
  • --hsts: Adds a Strict-Transport-Security header to enforce secure connections.
  • --staple-ocsp: Enables OCSP Stapling, enhancing SSL negotiation performance while maintaining user privacy.
  • --email: This is the email address to which you will receive notifications related to your SSL certificate, such as renewal reminders and security alerts.

Substituir you@example.com with your actual email and yourdomain.com with your domain name. Execute the following command:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com

Upon successful execution, Certbot will generate an SSL certificate for your domain, configure Apache to use it, and apply the specified security options. Your server will now be secure, and your website will be accessible via HTTPS.

Alternative Certbot Configuration Method with Apache

Para aqueles que preferem uma abordagem mais guiada e interativa, o Certbot oferece um método alternativo que solicita informações e opções de configuração. Veja como usar este método:

Execute o seguinte comando:

sudo certbot --apache

Certbot iniciará uma sessão interativa. Abaixo está um passo a passo dos prompts que você pode encontrar:

  • Digite o endereço de e-mail (usado para renovação urgente e avisos de segurança): Provide your email address. Let’s Encrypt will use this to communicate about your certificates.
  • Concorde com os termos de serviço do Let's Encrypt: You will be asked to agree to the terms of service. Input A to agree.
  • Compartilhe seu e-mail com a Electronic Frontier Foundation para atualizações sobre seu trabalho: If you want to support the EFF, input Y for yes. Otherwise, input N for no.
  • Para quais nomes você gostaria de ativar o HTTPS: Certbot will display the domain names it can issue certificates for. Input the numbers corresponding to your domains or leave them blank for everyone.
  • Selecione a ação apropriada: você terá a opção de:
    • 1: Attempt to reinstall the certificate
    • 2: Renew & replace the certificate (limit ~5 per 7 days)
    • Selecione a opção que atende às suas necessidades.
  • Escolha se deseja ou não redirecionar o tráfego HTTP para HTTPS: você será perguntado se deseja redirecionar o tráfego HTTP para HTTPS. Isso é aconselhável para a maioria dos sites:
    • 1: No redirect – Make no further changes to the webserver configuration.
    • 2: Redirect – Make all requests redirect to secure HTTPS access.
    • Select option 2 for better security.

Once you have gone through all the prompts and the process is complete, Certbot will output a message similar to the one mentioned, indicating the location of your certificate files and further information.

Automatizando a renovação de certificados SSL com Cron

In this section, we’ll set up an automatic renewal process for your SSL certificates using Cron, a built-in job scheduler in Linux-based systems. Let’s Encrypt SSL certificates, which have a lifespan of 90 days, and it’s essential to renew them before they expire to avoid service disruptions. Certbot provides a command for renewing certificates, and we can automate this task using Cron.

Dry Run of Certificate Renewal

Before automating the renewal process, ensuring that the renewal command works as expected is crucial. We can do this by performing a dry run, which simulates the renewal process without changing the certificates. Run the following command to initiate a dry run:

sudo certbot renew --dry-run

Agendamento de renovações automáticas de certificados

Se a simulação for concluída sem erros, poderemos agendar renovações automáticas de certificados. Usaremos o Cron para executar o comando de renovação em um horário específico todos os dias.

Primeiro, abra o arquivo crontab no modo de edição usando o seguinte comando:

sudo crontab -e

No final do arquivo, adicione a seguinte linha para agendar uma verificação de renovação diária às 2h30:

30 2 * * * /usr/bin/certbot renew --quiet

O --quiet A opção garante que o processo de renovação seja executado silenciosamente em segundo plano, sem produzir qualquer saída, a menos que haja um erro.

Após adicionar esta linha, salve e feche o arquivo. Agora você configurou um processo de renovação automática para seus certificados SSL. O Cron verificará diariamente se algum certificado precisa ser renovado e os renovará conforme necessário. Isso garante que seu servidor Apache sempre use certificados SSL válidos, mantendo uma conexão de usuário segura.

Aprimorar a configuração SSL do Apache

Nesta seção, otimizaremos o desempenho do seu servidor Apache modificando sua configuração SSL. Isso envolve a configuração de certificados SSL, habilitação de HTTP/2, implementação de HTTP Strict Transport Security (HSTS) e configuração de protocolos e cifras SSL. Esta configuração requer os módulos Apache mod_ssl, mod_socache_shmcb, mod_rewrite, e mod_headers.

Edite o arquivo de configuração do Apache

Para começar, você precisa acessar o arquivo de configuração do seu domínio no Apache. Execute o seguinte comando:

sudo nano /etc/apache2/sites-available/your_domain.conf

Isso abre o arquivo de configuração do seu domínio em um editor de texto chamado Nano. Depois de entrar, faça os seguintes ajustes no bloco VirtualHost.

Redirecionar HTTP para HTTPS

Primeiro, configuraremos uma regra para redirecionar todo o tráfego HTTP para HTTPS, garantindo que todas as conexões com o seu servidor sejam seguras. Esta regra exclui solicitações ao .well-known/acme-challenge/ diretório, que é usado pelo Certbot para validação de domínio durante o processo de emissão de certificado. Adicione a seguinte configuração dentro do <VirtualHost *:80> bloquear:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

Habilite SSL e especifique certificados

A seguir, dentro do <VirtualHost *:443> bloquear, ativaremos o SSL e especificaremos os caminhos para seu certificado SSL e chave privada:

SSLEngine on
SSLCertificateFile      /path/to/signed_cert_and_intermediate_certs
SSLCertificateKeyFile   /path/to/private_key

Substituir /path/to/signed_cert_and_intermediate_certs com o caminho para o seu arquivo de certificado SSL e /path/to/private_key com o caminho para o seu arquivo de chave privada.

Habilitar HTTP/2

Para melhorar o desempenho, ativaremos o HTTP/2 se estiver disponível:

Protocols h2 http/1.1

Implementar HSTS

Também adicionaremos um cabeçalho Strict-Transport-Security para impor conexões seguras:

Header always set Strict-Transport-Security "max-age=63072000"

Configurar protocolos e cifras SSL

A seguir, especificaremos quais protocolos e cifras SSL devem ser usados ​​para garantir alta segurança e compatibilidade:

SSLProtocol                        all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite                  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:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder    off
SSLSessionTickets            off

Habilitar grampeamento OCSP

Por fim, habilitaremos o grampeamento OCSP, um recurso que melhora o desempenho da negociação SSL enquanto mantém a privacidade do visitante:

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Valide e aplique as alterações

Quando terminar, salve e saia do arquivo. É vital validar a configuração do Apache para garantir que não haja erros de sintaxe. Execute este comando para verificar:

sudo apachectl configtest

Se não houver problemas, aplique as alterações recarregando o Apache:

sudo systemctl restart apache2

Conclusão

Ao longo deste artigo, nos aprofundamos na proteção do Apache com certificados Let's Encrypt SSL no Debian 10, 11 e 12. Destacamos a importância dos certificados SSL para garantir a comunicação segura entre servidores e clientes. Começando com a instalação do Certbot, exploramos como obter um certificado SSL gratuito da Let's Encrypt. Também discutimos a configuração do Apache para aproveitar o certificado SSL, automatizando o processo de renovação por meio de tarefas cron e fortalecendo a segurança por meio da configuração do Apache.

Como recomendação final, é essencial monitorar os logs e manter o sistema atualizado regularmente. Essas práticas garantirão que você seja informado sobre possíveis problemas e que seu servidor esteja fortalecido contra as vulnerabilidades de segurança mais recentes.

Joshua James
Me siga
Últimos posts por Joshua James (exibir todos)

Deixe um comentário