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

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 update
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:

sudo apt install apache2-utils

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.

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

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

  1. 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
  2. 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>
  3. Salve e feche o arquivo de configuração.
  4. 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 chmod 640 /etc/apache2/.htpasswd
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.

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