Como configurar a autenticação Apache htpasswd no Ubuntu
Usar a autenticação htpasswd do Apache é uma maneira simples de adicionar controle de acesso básico aos diretórios da Web, exigindo que os usuários forneçam um nome de usuário e uma senha antes de acessar determinadas partes do site. Esse tipo de autenticação é frequentemente usado para restringir o acesso a áreas confidenciais, como painéis de administração ou sites de desenvolvimento, e pode ser configurado facilmente em um servidor Ubuntu com Apache.
Pré-requisitos
- Um servidor executando o Ubuntu com o Apache2 instalado.
- Acesso root ou sudo ao servidor.
- Conhecimento básico de como usar a linha de comando.
Etapa 1: Instalar o Apache (se ainda não estiver instalado)
Se o Apache não estiver instalado em seu servidor Ubuntu, você poderá instalá-lo com o seguinte comando:
sudo apt install apache2
Etapa 2: Habilite o utilitário htpasswd
O utilitário htpasswd é fornecido pelo pacote apache2-utils, que normalmente é instalado com o Apache. Se ele não estiver instalado, você pode instalá-lo executando:
Esse comando instala as ferramentas necessárias para gerenciar arquivos de senha para autenticação htpasswd.
Etapa 3: criar o arquivo .htpasswd
O arquivo .htpasswd é usado para armazenar os nomes de usuário e as senhas criptografadas para autenticação.
- Criar um novo arquivo .htpasswd: Para criar um novo arquivo .htpasswd e adicionar um usuário, execute o seguinte comando:sudo htpasswd -c /etc/apache2/.htpasswd your_username
Substitua your_username pelo nome de usuário que deseja criar.
- A opção -c cria um novo arquivo .htpasswd. Se o arquivo já existir e você usar a opção -c, ele será substituído, portanto, use-a somente ao criar o arquivo pela primeira vez.
- Digite e confirme a senha:Depois de executar o comando, será solicitado que você digite e confirme uma senha para o usuário.O arquivo /etc/apache2/.htpasswd será criado com a senha criptografada do seu nome de usuário.
- Adicionar usuários adicionais (opcional): para adicionar mais usuários sem substituir o arquivo .htpasswd existente, execute:sudo htpasswd /etc/apache2/.htpasswd another_username
Substitua another_username pelo novo nome de usuário. Esse comando anexa o novo usuário ao arquivo .htpasswd existente.
Etapa 4: configurar o Apache para proteção por senha
É necessário especificar qual diretório ou local você deseja proteger com a senha. Isso é feito por meio de um arquivo .htaccess ou editando diretamente o arquivo de configuração do Apache.
Opção 1: Usar o arquivo .htaccess
- Ativar arquivos .htaccess: Se quiser usar arquivos .htaccess para configurar a proteção por senha, verifique se a diretiva AllowOverride está definida como All para o diretório que deseja proteger. Edite o arquivo de configuração apropriado do Apache (por exemplo, /etc/apache2/sites-available/000-default.conf):sudo nano /etc/apache2/sites-available/000-default.conf
Localize a seção da raiz da Web (por exemplo, /var/www/html) e defina AllowOverride como All:
AllowOverride All
</Diretório> - Reinicie o Apache:Após editar a configuração, reinicie o Apache para aplicar as alterações:sudo systemctl restart apache2
- Criar um arquivo .htaccess:Dentro do diretório que você deseja proteger (por exemplo, /var/www/html), crie ou edite um arquivo .htaccess:sudo nano /var/www/html/.htaccess
- Adicione as seguintes diretivas:Adicione as seguintes linhas ao arquivo .htaccess:AuthType Basic
AuthName “Restricted Content” (Conteúdo restrito)
AuthUserFile /etc/apache2/.htpasswd
Exigir valid-user- AuthType Basic: Especifica a autenticação básica.
- AuthName: Uma mensagem que será mostrada no prompt de autenticação.
- AuthUserFile: o caminho para o seu arquivo .htpasswd.
- Require valid-user (Exigir usuário válido): Restringe o acesso aos usuários listados no arquivo .htpasswd.
- Salve e feche o arquivo.
Opção 2: usar o arquivo de configuração do Apache diretamente
Se você preferir gerenciar a autenticação diretamente nos arquivos de configuração do Apache em vez de usar o .htaccess, siga estas etapas:
- Edite a configuração do host virtual:Abra o arquivo de configuração do Apache para o site que você deseja proteger (por exemplo, /etc/apache2/sites-available/000-default.conf):sudo nano /etc/apache2/sites-available/000-default.conf
- Adicione as diretivas de autenticação: Dentro do bloco ou do bloco que corresponde ao diretório que você deseja proteger, adicione o seguinte:<Diretório “/var/www/html”>
AuthType Basic
AuthName “Restricted Content” (Conteúdo restrito)
AuthUserFile /etc/apache2/.htpasswd
Exigir usuário válido
</Diretório> - Salve e feche o arquivo de configuração.
- Reinicie o Apache:Depois de fazer as alterações, reinicie o Apache:sudo systemctl restart apache2
Etapa 5: testar a autenticação
Agora, navegue até o URL do diretório protegido usando seu navegador da Web (por exemplo, http://your_server_ip_or_domain). Você deverá ver um prompt de login solicitando um nome de usuário e uma senha.
- Digite o nome de usuário e a senha que você criou com o comando htpasswd.
- Se as credenciais estiverem corretas, você obterá acesso ao diretório; caso contrário, o acesso será negado.
Etapa 6: proteger o arquivo .htpasswd
Por motivos de segurança, certifique-se de que o arquivo .htpasswd esteja armazenado fora da raiz da Web (por exemplo, /etc/apache2/.htpasswd) para que não possa ser acessado diretamente por um navegador da Web.
Certifique-se de que o arquivo .htpasswd tenha as permissões corretas:
sudo chown www-data:www-data /etc/apache2/.htpasswd
Isso garante que somente o usuário do Apache (www-data) e o root tenham acesso para ler o arquivo .htpasswd.
Conclusão
A configuração da autenticação htpasswd no Apache é uma maneira simples de adicionar controle de acesso básico a diretórios específicos do seu site. Ela é adequada para proteção de baixo nível, especialmente em ambientes internos ou de desenvolvimento. Entretanto, para áreas altamente confidenciais, considere o uso de métodos de autenticação mais robustos, como o OAuth ou a integração com um sistema de gerenciamento de identidade.