Às vezes, queremos limitar o acesso a um diretório da web específico para protegê-lo contra o mundo externo. Para tornar uma pasta protegida por senha no apache, precisamos de uma ferramenta para gerar nome de usuário e senhas(htpasswd) separada da autenticação do sistem, além de algumas outros parâmetros dentro da configuração do site.
Ajustando arquivo de configuração do site
Edite o arquivo do seu site, caso seja o default use como o do exemplo abaixo:
# vim /etc/apache2/sites-enabled/000-default.conf
Como no arquivo abaixo, dentro do campo VirtualHost adicione as diretivas em negrito:
<VirtualHost *:80> ServerName site.com.br DocumentRoot /var/www/html/site/ <Directory /var/www/html/site> AllowOverride AuthConfig </Directory> </VirtualHost>
Criando arquivo com user/passwd
Defina um local para salvar o arquivo de credenciais, no meu caso será /etc/apache2/pass.
Execute o comando abaixo para criar o arquivo e o usuário gabriel:
# htpasswd -B -c /etc/apache2/pass gabriel
Será solicitada a senha e em seguida a confirmação da mesma.
Opções do comando:
- -B: define encriptação para bcrypt, pode ser omitido que por padrão será usado MD5;
- -c: especificamos o arquivo para onde será salvo, caso precise adicionar mais usuários no arquivo basta não passar esse parâmetro quando for adicionar novos usuários como por exemplo “htpasswd /etc/apache2/pass roberto“;
Criado file .htpasswd
Criei o arquivo .htpasswd dentro da pasta onde deseja fazer a restrição de acesso, editando e inserindo o conteúdo seguinte, ajustando paramentros conforme seu ambiente:
# vim /var/www/html/site/.htpasswd
Conteúdo do arquivo:
AuthName "Mensagem" AuthType Basic AuthUserFile /etc/apache2/pass Require valid-user
Reinicie o apache:
# systemctl restart apache2
Fonte
https://borosan.gitbook.io/lpic2-exam-guide/2081-implementing-a-web-server