MAL - Memória Auxiliar do Lutieri

sexta-feira, agosto 28, 2009

Config OpenLDAP with different Berkley lib


export CPPFLAGS="-I/opt/BD4.7/include/"
export LDFLAGS="-L/opt/BD4.7/lib/"
export LD_LIBRARY_PATH="/opt/BD4.7/lib/"
./configure --prefix=/opt/openldap --disable-ipv6 --enable-crypt


If you have a current version of Berkley DB installed on your system make sure you remove the old db libraries files. Usually in /usr/lib/libdb*

Also add /opt/BD4.7/lib to /etc/ld.so.conf and rerun ldconfig

Marcadores:

LDAP Recovery

/usr/sbin/slapd_db_recover -v -h /var/lib/ldap


or

Maybe for old versions?!

db_recover -v -h /var/lib/ldap

Marcadores: ,

quarta-feira, março 18, 2009

LDAP not starting up

I was having problems starting slapd. So, at first I tried to run slapd manually with the a high debug level as follow:

#/usr/local/libexec/slapd -u ldap -g ldap -d 5000 -4 -f /usr/local/etc/openldap/slapd.conf
@(#) $OpenLDAP: slapd 2.4.15 (Mar 16 2009 12:17:43) $
root@adhara.csit.parkland.edu:/usr/ports/net/openldap24-server/work/openldap-2.4.15/servers/slapd
slapd stopped.
connections_destroy: nothing to destroy.
#

I got nothing, seems that everything was right. But I knew wasn't, otherwise it will run.

So, I decided to test the config file:

# /usr/local/libexec/slapd -Tt
/usr/local/etc/openldap/schema/phamm.schema: line 148 objectclass: ObjectClass not found: "inetOrgPerson"
slaptest: bad configuration file!
#

This time I was able to see what was wrong.
The phamm.schema requires inetOrgPerson schema. So I had to include inetOrgPerson schem as well.
BTW inetOrgPerson requires cosine schema, so...

Marcadores:

sexta-feira, agosto 10, 2007

Busca no LDAP

Não sei porque cargas d'água um dia parou de fazer autenticação do apache no AD do windows 2000. Juro que não mudei nada... Tinha 3 servidores configurados pra autenticar via LDAP no AD. Um dia pararam os 3. Sendo ambiente Microsoft até não me surpreendeu tanto... risos.
Conversei com o Adminstrador da rede windows e fui informado de que tudo continuava como no dia anterior quando ainda funcionava.

Sendo assim meu pensamento foi: "ixxx...".

Debugei o Apache e não me dava informações suficientes do porque do problema. Antes de continuar exponho aqui o arquivo .htaccess que usei e apresentou problemas:

<Directory /usr/local/nagios/sbin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all


AuthType Basic
AuthName "Acesso ao Nagios"

AuthLDAPUrl "ldap://ad.xyz.com.br/dc=xyz,DC=com,DC=br?sAMAccountname?sub?(objectClass=*)"

AuthLDAPBindDN user@xyz.com.br
AuthLDAPBindPassword ***

require group CN=TI,OU=Groups,OU=SEDE,DC=xyz,DC=com,DC=br

</Directory>


Encontrei um ser humano com o mesmo problema que eu aqui. Acompanhem o desespero do mesmo. :-)

Encontrei informações no site Microsoft TechNet de como fazer buscas em AD windows. Uma das seções do texto ensina como conectar ao AD para fazer buscas e deixa claro:

For standard LDAP searches, directory clients connect to TCP port 389. To search the Active Directory global catalog, directory clients must instead connect to TCP port 3268.
Ativando Lutieri's translator
.
..
...
.... OK loaded!

Para buscas convencionais LDAP, clientes conectam a porta 389/TCP. Para buscar no catálogo global do Active Directory, clientes precisam conectar a porta 3268/TCP.
Agora eu me coloco a pensar e vejo que: "Sim, eu estava querendo buscar no AD inteiro, pois meu Base DN é dc=xyz,DC=com,DC=br, e conectando na porta 389 que é a padrão.

Para mais informações da opção "AuthLDAPUrl" e saber o que é Base DN consulte a documentação do apache aqui.

Por isso o que me surpreende não foi ter parado de funcionar de um dia pro outro. E sim ter funcionado por algum tempo. Mas... C'est la fucking vie...

Enfim pra solucionar o problema e funcionar de uma vez apresento duas soluções. Ou muda o Base DN e coloca-se um grupo(OU) ou muda-se a porta para conectar. Bom.. qualquer que seja a escolha vai mudar apenas a diretiva "AuthLDAPUrl", portanto vou mostrar apenas o que muda no valor dela:

Solução 1ª:

AuthLDAPUrl "ldap://ad.xyz.com.br/ou=user,dc=xyz,DC=com,DC=br?sAMAccountname?sub?(objectClass=*)"


Solução 2ª:

AuthLDAPUrl "ldap://ad.xyz.com.br:3268/dc=xyz,DC=com,DC=br?sAMAccountname?sub?(objectClass=*)"

Marcadores: , ,

Apache 2.2.4 + LDAP = Mudanças [updated]

Recentemente instalei o Apache 2.2.4 no FreeBSD para rodar o Nagios. Porém algumas modificações ocorreram nas versões mais recentes. Já falo mais sobre isso.

A instalação foi tranqüila:

cd /usr/ports/www/apache22
make WITH_LDAP_MODULES=yes install clean

Preciso de suporte a LDAP pois uso autenticação no AD do Windows.
Pra minha surpresa tive alguns erros na autenticação. Alterei o nível do log para degub.

vi /usr/local/etc/apache22/httpd.conf
LogLevel debug
:x

/usr/local/etc/rc.d/apache22 restart ; tail -f /var/log/httpd-error.log

Acompanhando o log de erro, com o comando acima, encontrei essas mensagens ao tentar me autenticar no navegador:
Internal error: pcfg_openfile() called with NULL filename
[client x.x.x.x] (9)Bad file descriptor: Could not open password file: (null)
Googlin' encontrei uma GRANDE quantidade de pessoas com o mesmo problema e encontrei a solução que seria inserir isso no arquivo .htaccess ou na configuração de diretório, enfim no mesmo lugar onde está a configuração da autenticação LDAP:

AuthBasicProvider ldap
AuthUserFile /dev/null

Finalmente não apareceram mais erros no logo, however, a opção "require valid-user" não funciona mais. Encontrei a solução na documentação do apache http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html.en#reqvaliduser.

Para funcionar a diretiva "require valid-user" a opção "AuthzLDAPAuthoritative" precisa ser setada para off.

Outra coisa que mudou foi a opção "require group". Agora se está usando ldap e quer se fazer consulta por grupos deve substituir por "require ldap-group".

Resumindo, meu arquivo de autenticação contra o AD que era assim:

<directory /usr/local/www/nagios/cgi-bin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all


AuthType Basic
AuthName "Acesso ao Nagios"

AuthLDAPUrl "ldap://ad.xyz.com.br/ou=sede,dc=xyz,DC=com,DC=br?sAMAccountname?sub?(objectClass=*)"

AuthLDAPBindDN algumuser@xyzcom.br
AuthLDAPBindPassword *******

require group CN=TI,OU=Groups,OU=SEDE,DC=xyz,DC=com,DC=br

</directory>



Acabou ficando assim:

<directory /usr/local/www/nagios/cgi-bin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all

AuthBasicProvider ldap
AuthUserFile /dev/null

AuthType Basic
AuthName "Acesso ao Nagios"

AuthLDAPUrl "ldap://ad.xyz.com.br/ou=sede,dc=xyz,DC=com,DC=br?sAMAccountname?sub?(objectClass=*)"

AuthLDAPBindDN algumuser@xyzcom.br
AuthLDAPBindPassword *******

require ldap-group CN=TI,OU=Groups,OU=SEDE,DC=xyz,DC=com,DC=br
</directory>


Fonte: Google :-D
http://www.mail-archive.com/debian-apache@lists.debian.org/msg08106.html


----

Depois de mais uma instalação agora no FreeBSD 7.0 tive o seguinte warning quando iniciava o apache:

[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

Numa busca rápida encontrei a solução no VOL. Carregar o módulo accf_http ou usando o comando kldload:

kldload accf_http


ou pra sempre, inserindo no arquivo /boot/loader.conf a seguinte linha:

accf_http_load="YES"


Fonte:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5277&pagina=3

Marcadores: , , ,

quarta-feira, abril 04, 2007

Autenticando o Apache no AD do w2k

Buenos dias!

Estou montando a rede da empresa no nagios, uma ferramenta de monitoramento de rede bastante interessante. Precisei fazer a autenticação pra acessar o Nagios. Sendo que todos usuários possuem uma conta no Active Directory, seria mais interessante se esse login, o do Nagios, pudesse ser feito utilizando esses usuários e senhas já existentes. Sem a necessidade de manter mais uma base de usuários/senhas e fazer os usuário lembrarem de mais uma senha. Enfim: Viva a integração.

Falando em integração logo lembramos de serviços de diretório, logo lembramos de LDAP. Pois bem o que eu decidi fazer foi, nada mais que, utilizar o usuário que já existe cadastrado no AD do windows para logar no Nagios.

Bem na verdade quem faz a parte de autenticação é o Apache. O nagios apenas aproveita esse login efetuado para dar permissões e etc...

Comecemos:

É necessário ter compilado e carregado suporte a LDAP no apache. Partirei do ponto em que acredito que isso já esteja feito.

1º passo: Carregar os módulos LDAP no apache. Adicionei a seguinte configuração no httpd.conf

LoadModule ldap_module /usr/lib/apache2/modules/mod_ldap.so
LoadModule auth_ldap_module /usr/lib/apache2/modules/mod_auth_ldap.so

2º passo: Criar a configuração no diretório que deve ter autenticação. Eu prefiro criar um arquivo .htaccess e fazer a configuração nele. O meu ficou assim:

AuthType Basic
AuthName "Acesso ao Nagios"

# DN of Active Directory server
#sAMAccountName = login do usuario

AuthLDAPUrl "ldap://ADServer/DC=dominio,DC=com,DC=br?sAMAccountName?sub?(objectClass=*)"


##OBS: optional DN used to bind to the server when searching for entries. If not provided, mod_auth_ldap will use an anonymous bind.

# An account in the AD that has enough permissions to perform an LDAP search
#Case Insensitive

AuthLDAPBindDN "CN=Lutieri G. B.,OU=XYZ Ltda,OU=Consultorias/Terceiros,OU=Users,OU=SEDE,DC=dominio,DC=com,DC=br"

#ou

#The following would also be valid, although not truly LDAP compliant
#AuthLDAPBindDN lutierib@dominio.com.br

#ou

#Nao funcionou -> AuthLDAPBindDN dominio.com.br\\lutierib

#Senha da Conta acima
AuthLDAPBindPassword 123456



# When checking for group membership, use the DN of the user, not the HTTP entry

AuthLDAPGroupAttributeIsDN on

require valid-user

#require group OU=XYZ Ltda,DC=dominio,DC=com,DC=br

#ou

#require user lutierib



No arquivo acima temos AuthLDAPBindDN. Indica um usuário comum que será usado para consultar o AD. É um usuário com privilégios mínimos. Na documentação do Apache diz que se não for especificado será executada a consulta como anônimo. E pra mim funcionou como anônimo. ;-)

AuthLDAPBindPassword é a senha da conta especificada em AuthLDAPBind.

Nas últimas opções de require podem ser especificados usuários ou membros de uma OU(Unidade organizacional) que podem ter acesso a essa página. Os demais não serão aceitos. Se você deseja aceitar qualquer usuário válido é só usar:

require valid-user

AuthLDAPUrl especifica o servidor, o domínio e o atributo que vai ser utilizado para fazer a busca no AD. Nesse caso estamos utilizando o atributo sAMAccountName que é o nome do usuário. Isso que dizer que quando for solicitada a autenticação deve ser informado o nome de usuário e senha.

Caso você queira que faça-se o login atráves do sobrenome, por exemplo, procura o atributo correspondente aqui: http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm

Caso tenha dúvida sobre alguma das opções usadas no arquivo .htaccess acima você pode olhar a documentação do módulo em:



Utilizei como base um howto que encontra-se aqui e baseia-se no uso de grupos :

Autenticação no nagios está aqui:

Se não está funcionando o login olhe os logs:
tail -f /var/log/apache2/error.log
Acho que é só.

Marcadores: , , ,



Chat with Lutieri G. B.

Subscribe in a reader