Como configurar a autenticação HTTP básica no Nginx

Como configurar a autenticação HTTP básica no Nginx

A autenticação básica HTTP é um mecanismo de segurança para restringir o acesso ao seu site/aplicativo ou a algumas partes, configurando a autenticação simples de nome de usuário/senha. Ele pode ser usado essencialmente para proteger o servidor HTTP inteiro, blocos de servidores individuais (hosts virtuais no apache) ou blocos de localização.

Leia também: Como configurar hosts virtuais baseados em nomes e baseados em nomes (blocos de servidor) com nginx

Como o nome sugere, não é um método seguro para confiar; Você deve usá -lo em conjunto com outras medidas de segurança mais confiáveis. Por exemplo, se o seu aplicativo da web estiver em execução no HTTP, as credenciais do usuário serão transmitidas em texto simples, portanto, considere ativar HTTPS.

O objetivo deste guia é ajudá -lo a adicionar uma camada pequena, mas útil, de segurança para proteger o conteúdo privado/privilegiado em seus aplicativos da Web (como, mas não limitado aos lados do administrador). Você também pode usá -lo para evitar o acesso a um site ou aplicativo que ainda está na fase de desenvolvimento.

Requisitos

  1. Instale a pilha Lemp no CentOS/Rhel 7
  2. Instale a pilha Lemp no Ubuntu/Debian

Crie arquivo de usuário de autenticação HTTP

Você deve começar criando um arquivo que será armazenado usuário senha pares. Vamos usar o htpasswd Utilitário do servidor Apache HTTP, para criar este arquivo.

Primeiro verifique isso Apache2-Utils ou Httpd-Tools, os pacotes que fornecem htpasswd O utilitário está instalado no seu sistema, caso contrário, execute o comando apropriado para sua distribuição para instalá -lo:

# yum install httpd-tools [rhel/centros] $ sudo apt install apache2-utils [debian/ubuntu] 

Em seguida, corra htpasswd comando abaixo para criar o arquivo de senha com o primeiro usuário. O -c A opção é usada para especificar o arquivo passwd, depois de bater [Digitar], Você será solicitado a inserir a senha do usuário.

# htpasswd -c/etc/nginx/conf.d/.Desenvolvedor HTPasswd 

Adicione um segundo usuário e não use o -c opção aqui.

# htpasswd/etc/nginx/conf.d/.htpasswd admin 

Agora que você tem o arquivo de senha pronto, prossiga para configurar as partes do seu servidor da web que deseja restringir o acesso. Para visualizar o conteúdo do arquivo de senha (que inclui nomes de usuário e senhas criptografadas), use o comando CAT abaixo.

# cat/etc/nginx/conf.d/.htpasswd 
Veja o arquivo de senha HTTP

Configure a autenticação HTTP para Nginx

Como mencionamos anteriormente, você pode restringir o acesso ao seu servidor da web, um único site (usando seu bloco de servidor) ou uma diretiva de localização. Duas diretivas úteis podem ser usadas para alcançar isso.

  • auth_basic - Liga a validação do nome de usuário e senha usando o “Autenticação básica HTTP”Protocolo.
  • auth_basic_user_file - Especifica o arquivo de senha.

Proteja a senha proteger hosts virtuais NGINX

Para implementar a autenticação básica para todo o servidor da web, que se aplica a todos os blocos de servidores, abra o /etc/nginx/nginx.conf Arquive e adicione as linhas abaixo no contexto HTTP:

http auth_basic "acesso restrito!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd;… 

Senha Proteger o site ou domínio Nginx

Para ativar a autenticação básica para um domínio ou subdomínio específico, abra seu arquivo de configuração em /etc/nginx/conf.d/ ou /etc/nginx/conf/sites-disponível (Dependendo de como você instalou o NGINX), adicione a configuração abaixo no bloco ou contexto do servidor:

servidor ouça 80; Exemplo server_name.com; auth_basic "acesso restrito!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd; Localização / …… 

Senha Proteger o diretório da web no nginx

Você também pode ativar a autenticação básica dentro de uma diretiva de localização. No exemplo abaixo, todos os usuários que tentam acessar o /admin O bloco de localização será solicitado a autenticar.

servidor ouça 80; Exemplo server_name.com www.exemplo.com; Localização / … Localização /admin/ auth_basic "acesso restrito!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd;  localização /public /auth_basic off; #Turna a autenticação básica http desligada para este bloco… 

Se você configurou a autenticação básica HTTP, todo o usuário que tenta acessar seu servidor da web ou um subdomínio ou parte específica de um site (dependendo de onde você o implementou), será solicitado um nome de usuário e senha, conforme mostrado na captura de tela abaixo.

Autenticação básica nginx

No caso de uma autenticação de usuário com falha, um “401 Autorização necessária”O erro será exibido como mostrado abaixo.

401 Autorização Erro necessário

Você pode encontrar mais informações para restringir o acesso à autenticação HTTP básica.

Você também gostaria de ler os seguintes guias relacionados ao servidor HTTP Nginx úteis.

  1. Como proteger a senha proteger os diretórios da web no nginx
  2. O guia final para proteger, endurecer e melhorar o desempenho do nginx
  3. Configurando HTTPS com o certificado Let's Encrypt SSL para Nginx

Neste guia, mostramos como implementar a autenticação HTTP básica no NGINX HTTP Web Server. Para fazer qualquer pergunta, use o formulário de feedback abaixo.