Dicas de como configurar seu Nginx de forma mais segura

Bom pessoal, abaixo temos algumas Dicas de como configurar seu Nginx de forma mais segura para tentar evitar ataques ou pessoas tentando explorar endpoints específicos do seu Nginx.

De antemão vale lembrar temos outros artigos relacionados a configurações do Nginx, veja abaixo:

5 Dicas úteis de Configuração do Nginx
Como habilitar a compressão no Nginx
3 dicas de configuração para seu Nginx
Como configurar um proxy reverso com Nginx para o Kibana

Restrição de Diretórios por IP

Na maioria das vezes existem endpoints na sua aplicação ou no seu site que não precisam estar públicos. Logo, por mais que exista um método de autenticação, negar a autenticação diretamente no servidor web pode ser bem menos custoso do que deixar uma aplicação tratar as requisições.

Contudo, imagine que você quer restringir o acesso de um determinado Location no Nginx e liberar somente de um IP específico por exemplo:

Desse modo, você pode fazer assim:

location /coffops-admin/ {
  
# Bloquear o IP 177.82.33.1
  deny 177.82.33.1;

  # Liberar a rede 177.82.34.0/24
  allow  177.82.34.0/24;

  # Negar qualquer outro tipo de acesso
  deny all;

}

Protegendo um location com senha

Se você quiser proteger um location especifico ou vários location com uma determinada senha, você pode usar o método abaixo:

# Protegendo /coffops-admin e /admin com senha
location ~ /(coffops-admin|admin) {

  auth_basic  "Area Restrita, por favor forneça usuário e senha";
  auth_basic_user_file   /etc/nginx/conf/.htpasswd;

}

Para gerar a senha usamos o comando htpasswd é instalado com apt install apache2-utils no Ubuntu ou yum install httpd-tools no CentOS.

Logp, após instalar o pacote você consegue gerar um usuário e senha usando:

htpasswd -c /etc/nginx/conf/.htpasswd coffops-user

Bloqueando tentativas de execução de código

Não é de hoje que você vai achar nos logs do seu nginx tentativas de acesso para tentar identificar algum endpoint aberto ou arquivos que possam ser executados e acessados no seu servidor Web.

Bom, abaixo temos exemplo de como bloquear execuções maliciosas no seu servidor:

# Bloqueado tentativa de execução de arquivos GIT
location ~ /\.git {

  return 403;

}

# Bloqueando tentativa de execucao de arquivos perl, cgi, python, sh e lua
location ~* \.(pl|cgi|py|sh|lua)\$ {

  return 403;

}

# Bloqueando tentativa de execução conhecidas no WordPress.
location ~* ^/wp-content/uploads/.*.(asp|cgi|htm|html|js|jsp|php|pl|py|sh|shtml|swf)$ {

  return 403;

}

# Bloqueando qualquer tentativa de execução de arquivos Readme, licence etc.
location ~* ^/(readme|license|schema|password|passwords).*.(txt|html)$ {

  return 403;

}

# Bloqueando tentativa de execução para explorar informações em arquivos de conf ou sql
location ~* ^/*.(conf|sql)$ {

  return 403;

}

Bom pessoal por hoje é isso, espero que isso ajude você a deixar seu ambiente mais seguro =)

Até a próxima!

Deixe um comentário

O seu endereço de e-mail não será publicado.