Usando HTTP autenticado no Apache

Este tutorial requer que já se tenha em mãos um webserver Apache configurado e funcionando. Você já teve momentos em que desejou que algum usuário não autorizado deixasse de fuçar determinada pasta em seu servidor web? Eis aqui a solução para seus problemas!

[ Hits: 38.327 ]

Por: Rafael Henrique da Silva Correia em 30/06/2009 | Blog: http://abraseucodigo.com.br


Um pouco de teoria do protocolo HTTP



Vamos imaginar um cenário real onde tenho um diretório chamado admin dentro do meu Web Space (local do meu servidor web onde ficam os arquivos acessíveis ao público) do Apache já instalado, no Debian Lenny Linux o diretório do Web Space do Apache fica em:

/var/www/

No caso do nosso cenário do exemplo, teria uma pasta admin dentro deste diretório, ficando assim:

/var/www/admin

Imaginem que esta pasta armazena coisas muito importantes e você não quer que nenhum abelhudo vá lá xeretar sem autorização, aí aplicamos autenticação neste diretório. Pra quem não sabe, autenticação nada mais é do que um serviço que pedirá usuário mais senha para liberar seu conteúdo, ou seja, logar! Portando somente um ou alguns usuários estarão liberados para ler os arquivos deste diretório (admin no caso do exemplo).

No HTTP a autenticação funciona da seguinte forma (vamos exemplificar isso usando o programa wireshark para sniffar as mensagens trocadas entre um servidor e um cliente):

O cliente faz uma requisição de determinada página via mensagens, a mensagem de requisição inicial do nosso exemplo será:

GET /admin HTTP/1.1
Host: 172.16.213.128

Esta mensagem do cliente significa que estou requisitando os objetos do diretório /admin do servidor web de ip 172.16.231.128, quando o diretório exige autenticação, o servidor responderá da seguinte forma:

HTTP/1.1 401 Authorization Required
Date: Wed, 03 Jun 2009 11:54:31 GMT
Server: Apache
WWW-Authenticate: Basic realm="Digite seu usuário e senha"

Esta mensagem informa ao cliente que ele precisa de autenticação, isto é, informado na linha de cabeçalho WWW-Authenticate e o Basic Realm é apenas um comentário que aparecerá ao usuário pedindo a senha.

Daí novamente o cliente fará uma requisição para o servidor, mas desta vez acrescentará a senha em formato criptografado (*Base64) dentro de uma linha de cabeçalho chamada Authorization como mostrado abaixo:

GET /admin HTTP/1.1
Host: 172.16.213.128
Authorization: Basic cm9vdDoxMjM0

Se o usuário casar com a senha, o servidor apresentará o conteúdo do diretório na tela do browser do cliente, caso não, a resposta do servidor será novamente uma requisição de senha (enquanto o usuário não clicar em cancelar e digitar a senha errada o servidor pedirá uma nova senha, quando ele clicar em cancelar a resposta do servidor será HTTP UNAUTHORIZED).

    Próxima página

Páginas do artigo
   1. Um pouco de teoria do protocolo HTTP
   2. O arquivo .htaccess
   3. Mão na massa com .htaccess
   4. Mão na massa com arquivo de configuração do Apache
   5. Aspectos e cuidados com a segurança
Outros artigos deste autor

Configurando cliente na rede wireless com criptografia WPA - Debian

Problema resolvido: VMware Server 1.0.7 rodando no Debian Lenny Linux

Compilar kernel em distros baseadas em Debian

Leitura recomendada

Como fazer: chroot SSH (SSH mais seguro)

Autenticação de servidores CentOS/Red Hat 6 em Windows 2008

PacketFence em Debian 6

Desenvolvimento Web - Simples dicas de segurança

TOR: A Internet sem rastreabilidade

  
Comentários
[1] Comentário enviado por paulorvojr em 01/07/2009 - 15:16h

Muito bem explicado, parabéns.
Ou seja você refez cada passo enquanto escrevia o artigo. É assim que gostamos de ver artigos com pé e cabeça, e não aqueles que parecem papo de bar.

Abraços

[2] Comentário enviado por rafaelhenrique em 02/07/2009 - 18:48h

Muito obrigado pelo elogio paulorvojr, prentendo continuar escrevendo artigos que agradem os leitores!!

Abraço

[3] Comentário enviado por qxada07 em 29/03/2011 - 19:27h

Parabéns pelo artigo...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts