17.04.2025

Autenticação básica com senha HTTP

Uma das fronteiras da proteção da informação é considerada ser o subsistema de identificação e autenticação, que fornece acesso seguro aos recursos. Como o segmento da Internet é constantemente escaneado por bots em busca de serviços vulneráveis, soluções públicas estão sob constantes ataques de força bruta.

Captura de tela nº 1 — Ataques ao servidor

Onde mecanismos fracos, e em alguns casos a ausência deles, levam a consequências críticas e danos! Neste artigo, vamos considerar um dos métodos básicos de autenticação — o HTTP Basic Auth, sua implementação e configuração pelo usuário.

O que é HTTP Basic Auth?

A autenticação pode ser bastante variada em termos de tipos de autenticação, ao usar: logins/senhas, tokens assinados, certificados, códigos TOTP, chaves de criptografia, etc. E também pela forma de implementação arquitetônica: módulos, serviços, serviços externos.

No nosso caso, o HTTP Basic Auth fornece verificação básica por login e senha, sendo implementado como um módulo em soluções web/proxy. Onde as credenciais de autenticação são passadas no cabeçalho e codificadas em Base64.

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Captura de tela nº 2 — Esquema

Observe que a transmissão desse tipo de dados sensíveis deve ocorrer por meio de protocolos seguros! Neste caso, classicamente o SSL irá autenticar o servidor e formar uma conexão criptografada. Uma das desvantagens desse tipo de autenticação são as senhas fracas, que podem ser quebradas por ferramentas como o Medusa.

Como configurar a autenticação?

Vamos considerar um exemplo prático de como configurar essa autenticação no nginx. Primeiramente, vamos ao terminal e instalamos todas as dependências necessárias:

sudo apt update
sudo apt install nginx

Captura de tela nº 3 — Instalação

Em seguida, precisamos criar um banco de dados com usuários, onde as senhas serão armazenadas em formato hash. Para isso, vamos instalar o utilitário e executar os comandos:

sudo apt install apache2-utils

Onde cada um dos elementos tem um valor diferente: o caminho para o futuro banco de dados de usuários /etc/nginx/.htpasswd e o nome do usuário a ser criado — mike.

sudo htpasswd -c /etc/nginx/.htpasswd mike

Captura de tela nº 4 — Criar usuário

Para criar o segundo e os usuários subsequentes, você deve remover a opção -c que cria um novo arquivo. Após o usuário estar no banco de dados, precisamos alterar as configurações. Vamos localizar nosso host virtual:

nano /etc/nginx/sites-available/default

Por padrão, o arquivo se chama default, mas no seu caso pode ser diferente! Vamos adicionar uma diretiva que permitirá a autenticação antes da conexão:

server {
listen 80;
server_name example.com;
location / {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8080;
}
}

Captura de tela nº 5 — Configuração

A autenticação pode ser especificada em um caminho web específico ou em todo o host virtual. Para isso, posicione as diretivas auth_basic_user_file e auth_basic nos blocos server ou location.

Verifique a configuração antes de executar. Se estiver correta, o serviço será reiniciado:

sudo nginx -t && sudo systemctl reload nginx

Captura de tela nº 6 — Teste

Depois disso, você pode acessar o endereço example.com e verificar o funcionamento do serviço ativado:

Captura de tela nº 7 — Verificar resultado

Ótimo, ao acessar o caminho /, a diretiva é acionada, o que nos permite verificar o arquivo com usuários e processar pacotes adicionais ao conectar.

É recomendada a instalação do fail2ban, que pode limitar o número de solicitações falhas e impedir invasões.

Na nossa base de conhecimento você pode encontrar a configuração de outros métodos de autenticação — Digest, NTLM, Kerberos e outros! Se você não tiver recursos suficientes, pode realizar as ações em servidores de nuvem potentes.

A Serverspace oferece servidores VPS isolados para uso comum e virtualizado.

Captura de tela nº 8 — Criar servidor

Levará algum tempo para implantar a capacidade do servidor. Após isso, você pode se conectar de qualquer uma das formas convenientes. Este serviço de infraestrutura é uma parte integrante da rede corporativa e do subsistema de segurança, permitindo implementar autenticação, filtragem de conteúdo, além de atuar como um gateway para que os usuários controlem os recursos acessados.