Unidade D - Segurança no Servidor Apache

D.5. Autenticação

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.