Pesquisa de site

Como proteger diretórios da Web com senha no Apache usando arquivo .htaccess


Ao gerenciar projetos on-line, muitas vezes você precisa limitar o acesso a esse projeto para protegê-lo do mundo exterior. Pode haver diferentes razões para isso – por exemplo, você deseja evitar que rastreadores de mecanismos de pesquisa acessem seu site enquanto ele ainda está em fase de desenvolvimento.

Neste tutorial, mostrarei como proteger com senha diferentes diretórios de sites no servidor Apache. Há muitas maneiras de fazer isso, mas analisaremos duas delas que são mais usadas.

O primeiro método configura a proteção por senha diretamente no arquivo de configuração do Apache, enquanto o segundo usa o arquivo .htaccess.

Requisitos

Para configurar a proteção por senha para seus diretórios da web, você precisará ter:

  • Um servidor web Apache funcional
  • A diretiva AllowOverride AuthConfig deve estar habilitada no arquivo de configuração do Apache.

Configurar diretório protegido por senha do Apache

1. Neste tutorial, protegeremos o diretório raiz principal da web /var/www/html. Para proteger esse diretório, abra a configuração do seu Apache:

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. Encontre a raiz do diretório do documento Apache para /var/www/html e adicione os seguintes itens conforme sugerido:

Na versão Apache 2.2

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

Na versão Apache 2.4

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. Salve o arquivo e reinicie o Apache usando o seguinte comando:

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. Agora usaremos o comando htpasswd para gerar nome de usuário e senha para nosso diretório protegido. Este comando é usado para gerenciar arquivos de usuário para autenticação básica.

A sintaxe geral do comando é:

htpasswd -c filename username

A opção -c especifica o arquivo que manterá a senha criptografada e nomedeusuário especifica o usuário para autenticação.

5. Nosso arquivo de senha precisa estar localizado fora do diretório acessível na web do Apache para que esteja bem protegido. Para isso, criaremos um novo diretório:

mkdir /home/tecmint

6. Depois disso geraremos nosso nome de usuário e senha que serão armazenados nesse diretório:

htpasswd -c /home/tecmint/webpass tecmint

Depois de executar este comando você terá que inserir uma senha para nosso novo usuário "tecmint" duas vezes:

Depois disso, precisaremos ter certeza de que o Apache é capaz de ler o arquivo “webpass”. Para isso, você precisará alterar a propriedade desse arquivo com o seguinte comando:

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. Neste ponto nosso novo usuário e senha estão prontos. Agora precisamos dizer ao Apache para solicitar senha ao acessar nosso diretório de destino. Para isso, crie um arquivo chamado .htaccess em /var/www/html:

vi /var/www/html/.htaccess

Adicione o seguinte código nele:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. Agora salve o arquivo e teste sua configuração. Abra seu navegador e digite seu endereço IP ou nome de domínio no navegador da web, por exemplo:

http://ip-address

Você deverá ser solicitado a fornecer nome de usuário e senha:

Digite o nome de usuário e a senha que você definiu para prosseguir para sua página.

Notas Adicionais

Se você estiver usando hospedagem compartilhada, provavelmente não terá acesso ao arquivo de configuração do Apache. No entanto, a maioria das empresas de hospedagem habilita a opção “AllowOverride All” por padrão. Isso significa que você só precisará gerar o nome de usuário e a senha e selecionar o diretório que deseja proteger. Isso facilita significativamente sua tarefa.

Conclusão

Espero que você tenha achado este tutorial útil e o ajude a atingir seu objetivo. Se você tiver alguma dúvida ou comentário, não hesite em publicá-los na seção abaixo.