Implantando autenticação centralizada e segura usando Openldap – ACLs e SSL ( LDAPs )
31 de Julho de 2010, 0:00 - sem comentários aindaCom o servidor funcionando corretamente irei restringir os acessos pelas ACLs e adicionar criptografia ( ldaps ) como camada de segurança.
== ACLs ==
Edite o arquivo /etc/ldap/slapd.conf restrigindo o acessos ao BD midificando as ACL como o exemplo abaixo:
vim /etc/ldap/slapd.conf
access to attrs=userPassword
by anonymous auth
by self write
by * none
access to dn.base=”" by * read
access to *
by * read
Gerando a senha em SSHA
slappasswd -h {SSHA}
Informe a senha do ADMIN e confirme
Edite o arquivo /etc/ldap/slapd.conf
vim /etc/ldap/slapd
suffix “dc=acme,dc=local”
rootdn “cn=admin,dc=acme,dc=local”
rootpw “{SSHA}irRG0yGfiDoBbKqX5rRTBzy+23J5rt+J”
Reincie o slapd
invoke-rc.d slapd restart
== LDAP com TLS/SSL ( LDAPs ) ==
Para habilitar o TLS/SSL no servidor execute os seguintes passos:
Crie e acesse o diretório ssl em /etc/ldap
mkdir /etc/ldap/ssl
cd ssl
Caso você não possua um certificado assinado por uma CA crie uma CA usando o comando
/usr/lib/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create) [ Pressine ENTER ]
Enter PEM pass phrase: [ INFORME A SENHA ]
Verifying – Enter PEM pass phrase: [ REPITA A SENHA ANTERIOR ]
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Bahia
Locality Name (eg, city): Salvador
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME
Organizational Unit Name (eg, section) :IT
Common Name (eg, YOUR name) :localhost
Email Address:admin@acme.localNo campo “A challenge password: [ Pressione ENTER ]
An optional company name: [ Pressione ENTER ]
Enter pass phrase for ./demoCA/private/./cakey.pem: [ Digite a senha definida no "Enter PEM pass phrase" ]
Crie a chave:
openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Bahia
Locality Name (eg, city):Salvador
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME
Organizational Unit Name (eg, section):IT
Common Name (eg, YOUR name):localhost
Email Address:admin@acme.local
A challenge password: [ Pressione ENTER ]
An optional company name: [ Pressione ENTER ]
Assine a chave criada usando a CA.
/usr/lib/ssl/misc/CA.sh -sign
Digite a senha da CA e responda todos os questionamentos como “y”
Copie o arquivo cacert.pem para o diretório /etc/ldap/ssl
cp demoCA/cacert.pem /etc/ldap/ssl/
Altere o dono dos arquivo .pem
chown openldap *.pem
Altere as permissões de acesso aos arquivos .pem
chmod 600 *.pem
Adicione as seguintes linhas no arquivo /etc/ldap/slapd.conf:
TLSCACertificateFile /etc/ldap/ssl/cacert.pem
TLSCertificateFile /etc/ldap/ssl/newcert.pem
TLSCertificateKeyFile /etc/ldap/ssl/newreq.pem
TLSVerifyClient never
Descomente e edite o arquivo /etc/default/slapd habilitando o ldaps
vim /etc/default/slapd
SLAPD_SERVICES=”ldaps:///”
Edite o arquivo /etc/ldap/ldap.conf adicionando a seguinte linha:
TLS_REQCERT never
Reinicie o slapd
invoke-rc.d slapd restart
== Testando ==
ldapsearch -LL -H ldaps://localhost -b”dc=acme,dc=local” -x “(uid=alexos)”
Após a modificações apresentadas anteriormente nosso arquivo /etc/ldap/slapd.conf ficará como no exemplo abaixo:
Exemplo arquivo /etc/ldap/slapd.conf
allow bind_v2
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/krb5-kdc.schema
include /etc/ldap/schema/qmailuser.schemapidfile /var/run/slapd/slapd.pid
TLSCACertificateFile /etc/ldap/ssl/cacert.pem
TLSCertificateFile /etc/ldap/ssl/newcert.pem
TLSCertificateKeyFile /etc/ldap/ssl/newreq.pem
TLSVerifyClient neverargsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
moduleload back_hdbsizelimit 500
database hdb
suffix “dc=acme,dc=local”
rootdn “cn=admin,dc=acme,dc=local”
rootpw “{SSHA}/v+HeJBQferYPfYFkqqa1TwIGmW2piFv”directory “/var/lib/ldap”
index objectClass,ou,cn,sn,uid,uidNumber,mail,mailAlternateAddress,mailForwardingAddress,memberUid eq
lastmod on
access to attrs=userPassword
by anonymous auth
by self write
by * noneaccess to dn.base=”" by * read
access to *
by * read
Referências:
Andreaswacker
Linsec.ca
Openldap.org
See:
Implantando autenticação centralizada e segura usando Openldap – PAM e LDAP
31 de Julho de 2010, 0:00 - sem comentários aindaCom o servidor configurado e seguro podemos integrar todas as soluções existentes a nossa base LDAP como por exemplo Apache, Squid, Postfix, Bind, sudo, ssh e todos os serviços com suporte a autentição via PAM ou direto no LDAP.
Agora apresentarei como autenticar os usuários das estações de trabalho, evitando assim a criação de usuários e grupos locais.
Instale os pacotes necessários
aptitude install libnss-ldap libpam-ldap nscd
LDAP server Uniform Resource Identifier: ldaps://[ IP_LDAP_MASTER ]
Distinguished name of the search base: dc=acme,dc=local
LDAP version: 3
LDAP account for root: cn=admin,dc=acme,dc=local
LDAP root account password: [ SENHA_ADMIN ]
nsswitch.conf not managed automatically: Ok
Make local root Database admin: Yes
Does the LDAP database require login: No
LDAP account for root: cn=admin,dc=acme,dc=local
Edite as seguintes linhas do arquivo /etc/libnss-ldap.conf
host [ IP_LDAP_MASTER ]
uri ldaps://[ IP_LDAP_MASTER ]/
base ou=People,dc=acme,dc=local
bind_policy soft
nss_base_passwd ou=People,dc=acme,dc=local?one
nss_base_shadow ou=People,dc=acme,dc-local?one
nss_base_group ou=Group,dc=acme,dc=local?one
Edite as seguintes linhas do arquivo /etc/pam_ldap.conf
host [ IP_LDAP_MASTER ]
uri ldaps://[ IP_LDAP_MASTER ]/
base ou=People,dc=acme,dc=local
bind_policy soft
nss_base_passwd ou=People,dc=acme,dc=local?one
nss_base_shadow ou=People,dc=acme,dc-local?one
nss_base_group ou=Group,dc=acme,dc=local?one
Edite os seguintes arquivos no diretório /etc/pam.d/
common-account
account sufficient pam_ldap.so
account required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ silent
common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
common-session
session sufficient pam_ldap.so
session required pam_unix.so
Edite o arquivo /etc/nsswitch.conf
vim /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
Remova os usuários cadastrados localmente
deluser [usuário]
Reinicie a máquina
init 6
Após reiniciar a máquina logue com um usuário existente no LDAP
Agora tudo será feito pelo LDAP ( ssh, sudo e etc ) não sendo necessário a craição de usuários ou grupos locais.
== Administração do LDAP via WEB ==
Phpldapadmin – http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page
== Scripts para criação de usuários e grupos ==
Diradm – http://directory.fsf.org/project/diradm/
Referências:
Andreaswacker
Linsec.ca
Openldap.org
See:
Implantando autenticação centralizada e segura usando Openldap
31 de Julho de 2010, 0:00 - sem comentários ainda<p><img src="http://www.kolab.org/images/logo-openldap.png" alt="Openldap" /></p> <p>Uma autenticação centralizada faz parte do processo de adequação do ambiente as boas práticas de segurança. Esta solução provê recursos que atendem aos principios de autenticidade e não-repúdio. Usando a criptografia juntamente com esta solução poderemos previnir ataques de <a href="http://en.wikipedia.org/wiki/Hijacking">hijacking</a>, <a href="http://en.wikipedia.org/wiki/Spoofing_attack">spoofing</a> e <a href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">man in the middle</a>.</p> <p>O <a href="http://en.wikipedia.org/wiki/LDAP"> LDAP</a> (Lightweight Directory Access Protocol) é um protocolo cliente-servidor, utilizado para acessar um serviço de Diretório. Ele foi inicialmente usado como uma interface para o X.500, mas também pode ser usado com autonomia e com outros tipos de servidores de Diretório. Atualmente vem se tornando um padrão, diversos programas já têm suporte a LDAP. Livros de endereços, autenticação, armazenamento de certificados digitai<br /> s (S/MIME) e de chaves públicas (PGP), são alguns dos exemplos onde o LDAP já é amplamente utilizado.</p> <p>O <a href="http://en.wikipedia.org/wiki/OpenLDAP">Openldap</a> é a solução livre para a implementação do LDAP. Diferentemente das soluções proprietárias ( e.g. Active Directory ™ ), ele implementa de forma fidedigna as especificações das <a href="http://www.openldap.org/project/kurt/publications.html">RFCs</a> deste protocolo.</p> <p>Este artigo têm como principal objetivo ensinar como implantar uma solução livre e gratuita de autenticação com segurança. Não abordarei conceitos sobre o funcionamento do protocolo, para isso recomendo a leitura das referências.</p> <p>Inicialmente irei configurar um servidor LDAP e um cliente autenticando nesta base. Os próximos artigos apresentarei como integrar outros serviços com HTTP ( Apache ), Proxy ( Squid ) , Email ( Postfix + Dovecot ) ao serviço de diretório. </p> <p>Divirtam-se!!</p> <p><strong>= Configurando o LDAP server ==</strong></p> <p>Instale os pacotes necessários </p> <blockquote><p> aptitude install slapd ldap-utils migrationtools </p></blockquote> <blockquote><p> dpkg-reconfigure slapd </p></blockquote> <blockquote><p> DNS domain name: <strong>acme.local </strong><br /> Organization name: <strong>acme</strong><br /> Database backend to set: <strong>HDB</strong><br /> Do you want the database to be removed when slapd is purged? <strong>No</strong><br /> Move old database? <strong>Yes</strong><br /> Allow LDAPv2 protocol? <strong>Yes</strong> </p></blockquote> <p><strong>== Adicionando Schemas ==</strong></p> <p>Acesso o diretório /etc/ldap/schemas</p> <blockquote><p> cd /etc/ldap/schemas </p></blockquote> <p>Faça o download dos schemas. Eles serão importantes na implementação do kerberos e na autenticação dos usuários do Postfix</p> <blockquote><p> wget http://www.bayour.com/openldap/schemas/krb5-kdc.schema</p> <p>wget http://trac.kyapanel.com/export/360/trunk/ldap/schema/qmailuser.schema </p></blockquote> <p>Edite o arquivo /etc/ldap/slapd adicionando os novos schemas e novos indices no index</p> <blockquote><p> vim /etc/ldap/slapd.conf </p></blockquote> <blockquote><p> include /etc/ldap/schema/krb5-kdc.schema<br /> include /etc/ldap/schema/qmailuser.schema</p> <p>index objectClass,ou,cn,sn,uid,uidNumber,mail,mailAlternateAddress,mailForwardingAddress,memberUid eq </p></blockquote> <p>Reinicie o slapd </p> <blockquote><p> invoke-rc.d slapd restart </p></blockquote> <p><strong>== Testando ==</strong></p> <blockquote><p> ldapsearch -x -b “dc=acme,dc=local” </p></blockquote> <blockquote><p> # extended LDIF<br /> #<br /> # LDAPv3<br /> # base with scope subtree<br /> # filter: (objectclass=*)<br /> # requesting: ALL<br /> #</p> <p># acme.local<br /> dn: dc=acme,dc=local<br /> objectClass: top<br /> objectClass: dcObject<br /> objectClass: organization<br /> o: acme<br /> dc: acme</p> <p># admin, acme.local<br /> dn: cn=admin,dc=acme,dc=local<br /> objectClass: simpleSecurityObject<br /> objectClass: organizationalRole<br /> cn: admin<br /> description: LDAP administrator</p> <p># search result<br /> search: 2<br /> result: 0 Success</p> <p># numResponses: 3<br /> # numEntries: 2 </p></blockquote> <p><strong>== Migrando os usuários e grupos locais com o migration tools ==</strong></p> <p>O migrationtools é um conjunto de scripts responsáveis por migrar as informações locais como hosts, serviços, usuários, grupos e etc para a infraestrutura do LDAP. </p> <p>Edite as seguintes linhas do arquivo /usr/share/migrationtools</p> <blockquote><p> vim migrate_common.ph </p></blockquote> <blockquote><p> $DEFAULT_MAIL_DOMAIN = “acme.local”;</p> <p>$DEFAULT_BASE = “dc=acme,dc=local”;</p> <p>$EXTENDED_SCHEMA = 1; </p></blockquote> <p>Importe a base</p> <blockquote><p> ./migrate_base.pl > base.ldif </p></blockquote> <p>O arquivo base.ldif contém a infraestrutura básica de OUs ( Unidades Organizacionais ). Como o objetivo de nosso LDAP é autenticação então edite o arquivo base.ldif deixando somente as seguintes informações:</p> <blockquote><p> dn: dc=acme,dc=local<br /> dc: acme<br /> objectClass: top<br /> objectClass: domain<br /> objectClass: domainRelatedObject<br /> associatedDomain: acme.local</p> <p>dn: ou=People,dc=acme,dc=local<br /> ou: People<br /> objectClass: top<br /> objectClass: organizationalUnit<br /> objectClass: domainRelatedObject<br /> associatedDomain: acme.local</p> <p>dn: ou=Group,dc=acme,dc=local<br /> ou: Group<br /> objectClass: top<br /> objectClass: organizationalUnit<br /> objectClass: domainRelatedObject<br /> associatedDomain: acme.local </p></blockquote> <p>Migre as contas e as senhas dos usuários</p> <blockquote><p> ETC_SHADOW=/etc/shadow ./migrate_passwd.pl /etc/passwd > passwd.ldif </p></blockquote> <p>Migre os grupos</p> <blockquote><p> ./migrate_group.pl /etc/group > group.ldif </p></blockquote> <p><strong>== Atualize o BD do LDAP ==</strong></p> <blockquote><p> ldapadd -h localhost -x -W -D “cn=admin,dc=acme,dc=local” -c -f base.ldif</p> <p>ldapadd -h localhost -x -W -D “cn=admin,dc=acme,dc=local” -c -f passwd.ldif</p> <p>ldapadd -h localhost -x -W -D “cn=admin,dc=acme,dc=local” -c -f group.ldif </p></blockquote> <p><strong>== Testando ==</strong></p> <blockquote><p> ldapsearch -LL -H ldap://localhost -b”dc=acme,dc=local” -x “(uid=alexos)” </p></blockquote> <blockquote><p> dn: uid=alexos,ou=People,dc=acme,dc=local<br /> uid: alexos<br /> cn: alexos<br /> sn: alexos<br /> mail: alexos@acme.local<br /> objectClass: person<br /> objectClass: organizationalPerson<br /> objectClass: inetOrgPerson<br /> objectClass: posixAccount<br /> objectClass: top<br /> objectClass: krb5Principal<br /> objectClass: shadowAccount<br /> shadowMax: 99999<br /> shadowWarning: 7<br /> krb5PrincipalName: alexos@ACME.LOCAL<br /> loginShell: /bin/bash<br /> uidNumber: 1000<br /> gidNumber: 1000<br /> homeDirectory: /home/alexos<br /> gecos: alexos,,, </p></blockquote> <p><strong>Referências:</strong></p> <p><a href="http://www.andreaswacker.com/blog/2010/05/10/ldap_sasl_bindsimple-cant-contact-ldap-server-1/">Andreaswacker</a><br /> <a href="http://linsec.ca/Using_OpenLDAP_for_User_Authentication">Linsec.ca</a><br /> <a href="http://www.openldap.org/doc/admin24/">Openldap.org</a></p> <p><strong><a href="http://blog.alexos.com.br/?p=1901&#038;lang=en">Continua….</a></strong></p> <div><h3>See:</h3><ul><li><a href="http://blog.alexos.com.br/?p=1913&lang=pt-br" class="crp_title">Implantando autenticação centralizada e segura usando Openldap – PAM e LDAP</a></li><li><a href="http://blog.alexos.com.br/?p=1901&lang=pt-br" class="crp_title">Implantando autenticação centralizada e segura usando Openldap – ACLs e SSL ( LDAPs )</a></li><li><a href="http://blog.alexos.com.br/?p=344&lang=pt-br" class="crp_title">Configurando o Bind9 no Ubuntu/Debian ( Atualizado )</a></li><li><a href="http://blog.alexos.com.br/?p=990&lang=pt-br" class="crp_title">Autenticando o Ocomon no AD</a></li><li><a href="http://blog.alexos.com.br/?p=950&lang=pt-br" class="crp_title">Monitorando vários servidores de forma simples com o Munin</a></li></ul></div><p><a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Google Bookmarks" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/google.png" height="16" alt="Google Bookmarks" width="16" /></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Twitter" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/twitter.png" height="16" alt="Twitter" width="16" /></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Technorati Favorites" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/technorati.png" height="16" alt="Technorati Favorites" width="16" /></a> <a href="http://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Google Gmail" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/gmail.png" height="16" alt="Google Gmail" width="16" /></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="LinkedIn" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/linkedin.png" height="16" alt="LinkedIn" width="16" /></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Google Reader" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/reader.png" height="16" alt="Google Reader" width="16" /></a> <a href="http://www.addtoany.com/add_to/wordpress?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="WordPress" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/wordpress.png" height="16" alt="WordPress" width="16" /></a> <a href="http://www.addtoany.com/add_to/slashdot?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Slashdot" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/slashdot.png" height="16" alt="Slashdot" width="16" /></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Reddit" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/reddit.png" height="16" alt="Reddit" width="16" /></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Delicious" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/delicious.png" height="16" alt="Delicious" width="16" /></a> <a href="http://www.addtoany.com/add_to/multiply?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Multiply" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/multiply.png" height="16" alt="Multiply" width="16" /></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Digg" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/digg.png" height="16" alt="Digg" width="16" /></a> <a href="http://www.addtoany.com/add_to/identi_ca?linkurl=http%3A%2F%2Fblog.alexos.com.br%2F%3Fp%3D1880%26amp%3Blang%3Dpt-br&linkname=Implantando%20autentica%C3%A7%C3%A3o%20centralizada%20e%20segura%20usando%20Openldap" title="Identi.ca" target="_blank"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/icons/identica.png" height="16" alt="Identi.ca" width="16" /></a> <a href="http://www.addtoany.com/share_save" class="a2a_dd addtoany_share_save"><img src="http://blog.alexos.com.br/wp-content/plugins/add-to-any/share_save_171_16.png" height="16" alt="Share/Bookmark" width="171" /></a> </p>
Implantando autenticação centralizada e segura usando Openldap – ACLs e SSL ( LDAPs )
31 de Julho de 2010, 0:00 - sem comentários aindaCom o servidor funcionando corretamente irei restringir os acessos pelas ACLs e adicionar criptografia ( ldaps ) como camada de segurança.
== ACLs ==
Edite o arquivo /etc/ldap/slapd.conf restrigindo o acessos ao BD midificando as ACL como o exemplo abaixo:
vim /etc/ldap/slapd.conf
access to attrs=userPassword
by anonymous auth
by self write
by * none
access to dn.base=”" by * read
access to *
by * read
Gerando a senha em SSHA
slappasswd -h {SSHA}
Informe a senha do ADMIN e confirme
Edite o arquivo /etc/ldap/slapd.conf
vim /etc/ldap/slapd
suffix “dc=acme,dc=local”
rootdn “cn=admin,dc=acme,dc=local”
rootpw “{SSHA}irRG0yGfiDoBbKqX5rRTBzy+23J5rt+J”
Reincie o slapd
invoke-rc.d slapd restart
== LDAP com TLS/SSL ( LDAPs ) ==
Para habilitar o TLS/SSL no servidor execute os seguintes passos:
Crie e acesse o diretório ssl em /etc/ldap
mkdir /etc/ldap/ssl
cd ssl
Caso você não possua um certificado assinado por uma CA crie uma CA usando o comando
/usr/lib/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create) [ Pressine ENTER ]
Enter PEM pass phrase: [ INFORME A SENHA ]
Verifying – Enter PEM pass phrase: [ REPITA A SENHA ANTERIOR ]
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Bahia
Locality Name (eg, city): Salvador
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME
Organizational Unit Name (eg, section) :IT
Common Name (eg, YOUR name) :localhost
Email Address:admin@acme.localNo campo “A challenge password: [ Pressione ENTER ]
An optional company name: [ Pressione ENTER ]
Enter pass phrase for ./demoCA/private/./cakey.pem: [ Digite a senha definida no "Enter PEM pass phrase" ]
Crie a chave:
openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Bahia
Locality Name (eg, city):Salvador
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME
Organizational Unit Name (eg, section):IT
Common Name (eg, YOUR name):localhost
Email Address:admin@acme.local
A challenge password: [ Pressione ENTER ]
An optional company name: [ Pressione ENTER ]
Assine a chave criada usando a CA.
/usr/lib/ssl/misc/CA.sh -sign
Digite a senha da CA e responda todos os questionamentos como “y”
Copie o arquivo cacert.pem para o diretório /etc/ldap/ssl
cp demoCA/cacert.pem /etc/ldap/ssl/
Altere o dono dos arquivo .pem
chown openldap *.pem
Altere as permissões de acesso aos arquivos .pem
chmod 600 *.pem
Adicione as seguintes linhas no arquivo /etc/ldap/slapd.conf:
TLSCACertificateFile /etc/ldap/ssl/cacert.pem
TLSCertificateFile /etc/ldap/ssl/newcert.pem
TLSCertificateKeyFile /etc/ldap/ssl/newreq.pem
TLSVerifyClient never
Descomente e edite o arquivo /etc/default/slapd habilitando o ldaps
vim /etc/default/slapd
SLAPD_SERVICES=”ldaps:///”
Edite o arquivo /etc/ldap/ldap.conf adicionando a seguinte linha:
TLS_REQCERT never
Reinicie o slapd
invoke-rc.d slapd restart
== Testando ==
ldapsearch -LL -H ldaps://localhost -b”dc=acme,dc=local” -x “(uid=alexos)”
Após a modificações apresentadas anteriormente nosso arquivo /etc/ldap/slapd.conf ficará como no exemplo abaixo:
Exemplo arquivo /etc/ldap/slapd.conf
allow bind_v2
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/krb5-kdc.schema
include /etc/ldap/schema/qmailuser.schemapidfile /var/run/slapd/slapd.pid
TLSCACertificateFile /etc/ldap/ssl/cacert.pem
TLSCertificateFile /etc/ldap/ssl/newcert.pem
TLSCertificateKeyFile /etc/ldap/ssl/newreq.pem
TLSVerifyClient neverargsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
moduleload back_hdbsizelimit 500
database hdb
suffix “dc=acme,dc=local”
rootdn “cn=admin,dc=acme,dc=local”
rootpw “{SSHA}/v+HeJBQferYPfYFkqqa1TwIGmW2piFv”directory “/var/lib/ldap”
index objectClass,ou,cn,sn,uid,uidNumber,mail,mailAlternateAddress,mailForwardingAddress,memberUid eq
lastmod on
access to attrs=userPassword
by anonymous auth
by self write
by * noneaccess to dn.base=”" by * read
access to *
by * read
Referências:
Andreaswacker
Linsec.ca
Openldap.org
See:
Implantando autenticação centralizada e segura usando Openldap – PAM e LDAP
31 de Julho de 2010, 0:00 - sem comentários aindaCom o servidor configurado e seguro podemos integrar todas as soluções existentes a nossa base LDAP como por exemplo Apache, Squid, Postfix, Bind, sudo, ssh e todos os serviços com suporte a autentição via PAM ou direto no LDAP.
Agora apresentarei como autenticar os usuários das estações de trabalho, evitando assim a criação de usuários e grupos locais.
Instale os pacotes necessários
aptitude install libnss-ldap libpam-ldap nscd
LDAP server Uniform Resource Identifier: ldaps://[ IP_LDAP_MASTER ]
Distinguished name of the search base: dc=acme,dc=local
LDAP version: 3
LDAP account for root: cn=admin,dc=acme,dc=local
LDAP root account password: [ SENHA_ADMIN ]
nsswitch.conf not managed automatically: Ok
Make local root Database admin: Yes
Does the LDAP database require login: No
LDAP account for root: cn=admin,dc=acme,dc=local
Edite as seguintes linhas do arquivo /etc/libnss-ldap.conf
host [ IP_LDAP_MASTER ]
uri ldaps://[ IP_LDAP_MASTER ]/
base ou=People,dc=acme,dc=local
bind_policy soft
nss_base_passwd ou=People,dc=acme,dc=local?one
nss_base_shadow ou=People,dc=acme,dc-local?one
nss_base_group ou=Group,dc=acme,dc=local?one
Edite as seguintes linhas do arquivo /etc/pam_ldap.conf
host [ IP_LDAP_MASTER ]
uri ldaps://[ IP_LDAP_MASTER ]/
base ou=People,dc=acme,dc=local
bind_policy soft
nss_base_passwd ou=People,dc=acme,dc=local?one
nss_base_shadow ou=People,dc=acme,dc-local?one
nss_base_group ou=Group,dc=acme,dc=local?one
Edite os seguintes arquivos no diretório /etc/pam.d/
common-account
account sufficient pam_ldap.so
account required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ silent
common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
common-session
session sufficient pam_ldap.so
session required pam_unix.so
Edite o arquivo /etc/nsswitch.conf
vim /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
Remova os usuários cadastrados localmente
adduser [usuário]
Reinicie a máquina
init 6
Após reiniciar a máquina logue com um usuário existente no LDAP
Agora tudo será feito pelo LDAP ( ssh, sudo e etc ) não sendo necessário a craição de usuários ou grupos locais.
== Administração do LDAP via WEB ==
Phpldapadmin – http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page
== Scripts para criação de usuários e grupos ==
Diradm – http://directory.fsf.org/project/diradm/
Referências:
Andreaswacker
Linsec.ca
Openldap.org