é possivel fazer a autenticação do openldap direto no ldap, sem ser pelo pam?[/b]
e outra coisa, alguem tem um arquivo de exemplo de uma base de usuarios squid em .ldif ou sabe onde posso encontrar? vlw
é possivel fazer a autenticação do openldap direto no ldap, sem ser pelo pam?[/b]
e outra coisa, alguem tem um arquivo de exemplo de uma base de usuarios squid em .ldif ou sabe onde posso encontrar? vlw
ae finalmente consegui, pode apagar o topico vlw
em vez de pedir pra apagar o topico pq não diz como fez pra quem tiver o mesmo problema ter como resolver??
falows
em qual distro vc montou o openldap?
Pois faz meses que to tentando montar no Fedora e ainda nao consegui, e agora vou tentar no CentOS que eh a mesma coisa que o RetHat enterprise mas creio que vai ser o mesmo rolo.
opa tb estou na mesma do thiagoacsp...
estou faz um tempão tentando fazer rodá ldap+samba+squid mas naum funfa...
já peguei um tutorial de um cara da Metrosul no www.ldap.org.br mas
naum deu certo...
manda ae como vc fez jotacekm
eu tava ate pensando em fazer um tutorialzinho, pq nao achei nenhum q me ajudasse na net, os q tinha so falam coisas q tem na propria pagina do openldap e dizia oq alterar no squid.conf, mas isso eh facil
eu vo te q sair agora, mais tarde eu posto aqui
(eu uso o fedora 4)
ah blz...
eu tb to usando fedora 4...
mas o que eu vou fazer eh colocar ldap e samba num micro e squid/firewall em outro...
naum deve mudar muito as configurações né?
nao, o q vai mudar eh no squid.conf na hora de vc chamar o program squid_ldap_auth vc vai ter q passar o ip da maquina do ldap com -h ipPostado originalmente por serrato
bom vo falar como eu fiz então
Eu uso fedora core 4, squid 2.5 e openldap 2.3.11. É bom que vc tenha uma noção de como funciona o ldap, aconselho vc a dar uma lida na introdução do www.openldap.org
Tenho o openldap instalado em /usr/local/openldap, e squid em /usr/local/squid.
EDIT: Não sei porque mas dentro dos códigos os comentários # saíram nos lugares errados, entao cuidado se forem copiar e colar
depois de estar com squid, openldap e suas dependências instalados, vamos configurar o slapd.conf. Vou colar aqui o meu slapd.conf:
Código :include /usr/local/openldap/etc/openldap/schema/core.schema include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema #Esses sao os schemas que serão usados. Nos schemas estão as ojbectClass e #atributos que vamos usar para construir o banco. Ao contrário do que eu pensava, não #é preciso um schema específico pro squid, pois o .ldif para o squid é bem simples pidfile /usr/local/openldap/var/run/slapd.pid argsfile /usr/local/openldap/var/run/slapd.args access to * by self write access to * by anonymous auth access to * by * read ####################################################################### # BDB database definitions ####################################################################### database bdb suffix "dc=squid" rootdn "cn=Manager,dc=squid" rootpw secret directory /usr/local/openldap/var/openldap-data readonly off # Essas são as definições da nossa backend, que vai ser a Berkeley Database. O suffix #é o DN (distinguished name, uma entrada única) onde serão passas as queries que #vao ser passadas ao bdb. rootdn é o "administrador" do banco. index cn,sn,uid,o pres,eq,sub index userPassword pres,eq index objectClass eq # Esses serão os índices a ser mantidos. cn, sn, uid, o, userPassword são os índices #que iremos usar quando formos criar o banco, e # pres, eq, sub são tipos de índice. #Não é obrigatório criar um índice para as entradas, mas isso vai deixar a busca no #banco mais rápida.
Agora é interessante testar o seu slapd.conf pra ver se ele não está com nenhum erro, vá no diretório sbin do openldap e digite ./slaptest
Vamos agora criar o nosso banco. Pra isso, vamos criar um arquivo .ldif (LDAP Data Interchange Format). Esse é o meu ldif, criei em no /sbin dentro do openldap:
Código :# Squid. Esse vai ser o nodo principal da nossa árvore. dn: dc=squid objectClass: dcObject objectClass: organization dc: squid o: squid description: Auth Squid # Manager. Esse é o administrador. Usei o mesmo que vinha no exemplo no openldap.org dn: cn=Manager,dc=squid objectClass: organizationalRole cn: Manager description: Directory Manager # Usuários Squid. Aqui estão os nossos usuários do squid. uid é o campo que o squid vai ler como login, e userPassword como a senha. dn: uid=maria,dc=squid objectClass: person objectClass: inetOrgperson uid: maria sn: maria cn: maria userPassword: senha dn: uid=joao,dc=squid objectClass: person objectClass: inetOrgperson uid: joao sn: joao cn: joao userPassword: senha
cada nodo deve ter uma única entrada, diferente de toda as outras(dn). uid,sn,cn,userPassword, o, description são os atributos que usei. Se o seu dn for: uid=joao,dn=squid o atributo uid deve ser obrigatoriamente joao. Isso vale para todas as entradas que você criar. Se você quiser fazer a autenticação de mais serviços usando o openldap como samba, qmail etc. seria interessante você criar um nodo principal que abrigue todos os serviços. Por exemplo:
Nodo principal:
dn: dc=minhaEmpresa
Serviços:
dn: dc=squid,dc=minhaEmpresa
dn: dc=qmail,dc=minhaEmpresa
dn: dc=samba,dc=minhaEmpresa
Usuarios:
dn: uid=joao,dc=squid,dc=minhaEmpresa
dn: uid=carlos,dc=samba,dc=minhaEmpresa
....
....
Voltando: Depois de criar nosso ldif, vamos alimentar o banco. Isso pode ser feito offline (sem o daemon slapd rodando) ou online (com o daemon rodando). Pra criar o banco offine eu uso o comando: (se o .ldif estiver no mesmo diretorio onde está sendo rodado o comando)
./slapadd -l squid.ldif -f /usr/local/openldap/etc/openldap/slapd.conf
pra criar online:
./ldapadd -x -w secret -f squid.ldif -D "cn=Manager,dc=squid"
o -x é pra usar autenticação simples, e o -w secret é o password que esta no rootpw dentro do slapd.conf
se você quiser ver como está o seu banco, ou fazer um backup dele pra um arquivo .ldif, use o comando ./slapcat -f arquivo_de_saida.ldif
Eu prefiro criar a database offline, pois online de vez em quando dá uns erros chatinhos. Se você estiver tendo problemas na hora de criar, ou na hora de rodar o daemon, use no final do comando -d 1 por exemplo, pra ativar o debug level 1. Existem vários níveis de debug, veja no openldap.org os niveis.
Agora vamos fazer um teste: Inice o daemon com ./slapd -d 1 pra ativar o debug, e veja se está tudo ok. Vamos agora alterar o squid.conf pra fazer a autenticação com ldap.
O programa que vamos usar pra autenticação do squid é o squid_ldap_auth. Ele deveria estar dentro do diretorio libexec do seu squid. Se não estiver, basta ir no arquivo fonte de instalação do squid em /helpers/basic_auth/LDAP e dar um make && make install
Dentro do squid.conf:
Código :auth_param basic children 5 auth_param basic realm Digite nome e senha auth_param basic credentialsttl 1 hour auth_param basic casesensitive off auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -b dc=squid -D dc=squid -h localhost -v 3 -p 389 #Se vc tiver rodando o openldap em uma maquina remota, vc deve botar -h #ip_da_maquina. o -v 3 é para usar o ldap v3, eu tive que usar isso pq tava dando um #erro referente a isso. #Agora vamos criar uma acl dentro do squid.conf que peça a autorização: acl auto proxy_auth REQUIRED #e no http_access botamos: http_access allow auto
pronto! agora é so inicar o squid e o slapd, abrir o browser que vai pedir a autenticação. Se vc quiser adicionar mais usuários, basta criar um ldif apenas com a entrada desse usuário e usar o ./slapadd pra adicionar. O que eu não estou conseguindo fazer agora sao algumas operações que necessitam que o slapd esteja rodando pra funcionar, como deletar entradas e fazer buscas, pq sempre dá um erro de invalid_credentials e eu não estou conseguindo resolver. Se alguém conseguier posta aqui. Flw!
bom nao sei se alguém se interessou por isso aqui, mas voltando agora das ferias, consegui resolver o problema de fazer operaçoes (adicionar, deletar, modificar) entradas no ldap no modo online.
no meu caso ficou assim:
criei um novousuario.ldif apenas com a nova entrada que eu quero adicionar. Pra adicionar um usuario:
./ldapadd -f novousuario.ldif -x -w secret -D "cn=Manager,dc=squid"
pra deletar um usuario basta passar o dn da entrada com o ./ldapdelete , por ex:
./ldapdelete uid=joao,dc=squid -x -w secret -D "cn=Manager,dc=squid"
pra modificar um usuario, a entrada deve obviamente existir, entao criei um ldif com um usuario e modifiquei por exemplo o sn e o cn dele:
./ldapmodify -f usuario.ldif -x -w secret -D "cn=Manager,dc=squid"
eh isso, espero q tenha ajudado alguém.
ae pessoal a solução ai de voces esta funcionando ?
estou pensando em fazer o mesmo aqui com slackware
ate mais,