Ir para o conteúdo
ou

Software livre Brasil

Tela cheia
 Feed RSS

Alexos Core Labs

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.
Licenciado sob GNU FDL

Implantando autenticação centralizada e segura usando Openldap – ACLs e SSL ( LDAPs )

31 de Julho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Openldap

Com 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.local

No 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.schema

pidfile /var/run/slapd/slapd.pid

TLSCACertificateFile /etc/ldap/ssl/cacert.pem
TLSCertificateFile /etc/ldap/ssl/newcert.pem
TLSCertificateKeyFile /etc/ldap/ssl/newreq.pem
TLSVerifyClient never

argsfile /var/run/slapd/slapd.args

loglevel none

modulepath /usr/lib/ldap
moduleload back_hdb

sizelimit 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 * none

access to dn.base=”" by * read

access to *
by * read

Referências:

Andreaswacker
Linsec.ca
Openldap.org

Google Bookmarks Twitter Technorati Favorites Google Gmail LinkedIn Google Reader WordPress Slashdot Reddit Delicious Multiply Digg Identi.ca Share



Implantando autenticação centralizada e segura usando Openldap – PAM e LDAP

31 de Julho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Openldap

Com 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

Google Bookmarks Twitter Technorati Favorites Google Gmail LinkedIn Google Reader WordPress Slashdot Reddit Delicious Multiply Digg Identi.ca Share



Implantando autenticação centralizada e segura usando Openldap

31 de Julho de 2010, 0:00, por Software Livre Brasil - 0sem 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 &#8482; ), 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 &#8220;dc=acme,dc=local&#8221; </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 = &#8220;acme.local&#8221;;</p> <p>$DEFAULT_BASE = &#8220;dc=acme,dc=local&#8221;;</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 &#8220;cn=admin,dc=acme,dc=local&#8221; -c -f base.ldif</p> <p>ldapadd -h localhost -x -W -D &#8220;cn=admin,dc=acme,dc=local&#8221; -c -f passwd.ldif</p> <p>ldapadd -h localhost -x -W -D &#8220;cn=admin,dc=acme,dc=local&#8221; -c -f group.ldif </p></blockquote> <p><strong>== Testando ==</strong></p> <blockquote><p> ldapsearch -LL -H ldap://localhost -b&#8221;dc=acme,dc=local&#8221; -x &#8220;(uid=alexos)&#8221; </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&amp;#038;lang=en">Continua&#8230;.</a></strong></p> <div><h3>See:</h3><ul><li><a href="http://blog.alexos.com.br/?p=1913&amp;lang=pt-br" class="crp_title">Implantando autenticação centralizada e segura usando Openldap &#8211; PAM e LDAP</a></li><li><a href="http://blog.alexos.com.br/?p=1901&amp;lang=pt-br" class="crp_title">Implantando autenticação centralizada e segura usando Openldap &#8211; ACLs e SSL ( LDAPs )</a></li><li><a href="http://blog.alexos.com.br/?p=344&amp;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&amp;lang=pt-br" class="crp_title">Autenticando o Ocomon no AD</a></li><li><a href="http://blog.alexos.com.br/?p=950&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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, por Software Livre Brasil - 0sem comentários ainda

Openldap

Com 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.local

No 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.schema

pidfile /var/run/slapd/slapd.pid

TLSCACertificateFile /etc/ldap/ssl/cacert.pem
TLSCertificateFile /etc/ldap/ssl/newcert.pem
TLSCertificateKeyFile /etc/ldap/ssl/newreq.pem
TLSVerifyClient never

argsfile /var/run/slapd/slapd.args

loglevel none

modulepath /usr/lib/ldap
moduleload back_hdb

sizelimit 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 * none

access to dn.base=”" by * read

access to *
by * read

Referências:

Andreaswacker
Linsec.ca
Openldap.org

Google Bookmarks Twitter Technorati Favorites Google Gmail LinkedIn Google Reader WordPress Slashdot Reddit Delicious Multiply Digg Identi.ca Share/Bookmark



Implantando autenticação centralizada e segura usando Openldap – PAM e LDAP

31 de Julho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Openldap

Com 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

Google Bookmarks Twitter Technorati Favorites Google Gmail LinkedIn Google Reader WordPress Slashdot Reddit Delicious Multiply Digg Identi.ca Share/Bookmark



Tags deste artigo: linux security free software segurança hardening hacking sysadmin