O apache permite adicionar restrições de segurança a diretórios compartilhados fazendo com que seja solicitado um usuário e senha para ter-se acesso a áreas restritas do site. Para tanto, é necessário adicionar ou alterar as seguintes instruções no contexto Directory do diretório que se deseja restringir o acesso:
AllowOverride AuthConfig
AuthName “Acesso Diretório Restrito”
AuthType Basic
AuthUserFile /var/www/.arquivo_de senhas
require valid-user
A cláusula AllowOverride AuthConfig indica que o acesso ao diretório especificado na cláusula Directory somente será possível mediante autenticação. A linha 3 indica o tipo de autenticação utilizada no caso o padrão do servidor, no caso Basic . A linha 4 informa a localização do arquivo onde estão armazenados os usuários e as senhas, a cláusula require valid-user indicará que para ter acesso à determinada área do site, será necessária a autenticação do usuário com base no arquivo de senhas.
Retomando o exemplo anterior, vamos criar uma área de acesso restrito no primeiro site, adicionando um diretório a sua raiz:
#mkdir /var/www/site1/adm
Vamos também criar um arquivo para testar o acesso a esse diretório:
#cd /var/www/site1/adm
#gedit index.html
E inserir o seguinte conteúdo:
<html>
<body>
<h1>Site 1</h1>
<p>Area restrita!</p>
</body>
</html>
Em seguida, vamos adicionar as seguintes linhas no arquivo de configuração do site (/etc/apache2/sites-avaliable/site1) ao final do último bloco de instruções antes da cláusula </VirtualHost>
<Directory /var/www/site1/adm>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
AuthName “Acesso ao meu Diretório Restrito”
AuthType Basic
AuthUserFile /var/www/site1/adm/.senhas
require valid-user
Order allow,deny
Allow from all
</Directory>
Para concluirmos o processo, é necessário criar o arquivo de senhas e devemos fazê-lo no diretório indicado pela instrução AuthUserFile (linha 6):
#cd /var/www/site1/adm/
Para criar o arquivo, podemos utilizar um aplicativo do próprio pacote do apache conhecido como htpasswd. Por questões de segurança, podemos criá-lo com o status de oculto, inserindo um “.” antes do seu nome:
#htpasswd -c . senhas webmaster
A opção “-c” determina a criação do arquivo oculto “.senhas” e a adição de um usuário no mesmo (no caso “webmaster”). Para adicionarem-se mais usuários ou alterar a senha de um usuário existente, basta utilizar o mesmo comando sem a opção –c. Veja o exemplo:
# htpasswd /var/www/adm/.senhas novo_usuario
Para efetivar as alterações devemos reiniciar o servidor Apache:
#invoke-rc.d apache2 restart
Para testar as alterações podemos acessar a área administrativa do site, que deverá exigir autenticação. Deverá ser exibida uma caixa de diálogo, solicitando usuário e senha como na figura D3.2.1.1
Uma vez informados usuário e senhas válidos, o acesso a esta área do site será liberado. Caso os dados informados não estejam corretos ou o usuário tente cancelar a caixa de diálogo será exibida uma mensagem de erro (D3.2.1.2) e o acesso a esta área do site será negado.