Segurança Nginx com Let’s Encrypt: Guia Completo CentOS 7


Protegendo o Nginx com Let’s Encrypt no CentOS 7: Um Guia Completo

O Nginx é reconhecido como um servidor web de alto desempenho, capaz de gerenciar um volume significativo de tráfego. Para reforçar a segurança do seu servidor Nginx, a implementação de certificados SSL/TLS é uma prática fundamental. O Let’s Encrypt surge como uma autoridade certificadora (CA) gratuita e automatizada, oferecendo certificados SSL/TLS sem custo. Este guia detalha o processo de proteção do Nginx utilizando o Let’s Encrypt no sistema CentOS 7.

Requisitos Iniciais

Antes de iniciar, certifique-se de ter:

  • Um servidor CentOS 7 com o Nginx já instalado.
  • Um nome de domínio registrado e configurado para apontar para o seu servidor.
  • Acesso root ou permissões sudo.

Instalação do Certbot

O Certbot é uma ferramenta projetada para simplificar o gerenciamento de certificados SSL/TLS do Let’s Encrypt. A instalação é o primeiro passo:

yum install certbot python2-certbot-nginx

Obtenção do Certificado SSL/TLS

Após a instalação do Certbot, você estará apto a solicitar um certificado SSL/TLS para o seu domínio:

certbot --nginx -d your.domain.com

Configuração do Nginx

O próximo passo envolve a configuração do Nginx para utilizar o certificado SSL/TLS:

  • Localize e abra o arquivo de configuração do Nginx em /etc/nginx/conf.d/your_domain.conf:
  • nano /etc/nginx/conf.d/your_domain.conf

  • Insira as seguintes configurações:

    server {
        listen 443 ssl;
        server_name your.domain.com;
    
        ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers off;
        ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256";
    
        location / {
            proxy_pass http://localhost:8080;
        }
    }
    
    server {
        listen 80;
        server_name your.domain.com;
    
        return 301 https://your.domain.com;
    }
    

  • Salve e feche o arquivo.

Reinicialização do Nginx

Para que as alterações tenham efeito, o Nginx precisa ser reiniciado:

systemctl reload nginx

Considerações Finais

Ao seguir estas instruções, você configurou com sucesso a proteção do seu servidor Nginx com um certificado SSL/TLS fornecido pelo Let’s Encrypt. Essa medida criptografa a comunicação entre o seu servidor e os navegadores dos usuários, salvaguardando informações e privacidade. É crucial manter o seu certificado atualizado, realizando renovações regulares para garantir a sua validade. Um servidor Nginx seguro é um componente essencial para manter a confiança dos usuários e defender o seu site contra ameaças maliciosas.

Perguntas Frequentes (FAQs)

O que é SSL/TLS? SSL (Secure Sockets Layer) e TLS (Transport Layer Security) são protocolos que criptografam as comunicações na web para proteger os dados transmitidos de interceptação ou adulteração.
O que é Let’s Encrypt? Let’s Encrypt é uma autoridade de certificação que oferece certificados SSL/TLS gratuitos para websites, automatizando o processo de obtenção, instalação e renovação desses certificados.
Como posso renovar meu certificado SSL/TLS? A renovação do certificado SSL/TLS pode ser realizada com o seguinte comando:

certbot renew

Como corrijo o erro “ssl_certificate_key file not found”? Este erro costuma indicar que a chave privada não está localizada no caminho especificado. Verifique a exatidão do caminho no arquivo de configuração do Nginx.
Como redirecionar tráfego HTTP para HTTPS? Para redirecionar tráfego HTTP para HTTPS, adicione a seguinte linha no arquivo de configuração do Nginx:

return 301 https://your.domain.com$request_uri;

Como habilitar o HSTS no Nginx? HSTS (HTTP Strict Transport Security) força o navegador a conectar-se ao seu site exclusivamente via HTTPS. Habilite-o adicionando esta linha à configuração do Nginx:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

Como proteger o Nginx contra ataques de força bruta? Você pode mitigar ataques de força bruta limitando o número de tentativas de login incorretas por IP. Inclua este bloco em sua configuração do Nginx:

     limit_req_zone $binary_remote_addr zone=req_limit_zone:10m rate=3r/s;

     server {
        include other_configs;
    
        location / {
            limit_req zone=req_limit_zone burst=5;
        }
     }
     

Como adicionar múltiplos certificados SSL/TLS ao Nginx? Para utilizar múltiplos certificados SSL/TLS, empregue a diretiva ssl_certificate dentro do bloco server:

    server {
        listen 443 ssl;
        
        ssl_certificate /path/to/cert1.pem;
        ssl_certificate_key /path/to/key1.pem;
        
        ssl_certificate /path/to/cert2.pem;
        ssl_certificate_key /path/to/key2.pem;
    }
    

Como diagnosticar problemas de conexão SSL/TLS no Nginx? Utilize estas ferramentas para diagnosticar problemas:
  • openssl s_client -connect your.domain.com:443: Exibe detalhes sobre a conexão SSL/TLS.
  • nmap -p 443 your.domain.com: Verifica se a porta 443 (HTTPS) está aberta.
  • Wireshark: Captura e analisa o tráfego de rede para detectar erros de conexão.
Como remover um certificado SSL/TLS do Nginx? Remova o certificado SSL/TLS do arquivo de configuração e do diretório live:

rm /etc/nginx/conf.d/your_domain.conf

rm -rf /etc/letsencrypt/live/your.domain.com