Como configurar a autenticação Apache htpasswd no Ubuntu
Utilizar a autenticação htpasswd do Apache é uma forma simples de adicionar controlo de acesso básico aos seus diretórios web, exigindo que os utilizadores forneçam um nome de utilizador e uma palavra-passe antes de acederem a determinadas partes do seu sítio web. Este tipo de autenticação é frequentemente usado para restringir o acesso a áreas sensíveis, como painéis de administração ou sites de desenvolvimento, e pode ser configurado facilmente num servidor Ubuntu com Apache.
Pré-requisitos
- Um servidor executando o Ubuntu com o Apache2 instalado.
- Acesso root ou sudo ao servidor.
- Uma compreensão básica do uso da linha de comando.
Passo 1: Instalar o Apache (se ainda não estiver instalado)
Se o Apache não estiver instalado no seu servidor Ubuntu, pode instalá-lo com o seguinte comando:
sudo apt update
sudo apt install apache2
Passo 2: Ativar o utilitário htpasswd
O utilitário htpasswd é fornecido pelo pacote apache2-utils, que é tipicamente instalado com o Apache. Se não estiver instalado, pode instalá-lo executando:
sudo apt install apache2-utils
Este comando instala as ferramentas necessárias para gerir ficheiros de palavras-passe para autenticação htpasswd.
Passo 3: Criar o ficheiro .htpasswd
O ficheiro .htpasswd é utilizado para armazenar os nomes de utilizador e as palavras-passe encriptadas para autenticação.
- Criar um novo ficheiro .htpasswd: Para criar um novo ficheiro .htpasswd e adicionar um utilizador, execute o seguinte comando:
sudo htpasswd -c /etc/apache2/.htpasswd seu_nome_de_usuário
Substitua seu_nome_de_usuário pelo nome de usuário que deseja criar.
- A opção -c cria um novo ficheiro .htpasswd. Se o arquivo já existir e você usar -c, ele será sobrescrito, então use-o apenas quando criar o arquivo pela primeira vez.
- Introduza e confirme a palavra-passe:Depois de executar o comando, ser-lhe-á pedido que introduza e confirme uma palavra-passe para o utilizador.O ficheiro /etc/apache2/.htpasswd será criado com a palavra-passe encriptada para o seu nome de utilizador.
- Adicionar utilizadores adicionais (opcional):Para adicionar mais utilizadores sem substituir o ficheiro .htpasswd existente, execute:
sudo htpasswd /etc/apache2/.htpasswd outro_nome_de_usuário
Substitua another_username pelo novo nome de utilizador. Este comando anexa o novo utilizador ao ficheiro .htpasswd existente.
Etapa 4: Configurar o Apache para proteção por senha
É necessário especificar o diretório ou local que deseja proteger com a senha. Isso é feito usando um arquivo .htaccess ou editando diretamente o arquivo de configuração do Apache.
Opção 1: Usando o arquivo .htaccess
- Ativar ficheiros .htaccess: Se pretender utilizar ficheiros .htaccess para configurar a proteção por palavra-passe, certifique-se de que a diretiva AllowOverride está definida como All para o diretório que pretende 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
Encontre a secção para a sua raiz web (e.g., /var/www/html) e defina AllowOverride para All:
<Directory /var/www/html>
AllowOverride All
</Directory>
- Reiniciar o Apache:Após editar a configuração, reinicie o Apache para aplicar as alterações:
sudo systemctl restart apache2
- Criar um ficheiro .htaccess:Dentro do diretório que pretende proteger (por exemplo, /var/www/html), crie ou edite um ficheiro .htaccess:
sudo nano /var/www/html/.htaccess
- Adicione as seguintes diretivas:Adicione as seguintes linhas ao ficheiro .htaccess:AuthType Basic
AuthName “Restricted Content”
AuthUserFile /etc/apache2/.htpasswd
Require 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 ficheiro .htpasswd.
- Require valid-user: Restringe o acesso aos utilizadores listados no ficheiro .htpasswd.
- Salvar e fechar o arquivo.
Opção 2: Usando o arquivo de configuração do Apache diretamente
Se preferir gerir a autenticação diretamente nos ficheiros de configuração do Apache em vez de utilizar o .htaccess, siga estes passos:
- Editar a configuração do host virtual:Abra o arquivo de configuração do Apache para o site que 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 pretende proteger, adicione o seguinte:
<Directory "/var/www/html">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory> - Salve e feche o arquivo de configuração.
- Reiniciar o Apache:Depois de fazer as alterações, reinicie o Apache:
sudo systemctl restart apache2
Passo 5: Testar a autenticação
Agora, navegue até a URL do diretório protegido usando seu navegador da Web (por exemplo, http://your_server_ip_or_domain). Deverá ver uma mensagem de início de sessão a pedir um nome de utilizador e uma palavra-passe.
- Introduza o nome de utilizador e a palavra-passe que criou com o comando htpasswd.
- Se as credenciais estiverem corretas, obterá acesso ao diretório; caso contrário, ser-lhe-á negado o acesso.
Etapa 6: Protegendo o arquivo .htpasswd
Por motivos de segurança, certifique-se de que o ficheiro .htpasswd está armazenado fora da raiz da Web (por exemplo, /etc/apache2/.htpasswd) para que não possa ser acedido diretamente através de um browser da Web.
Certifique-se de que o ficheiro .htpasswd tem as permissões corretas:
sudo chmod 640 /etc/apache2/.htpasswd
sudo chown www-data:www-data /etc/apache2/.htpasswd
Isto assegura que apenas o utilizador do Apache (www-data) e o root têm acesso para ler o ficheiro .htpasswd.
Conclusão
Configurar a autenticação htpasswd no Apache é uma forma simples de adicionar controlo de acesso básico a diretórios específicos no seu site. É adequada para proteção de baixo nível, especialmente em ambientes de desenvolvimento ou internos. No entanto, para áreas altamente sensíveis, 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.