Exibindo resultados 1 até 6 de 6

Tópico: Squid - acl extend + LPDAP

  1. #1
    Desde
    Jun 2008
    Posts
    9
    Peso da Avaliação
    0

    Squid - acl extend + LPDAP

    Pessoal,

    No cliente aonde fico alocado estamos implementando uma política de senha no Proxy, já que efetuamos testes e quebramos diversas senhas fracas no mesmo.

    O Proxy (Squid) é integrado ao Ldap e existe uma aplicação em php junto com o Ldap q efetua a troca de senha através de uma página. Até aí tudo está em ordem! rs...

    O objetivo é forçar a troca de senha dos usuários e após ser efetuada a troca de senha a Internet será liberada para o usuário, como apoio a essa solução estamos utilizando uma variável no Ldap que cada usuário possui, chamada trocasenha que é igual a 0. Todos os usuário partirão com a variável trocasenha=0, após ser trocada a senha pela aplicação em PHP então a variável trocasenha ficará igual a 1 e então a Internet será liberada.

    Chega de papo e vamos às linhas do squid.conf:

    Squid: Version 2.7.STABLE3
    Código:
    auth_param basic program /usr/lib/squid/ldap_auth -b dc=domain -f "(uid=%s)" -u uid -D "cn=admin,dc=domain" -w "senha"  -H ldap://192.167.42.98:389 -P -v 3
     
    auth_param basic children 5
    auth_param basic realm Você está sendo monitorado.
    auth_param basic credentialsttl 8 hours
    auth_param basic casesensitive on
    
    acl ldapauth proxy_auth REQUIRED
    
    external_acl_type checkvalido %LOGIN /usr/lib/squid/ldap_auth -b dc=domain -f "(&(uid=%s)(trocasenha=1))" -u uid -D "cn=admin,dc=domain" -w "senha" -H ldap://192.167.42.98:389 -P -v 3
    
    acl liberado external checkvalido
    deny_info http://trocasenha.domain !liberado
    
    http_access allow liberado
    http_access allow ldapauth
    Como expliquei, preciso do seguinte funcionamento:

    Nas linhas:
    Código:
    external_acl_type checkvalido %LOGIN /usr/lib/squid/ldap_auth -b dc=domain -f "(&(uid=%s)(trocasenha=1))" -u uid -D "cn=admin,dc=domain" -w "senha" -H ldap://192.167.42.98:389 -P -v 3
    
    acl liberado external checkvalido
    deny_info http://trocasenha.domain !liberado
    
    http_access allow liberado
    http_access allow ldapauth
    * A primeira eu verifico consultando a base do Ldap se o nome do usuário (uid=%s) e (&) se a variável trocasenha do usuário autenticado é igual a "1", (trocasenha=1), sendo verdade isso vamos para a segunda linha
    * Chamo a acl liberado em caso de confirmação válida da acl externa checkvalido
    * Na terceira linha, o intuito é redirecionar todos aquele que não estão na condição de liberado (!liberado) para a página de troca de senha (http://trocasenha.domain), ou seja todos aqueles que a váriável trocasenha for diferente de 1 entram nessa condição.
    * Nas últimas 2 linhas eu libero o acesso a internet para quem estiver liberado (trocasenha=1) e autenticado.

    O problema é que "external_acl_type" não está funcionando, a internet está liberando para todos, se eu excluir as últimas linhas aí funciona o redirect de página.

    Observação que eu testei o comando " /usr/lib/squid/ldap_auth" pelo shell e funciona perfeitamente as consultas na base LDAP bem como a confirmação da variável trocasenha igual ou diferente de 0 dos usuários.
    Testei também com ldapsearch e funciona perfeitamente a consulta, visulizando os valores da variável trocasenha de cada usuário, acredito q o problema está na arrumação das acls ou na linha "acl liberado external checkvalido".

    Será que algum profissional cascudo de squid poderia me ajudar???

    Abraços!

  2. #2

    Re: Squid - acl extend + LPDAP

    não sou cascudo de squid, mas, external_acl_type é pra rodar um programa pra verificar se é válidio ou não; este programa externo deve retornar OK ou ERR, por acaso ele retorna OK ou ERR pro squid?
    outra coisa, pq vc não coloca um http_access deny e vê o q acontece?
    ---
    MATARAM KENNEDY, CERTO? VEJAM SEU
    DISCURSO ACERCA DE SOCIEDADES SECRETAS
    - - http://youtu.be/RfeFSzB8mqw --
    ---
    MELHOR DISCURSO QUE JÁ VI, CHARLIE CHAPLIN
    http://www.youtube.com/watch?v=sGpCds0e-kg

    (HQ) http://www.redhat.com/v/magazine/ogg/truthhappens.ogg

  3. #3
    Desde
    Jun 2008
    Posts
    9
    Peso da Avaliação
    0

    Re: Squid - acl extend + LPDAP

    Fala Guzpido Krush!

    Vamos lá,

    Então, eu rodando o /usr/lib/squid/ldap_auth pelo shell ele retorna como OK, no squid como vejo a resposta?

    Eu colocando http_access deny no liberado nada muda, no ldapauth o squid não autentica ninguém.

    A lógica da external_acl_type e da acl liberado external checkvalido está correta?
    Acredito que o problema esteja na ordem das Acls.

  4. #4
    Desde
    Oct 2001
    Posts
    4.484
    Peso da Avaliação
    26

    Re: Squid - acl extend + LPDAP

    Citar Originalmente enviado por Rodrigo Kroll Ver Post
    Fala Guzpido Krush!

    Vamos lá,

    Então, eu rodando o /usr/lib/squid/ldap_auth pelo shell ele retorna como OK, no squid como vejo a resposta?

    Eu colocando http_access deny no liberado nada muda, no ldapauth o squid não autentica ninguém.

    A lógica da external_acl_type e da acl liberado external checkvalido está correta?
    Acredito que o problema esteja na ordem das Acls.
    squid.conf:
    debug_options ALL,1 82,9 84,9

    Isso vai te dar os logs das external acls no cache.log.

    []s, MM

  5. #5
    Desde
    Jun 2008
    Posts
    9
    Peso da Avaliação
    0

    Re: Squid - acl extend + LPDAP - [ RESOLVIDO ]

    Fala Galera,

    Obrigado Marcos Machado pela dica! Me ajudou bastante o lance do Debug do Squid para visualizar uma solução

    Após testar N vezes e ler a documentação e não achar nada a respeito sobre esse problema, decidi através de um script ( /usr/lib/squid/checaproxy.sh) que ache externamente a variável na base Ldap e retorne pro Squid, o mesmo toma as devidas decisões através das Acls.

    Segue o Script:

    Código:
    #!/bin/bash
    
    set -x
    while read linha; do
    
    checa_proxy=$(ldapsearch -b "dc=domain" uid="$linha" "trocasenha" -D "cn=admin,dc=domain" -w "senha" -H ldap://192.167.42.98:389 -P 3 -x | grep trocasenha: | sed -e 's/ //' | cut -d ":" -f2)
    
    if [ "1" == "$checa_proxy" ]; then
            echo OK
    else
            echo ERR
    fi
    
    done
    No Squid.conf ficou assim:

    Código:
    acl ldapauth proxy_auth REQUIRED
    external_acl_type checkvalido %LOGIN /usr/lib/squid/checaproxy.sh
    acl trocasenha external checkvalido
    deny_info http://autentica.domain trocasenha
    http_access allow !trocasenha
    Valeu pessoal até a próxima! Obrigado!

  6. #6
    Desde
    Oct 2009
    Posts
    135
    Peso da Avaliação
    0

    Re: Squid - acl extend + LPDAP

    It makes much more sense ^^
    nao entendo de linux taopouco de squid nem sei o que é ao exato hehe ,porem entendo um pouco de programação e pelo final ,explica o pq deu certo :D
    abraços,
    RR

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tópicos semelhantes

  1. Bloqueando MSN/WeMsn com iptables,ipchains e Squid
    By _Dr4k0_ in forum Firewall & IDS
    Respostas: 5
    Último post: 26/08/2006, 01:26

Tags for this Thread

Regras de envio

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •