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.083 ]

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


Arquivos e considerações finais



Arquivo compilado e "squid.conf" para download.

Vou colocar para download o arquivo executável "fb" e o "squid.conf". Caso você não consiga compilar pelo Lazarus, utilize estes arquivos:
Observações:
  • Não se esqueça de dar permissão de execução para o arquivo fb e copiar para a pasta /usr/lib/squid;
  • O arquivo "squid.conf" deve ser copiado para a pasta /etc/squid/.

Considerações finais

Neste artigo eu ensinei a instalar todas as ferramentas e criar um sistema de login do Squid baseado no banco de dados Firebird.

O banco de dados Firebird é muito utilizado em sistemas comerciais escritos em Delphi. Caso o seu sistema utilize o Firebird (ou InterBase), você pode integrar o controle de Internet no mesmo banco de dados.

O proposito do artigo foi mostrar que é possível fazer esta integração, mas algumas coisas não foram criadas da forma ideal, pois poderia ser muito complicado explicar o funcionamento.

Entre estas coisas posso, destacar:
  • O arquivo "squid.conf" foi configurado apenas para chegar o usuário e dar as permissões. Não foi criado sequer um sistema de cache (que é o ponto forte do Squid). Na verdade, você pode utilizar o código do "squid.conf" como ponto de partida e fazer as alterações que você julgar necessárias.
  • O banco de dados foi criado apenas para mostrar que é possível utilizar um banco de dados, mas sua estrutura chega a ser ridícula. Se for utilizar em produção crie alguma coisa de verdade.
  • No "squid.conf" utilizamos o módulo "fb" duas vezes, uma para autenticar e outra para criar uma ACL externa. Você pode, se quiser, utilizar apenas uma, nada obriga que sejam utilizados os dois comandos.
  • Conforme informado, o artigo foi escrito baseado no Debian 6. A instalação foi feita do zero apenas para escrever este artigo. Se você utilizar uma distribuição diferente provavelmente você deverá adequar seu código.
  • Uma das coisas que a gente costuma esquecer na hora de utilizar o Firebird é de criar o link simbólico da biblioteca cliente do Firebird. Não se esqueça isso!
  • O programa foi escrito originalmente em Delphi para ser executado em um servidor Windows 2003 Server. O código aqui apresentado pode ser compilado sem qualquer modificação para Windows, mas na hora de configurar o "squid.conf".

    Você deve se lembrar que as barras invertidas são caracteres de escape. Para colocar o caminho do banco, de dados e os logs você deve utilizar a barra invertida duas vezes. Ex.: c:\\dados\\dados.fdb.

  • Apesar de ter sido muito mais fácil escrever este código para o Delphi 7 no Windows, observei que o Lazarus está muito estável. Já podemos olhar com mais atenção para esta excelente ferramenta de desenvolvimento.

Bom amigos, acho que isso é tudo. O artigo ficou um pouco extenso, talvez até cansativo, mas tentei ser o mais simples e objetivo possível, sem esquecer que usuários básicos podem querer testar também.

Este artigo foi escrito para o Viva o Linux.

Você pode copiar à vontade, mas não se esqueça de citar o autor.

Página anterior    

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

Regras de ouro ao instalar o Linux em empresas

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

Leitura recomendada

Implementação de um servidor Linux Squid + Iptables + DHCP

Servidor Squid - Autenticação e níveis de privilégio

Instalação do Squid com autenticação NTLM e Kerberos

Squid com autenticação e ACLs apartir do grupos do Active Diretory

SQUID autenticado - Bloqueando o acesso dos usuários por grupos

  
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