Como configurar a autenticação Apache htpasswd no Ubuntu ⋆ ALexHost SRL

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills
09.12.2024

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.

  1. 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.
  2. 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.
  3. 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

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

  1. Reiniciar o Apache:Após editar a configuração, reinicie o Apache para aplicar as alterações:
    sudo systemctl restart apache2
  2. 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
  3. 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.
  4. 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:

  1. 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
  2. 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>
  3. Salve e feche o arquivo de configuração.
  4. 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.

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills