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.

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=

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

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

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;
}
}

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

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

Ó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.

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.