Guia de segurança e proteção do Nginx Web Server

Práticas recomendadas de segurança Nginx.


O Nginx é o servidor da Web que mais cresce no setor e atualmente ocupa a segunda posição em participação de mercado.

Foi lançado inicialmente em 2004 e, desde então, ganhou uma excelente reputação e foi usado nos milhões de sites mais movimentados.

Há uma razão para isso – o Nginx é ardente rápido.

Neste artigo, falarei sobre alguns dos guias essenciais para proteger o Nginx para um ambiente de produção. Então, vamos começar.

SSL / TLS

Implementar certificado SSL

O primeiro passo na segurança da web é ter o SSL implementado para que você possa acessar aplicativos da web com https e adicionar uma camada de criptografia na comunicação.

  • Use o OpenSSL para gerar CSR com 2048 bits e sha-2

openssl req -nodes -new -sha256 -newkey rsa: 2048 -keyout bestflare.key -out bestflare.csr

  • O comando acima irá gerar arquivos CSR e chave no trabalho atual diretamente. Não se esqueça de alterar o nome do arquivo .csr e .key.

Obtenha o CSR assinado por uma autoridade de certificação e depois de ter o certificado assinado, você poderá implementá-los no Nginx, conforme abaixo.

  • Faça logon no servidor Nginx
  • Vá para a pasta conf em que você tem um arquivo ssl.conf.

Nota: Na instalação padrão no Linux, você terá este arquivo em /etc/nginx/conf.d.

  • Edite o arquivo e adicione o seguinte, o que permitirá que o Nginx escute na porta 443

servidor {
ouça 443 ssl;
server_name bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Nota: não se esqueça de alterar o certificado e o caminho do arquivo de chaves.

  • Salve a configuração e reinicie o Nginx. Um certificado SSL foi implementado com sucesso.

bestflare-ssl-cert

Otimização SSL / TLS

Ter SSL não significa que ele é totalmente seguro e é aí que, como especialista em segurança da Web, você precisa aplicar uma configuração para proteger o servidor da Web.

Para começar, eu recomendaria executar um Varredura SSL contra o site para encontrar a pontuação e a vulnerabilidade essencial.

ssl-labs-rating-c

Portanto, a classificação atual do SSL Labs é “C” e um objetivo é torná-lo “A.”

Desativar protocolos SSL / TLS fracos

SSL 3, TLS 1.0 e TLS 1.1 são vulneráveis ​​e permitiremos apenas um protocolo TLS 1.2 forte.

  • Edite o arquivo ssl.conf e adicione abaixo no bloco do servidor

protocolos ssl_ TLSv1.2;

  • Salve o arquivo ssl.conf e reinicie o Nginx

Desativar conjuntos de cifras fracas

Conjuntos de cifras fracos podem levar a vulnerabilidades como um logjam, e é por isso que precisamos permitir apenas cifras fortes.

  • Adicione o seguinte ao bloco do servidor no arquivo ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH LOGO! ! MD5! EXP! PSK! SRP! DSS";

  • Salve o arquivo e reinicie o Nginx

Instalar certificado de cadeia

Não possuir um certificado em cadeia também afeta a classificação geral e isso pode mostrar um erro ao navegar em um navegador moderno como o Chrome. Você precisa obter um certificado de cadeia da autoridade. Principalmente você encontrará em seu site ou apenas no Google.

  • Adicione o conteúdo do certificado da cadeia no certificado do site, como abaixo. No meu exemplo, seria /opt/cert/bestflare.pem

cadeia de certificação

  • Salve o arquivo e reinicie o Nginx

Secure Diffie-Hellman para TLS

Diffie-Hellman é menos seguro do que se pensava. Uma das práticas recomendadas recentemente incluídas em uma lista é proteger Diffie-hellman. Gerar DH GROUP exclusivo e adicionar ssl_dhparam no arquivo ssl.conf faz isso.

  • Gere grupo DH exclusivo usando OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Levará alguns minutos e gerará um arquivo dhparams.pem em um diretório de trabalho atual
  • Copiar dhparams.pem para a pasta cert
  • Modifique ssl.conf e adicione o seguinte no bloco do servidor

ssl_dhparam /opt/cert/dhparams.pem;

  • Salve o arquivo e reinicie o Nginx

Isso deve ser suficiente para a otimização SSL / TLS e vamos testar o URL novamente para ver a classificação.

ssllabs-a-rating

Woo ho! Então agora você pode ver que é “UMA” classificação por SSLLabs. Bem feito!

Aqui está o ssl.conf completo

# Configuração do servidor HTTPS
servidor {
ouça 443 ssl;
server_name bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
protocolos ssl TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH LOGO! ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Vazamento de informação

Na instalação padrão do Nginx, você terá muitas informações confidenciais reveladas, o que pode ajudar os hackers a se prepararem para um ataque.

Se você estiver trabalhando em um ambiente de conformidade com PCI, isso é considerado uma vulnerabilidade de vazamento de informações e deve corrigir o item.

Você precisa usar server_tokens off para desativar o vazamento de informações. Eu expliquei isso no meu artigo anterior. Remover versão do banner do cabeçalho do servidor no Nginx

Segurança de aplicativos da Web

A configuração padrão do Nginx não é perfeita e pode ter muitas vulnerabilidades, é por isso que as fortalecemos para torná-la segura.

Desativar métodos HTTP indesejados

Na maioria das vezes, você precisa apenas GET, HEAD & Solicitação HTTP POST em seu aplicativo da web. Permitir que TRACE ou DELETE seja arriscado, pois pode permitir ataques de rastreamento entre sites e potencialmente permitir que um hacker roube as informações de cookies.

  • Modifique o nginx.conf e adicione o seguinte no bloco do servidor

if ($ request_method! ~ ^ (GET | HEAD | POST) $)
{
retorno 405;
}

Salve o arquivo e reinicie o Nginx. Isso agora mostrará 405 Não permitido se alguém estiver tentando usar TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Tentando 128.199.100.162…
Conectado ao bestflare.com.
O caractere de escape é ‘^]’.
TRACE / HTTP / 1.1
Anfitrião: testing
HTTP / 1.1 405 não permitido
Servidor: nginx
Data: sábado, 11 de julho de 2015 06:04:34 GMT
Tipo de Conteúdo: text / html
Comprimento do conteúdo: 166
Conexão: fechar

Ataque de Clickjacking

Você pode injetar X-FRAME-OPTIONS no cabeçalho HTTP para impedir um ataque de clickjacking.

Isso é obtido adicionando abaixo no arquivo nginx.conf

add_header Opções de quadro X "SAMEORIGIN";

O cabeçalho acima instruirá o navegador a carregar APENAS os recursos da mesma origem.

Proteção X-XSS

Injete o cabeçalho HTTP com proteção X-XSS para reduzir o ataque de script entre sites.

  • Modifique o arquivo nginx.conf para adicionar o seguinte

add_header Proteção X-XSS "1; mode = bloco";

  • Salve o arquivo de configuração e reinicie o Nginx. Você pode usar o Teste de cabeçalhos ferramenta para verificar após a implementação.

Você também pode estar interessado em implementar cabeçalhos seguros recomendados pela OWASP, explicados aqui.

Implementar Mod Security WAF

Adicione uma camada adicional de segurança implementando o ModSecurity do Web Application Firewall com o conjunto de regras principais do OWASP.

Como alternativa, se você considerar o uso de segurança baseada em nuvem, como SUCURI na frente do servidor Nginx.

Mantenha o Nginx atualizado

Por último, mas não menos importante, você precisa manter seu Nginx atualizado, pois há muitos aprimoramentos de desempenho, correções de segurança e novos recursos sendo adicionados.

Espero que isso ajude você a manter seu Nginx seguro.

Em seguida, você pode estar interessado em aprender a construa o Nginx para obter alto desempenho a partir do zero.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map