Pesquisa de site

Como proteger diretórios da Web com senha no Nginx


Os gerentes de projetos web geralmente precisam proteger seu trabalho de uma forma ou de outra. Muitas vezes as pessoas perguntam como proteger seu site com senha enquanto ele ainda está em desenvolvimento.

Neste tutorial, mostraremos uma técnica simples, mas eficaz, de como diretório web protegido por senha ao executar o Nginx como servidor web.

Caso você esteja usando o servidor web Apache, você pode verificar nosso guia para proteger um diretório web com senha:

  1. Diretórios da Web protegidos por senha no Apache

Requisitos

Para concluir as etapas deste tutorial, você precisará ter:

  • Servidor web Nginx instalado
  • Acesso root ao servidor

Passo 1: Criar usuário e senha

1. Para proteger nosso diretório da web com senha, precisaremos criar o arquivo que conterá nosso nome de usuário e senha criptografados.

Ao usar o Apache, você pode usar o utilitário “htpasswd”. Se você tiver esse utilitário instalado em seu sistema, poderá usar este comando para gerar o arquivo de senha:

htpasswd -c /path/to/file/.htpasswd username

Ao executar este comando, você será solicitado a definir uma senha para o usuário acima e depois disso o arquivo .htpasswd será criado no diretório especificado.

2. Se você não tiver essa ferramenta instalada, poderá criar o arquivo .htpasswd manualmente. O arquivo deverá ter a seguinte sintaxe:

username:encrypted-password:comment

O nome de usuário que você usará depende de você, escolha o que quiser.

A parte mais importante é a forma como você irá gerar a senha para esse usuário.

Etapa 2: gerar senha criptografada

3. Para gerar a senha, use a função “crypt” integrada do Perl.

Aqui está um exemplo desse comando:

perl -le 'print crypt("your-password", "salt-hash")'

Um exemplo da vida real:

perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

Agora abra um arquivo e coloque seu nome de usuário e o gerado na string dele, separados por ponto e vírgula.

Aqui está como:

vi /home/tecmint/.htpasswd

Coloque seu nome de usuário e senha. No meu caso é assim:

tecmint:1xV2Rdw7Q6MK.

Salve o arquivo pressionando “Esc” seguido de “:wq”.

Etapa 3: atualizar a configuração do Nginx

4. Agora abra e edite o arquivo de configuração Nginx associado ao site em que você está trabalhando. No nosso caso usaremos o arquivo padrão em:

vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf                [For CentOS based systems]


vi /etc/nginx/sites-enabled/default     [For Debian based systems]

Em nosso exemplo, protegeremos com senha o diretório raiz do nginx, que é: /usr/share/nginx/html.

5. Agora adicione a seção de duas linhas a seguir abaixo do caminho que você deseja proteger.

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

Agora salve o arquivo e reinicie o Nginx com:

systemctl restart nginx
OR
service nginx restart

6. Agora copie/cole esse endereço IP em seu navegador e você deverá inserir a senha:

É isso! Seu diretório web principal agora está protegido. Quando você quiser remover a proteção por senha do site, simplesmente remova as duas linhas que você acabou de adicionar ao arquivo .htpasswd ou use o seguinte comando para remover o usuário adicionado de um arquivo de senha.

htpasswd -D /path/to/file/.htpasswd username