Squid - Autenticação e controle de acesso a base de dados Firebird

Neste artigo apresento a criação de módulo de autenticação e controle de acesso para o Squid, acessando uma base de dados Firebird. Esta necessidade surgiu na empresa em que trabalho, e como não encontrei nada existente na Internet, a solução foi criar um pequeno módulo utilizando o Lazarus.

[ Hits: 27.644 ]

Por: Renato Félix de Almeida em 28/11/2012


Alterando o squid.conf



Agora é hora de configurarmos o squid.conf para que o Squid faça login e validação de páginas no banco de dados.

Abra novamente um terminal e digite:

# cp /etc/squid/squid.conf /etc/squid/squid.conf.old

Isso irá fazer um backup do "squid.conf".

Vamos editar o "squid.conf" para definir a nossa configuração. Digite:

# gedit /etc/squid/squid.conf

Apague todas as linhas e cole o código abaixo.

http_port 3128

acl all src all

auth_param basic program /usr/lib/squid/fb "localhost;/dados/dados.fdb;sysdba;masterkey;select 1 from usuario where usuario=:usuario and senha=:senha;2;/tmp/fb_auth.log"
auth_param basic children 1
auth_param basic realm "Autenticacao requerida"
auth_param basic credentialsttl 2 minutes
auth_param basic casesensitive on
acl login proxy_auth REQUIRED

external_acl_type acesso children=1 ttl=120 %LOGIN %DST /usr/lib/squid/fb "localhost;/dados/dados.fdb;sysdba;masterkey;select 1 from pagina where usuarios like '%' || :usuario || '%' and :pagina similar to pesquisa;2;/tmp/fb_acl.log"

acl acessar external acesso
http_access allow acessar

http_access deny all

Salve o arquivo e saia do editor.

Agora vamos verificar se ocorreu algum problema na nossa configuração. No terminal digite:

# service squid stop

Isso vai parar o serviço do Squid. Agora digite:

# squid -z

Se aparacer a mensagem:
Creating Swap Directories

E não aparecer nenhuma mensagem de erro, parabéns! Seu Squid já está configurado.

Agora vamos iniciar o serviço do Squid. Digite:

# service squid start

Pronto! O Squid já está configurado e rodando.

Testando

Vamos acessar a Internet via proxy para testar. Lembrando que temos dois usuários, com a seguinte situação:
  • Usuário: admin
  • Senha: admin
  • Páginas permitidas: Todas

  • Usuário: user
  • Senha: user
  • Páginas permitidas: Apenas http://www.vivaolinux.com.br

Configure seu navegador para acessar a Internet através do servidor proxy. Não vou entrar em detalhes sobre como fazer isso, pois é muito básico e existem vários navegadores a serem configurados.

Depois de configurar o proxy, tente acessar a página: http://www.vivaolinux.com.br

Quando for solicitado login, utilize usuário = user, senha = user.

A página será aberta perfeitamente.

Agora tente navegar por outros site. Você receberá uma mensagem de acesso negado do Squid.

Feche o navegador e abra novamente. Tente navegar em alguma página.

Quando for solicitado login, utilize usuário = admin, senha = admin.

Observe que todas as páginas estarão liberadas!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Pré-requisitos
   3. Código fonte e compilação
   4. Alterando o squid.conf
   5. Arquivos e considerações finais
Outros artigos deste autor

Se o Linux é tão melhor que o Windows e é de graça, por que a maioria dos usuários ainda usa Windows?

Regras de ouro ao instalar o Linux em empresas

Leitura recomendada

Squid atuando como proxy reverso

Compilando o Squid e criando o pacote para Slackware

Projeto Squid

Thunder Cache - Cache inteligente

Fazendo hierarquia proxy/Squid

  
Comentários
[1] Comentário enviado por wiskley em 05/04/2013 - 20:50h

Ola tudo Bem?
muito bom o seu tutorial porem encontrei problemas ao compilar o programa para o windows 2003, qualquer nome de usuario que eu digito da ERR. Fiz todas as modificações necessarias para colocar ele no windows 2003. pode dar uma ajuda?

[2] Comentário enviado por cruzeirense em 05/04/2013 - 22:40h

Prezado Wiskley,


Você fez o teste na linha de comando para saber se o módulo estava funcionando?

Tente utilizar essa sql:
select 1 from rdb$database where :a=1 or :b=1 or 1=1

Ela irá aceitar qualquer combinação de usuário e senha.
Se começar a retornar ok é porque o problema é no seu banco de dados ou consulta sql.
Neste caso verifique se os usuários estão cadastrados corretamente.

Se mesmo assim continuar dano err, poste o seu squid.conf para eu dar uma olhada.

()s

Renato

[3] Comentário enviado por wiskley em 05/04/2013 - 22:50h

Quando eu compilo o programa no lazarus (para windows) ele gera um arquivo de 947Kb porem tb da um erro "project1.lpr(98,23) Warning: Variable "parametros" does not seem to be initialized" , ai quando digito para teste admin admin o programinha da um erro de sql mas so acontece quando coloco o admin o user da ERR , usei o mesmo BD no Debian e funcionou normalmente so que o computador usa o windows 2003, quanto ao meu squid.conf esta igualzinho ao seu. Obrigado pela ajuda mesmo:

edit: Abaixo o link das imagens
http://profandre.org/imagens/erro%201.png
http://profandre.org/imagens/erro%202.png

[4] Comentário enviado por cruzeirense em 06/04/2013 - 06:41h

Prezado Wiskley,

Nas suas imagens reparei um erro nos caminhos dos arquivos.

Observe que os caminhos de arquivos no windows utilizam a barra invertida "\" e não a barra comum "/" como no linux.
faça o teste com o seguinte comando:
fb.exe "127.0.0.1;c:\dksoft\dados.fdb;sysdba;masterkey;select 1 from usuario where usuario=:usuario and senha=:senha;2;c:\tmp\fb_auth.log"

Se o teste der ok, você vai ter que fazer uma modificação para incluir a linha no squid.conf, visto que para o squid a barra invertida "\" é caracter de escape. Então você vai ter que colocar duas barras invertidas "\\". Fica dessa forma:

fb.exe "127.0.0.1;c:\\dksoft\\dados.fdb;sysdba;masterkey;select 1 from usuario where usuario=:usuario and senha=:senha;2;c:\\tmp\\fb_auth.log"

Tenta aí e posta o resultado...

()s

Renato

[5] Comentário enviado por cruzeirense em 06/04/2013 - 06:52h


[3] Comentário enviado por wiskley em 05/04/2013 - 22:50h:

Quando eu compilo o programa no lazarus (para windows) ele gera um arquivo de 947Kb porem tb da um erro "project1.lpr(98,23) Warning: Variable "parametros" does not seem to be initialized" , ai quando digito para teste admin admin o programinha da um erro de sql mas so acontece quando coloco o admin o user da ERR , usei o mesmo BD no Debian e funcionou normalmente so que o computador usa o windows 2003, quanto ao meu squid.conf esta igualzinho ao seu. Obrigado pela ajuda mesmo:

edit: Abaixo o link das imagens
http://profandre.org/imagens/erro%201.png
http://profandre.org/imagens/erro%202.png


Quanto a isso aí pode ignorar, a variável é inicializada em tempo de execução.

[6] Comentário enviado por wiskley em 06/04/2013 - 16:21h

Prezado Renato

Ja tinha pensado nisto tambem e ja havia trocado as barras porem continua o mesmo erro das imagens muito estranho isso. baixei outro Lazarus e tambem deu o mesmo problema, continuo tentando ate ver se consigo resolver o problema.
O log Auth.log esta retornando o seguinte:
--
127.0.0.1;c:\\dksoft\\dados.fdb;sysdba;masterkey;select 1 from usuario where usuario=:usuario and senha=:senha;2;c:\\tmp\\fb_auth.log
user user
Retornou ERR
--
se eu dou um admin admin ela da o erro de sql da imagem, achei que poderia ser o bd porem o bd esta funcionando normal testei com o ibexpert



[4] Comentário enviado por cruzeirense em 06/04/2013 - 06:41h:

Prezado Wiskley,

Nas suas imagens reparei um erro nos caminhos dos arquivos.

Observe que os caminhos de arquivos no windows utilizam a barra invertida "\" e não a barra comum "/" como no linux.
faça o teste com o seguinte comando:
fb.exe "127.0.0.1;c:\dksoft\dados.fdb;sysdba;masterkey;select 1 from usuario where usuario=:usuario and senha=:senha;2;c:\tmp\fb_auth.log"

Se o teste der ok, você vai ter que fazer uma modificação para incluir a linha no squid.conf, visto que para o squid a barra invertida "\" é caracter de escape. Então você vai ter que colocar duas barras invertidas "\\". Fica dessa forma:

fb.exe "127.0.0.1;c:\\dksoft\\dados.fdb;sysdba;masterkey;select 1 from usuario where usuario=:usuario and senha=:senha;2;c:\\tmp\\fb_auth.log"

Tenta aí e posta o resultado...

()s

Renato



[7] Comentário enviado por cruzeirense em 08/04/2013 - 16:19h

Prezado wiskley,

Você chegou a analisar o arquivo e log?

[8] Comentário enviado por wiskley em 08/04/2013 - 17:56h

127.0.0.1;c:\\dksoft\\dados.fdb;sysdba;masterkey;select 1 from usuario where usuario=:usuario and senha=:senha;2;c:\\tmp\\fb_auth.log
user user
Retornou ERR

so tem isso no log pelo que vi esta normal a linha de comando

[9] Comentário enviado por wiskley em 09/04/2013 - 23:20h

Prezado Renato pensei que o problema seria o Windows 2003 porem andei testando ele no windows xp, Windows 7 e tambem não funcionou a unica coisa que gera no log e a propria linha de execução do squid. achei estranho isso. comentei com minha professora ela disse que nao é normal que logicamente teria que funcionar. Estranho rsrsrsr

[10] Comentário enviado por cbsistem em 08/02/2015 - 12:12h

Renato ficou Fantastico. Compilei em Delphi XE 6 e rodei em um Windows 2008 Server, versao Squid 2.71.

Meus MuitosBens pra vc.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts