Migrando servidores Linux para autenticação LDAP

Dedico esse artigo a minha filha Hayla, que vai nascer, e a minha esposa que sempre me apoiou. O objetivo do mesmo é migrar servidores Linux para usar a autenticação LDAP. De certa forma esse artigo seria um complemento de um artigo anterior postado por mim que agiliza a busca em base LDAP. "Seja Livre Use Linux"!

[ Hits: 55.674 ]

Por: Alessandro Carvalho da Fonseca (darth_acf) em 13/11/2008 | Blog: https://orcid.org/0000-0003-3489-878X


SAMBA com LDAP



Instalar os seguinte pacotes:

# apt-get install samba smbclient smbldap-tools libnss-ldap samba-doc acl

Copiar o arquivo samba.schema, disponível no pacote samba-doc:

# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

Deixar o arquivo /etc/ldap/slapd.conf como segue:

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions

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/samba.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        256

# Where the dynamically loaded modules are stored
modulepath      /usr/lib/ldap
moduleload      back_bdb

# The maximum number of entries that is rned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend         bdb
checkpoint 512 30

# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend                <other>

# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs

database        bdb

# The base of your directory in database #1
suffix          "dc=hayla,dc=com,dc=br"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
#rootdn          "cn=admin,dc=hayla,dc=com,dc=br"
#rootpw         x

# Where the database file are physically stored for database #1

directory       "/var/lib/ldap"

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057
# for more information.

# Number of objects that can be locked at the same time.

dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index           objectClass,uidNumber,gidNumber eq
index           cn,sn,uid,displayName pres,sub,eq
index           memberUID,mail,givenname eq,subinitial
index           sambaSID,sambaPrimaryGroupSID,sambaDomainName eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
#access to attrs=userPassword,shadowLastChange
#        by dn="cn=admin,dc=hayla,dc=com,dc=br" write
#        by anonymous auth
#        by self write
#        by * none


access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
   by dn="cn=admin,dc=hayla,dc=com,dc=br" write
   by anonymous auth
   by anonymous read
   by self write
   by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.

access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.

access to *
   by dn="cn=admin,dc=hayla,dc=com,dc=br" write
   by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=hayla,dc=com,dc=br" write
#        by dnattr=owner write

# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>

# The base of your directory for database #2
#suffix         "dc=debian,dc=org"

Criar o arquivo /etc/samba/user.ldif:

dn: ou=Usuarios,dc=hayla,dc=com,dc=br
ObjectClass: top
ObjectClass: OrganizationalUnit
ou: Usuarios

Criar o arquivo /etc/samba/computers.ldif:

dn: ou=Computadores,dc=hayla,dc=com,dc=br
ObjectClass: top
ObjectClass: OrganizationalUnit
ou: Computadores

Criar o arquivo /etc/samba/groups.ldif:

dn: ou=Grupos,dc=hayla,dc=com,dc=br
ObjectClass: top
ObjectClass: OrganizationalUnit
ou: Grupos

Editar o arquivo /etc/samba/smb.conf:

#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which
# are not shown in this example
#
# Any line which starts with a ; (semi-colon) or a # (hash)
# is a comment and is ignored. In this example we will use a #
# for commentary and a ; for parts of the config file that you
# may wish to enable
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic
# errors.
#

[global]
workgroup = ldap
netbios name = master
username map = /etc/samba/smbusers
add user script = /usr/sbin/smbldap-useradd -m -a "%u"
delete user script = /usr/sbin/smbldap-userdel "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
add machine script = /usr/sbin/smbldap-useradd -a -w "%u"
domain logons = Yes
prefered master = Yes
wins support = Yes
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=hayla,dc=com,dc=br
ldap machine suffix = ou=Computadores
ldap user suffix = ou=Usuarios
ldap group suffix = ou=Grupos
ldap admin dn = cn=admin,dc=hayla,dc=com,dc=br
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
#invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
socket options = TCP_NODELAY

Armazenar a senha do openldap para uso do servidor Samba (mesma definida no slapd):

# smbpasswd -w SENHA_AQUI

Reiniciar o servior Samba:

# /etc/init.d/samba restart

Criar um arquivo smbusers:

# vim /etc/samba/smbusers

Anotar a identificação do domínio:

# net getlocalsid

Página anterior     Próxima página

Páginas do artigo
   1. Procedimentos iniciais
   2. Autenticação de sistemas Linux em base LDAP
   3. SAMBA com LDAP
   4. Configurações do smbldap-tools
Outros artigos deste autor

O espaço e a segurança cibernética

Leitura recomendada

Servidor de arquivos Samba (parte 1) - Entendendo de forma básica o funcionamento no Insigne Momentum 5.0

Impressora virtual no Samba para gerar arquivos PDF

Servidor Samba PDC para Windows XP em 3 passos

Resolução de Nomes (e não IP) no Gerenciador de Arquivos - Linux x Linux

Configurando Samba e Windows XP

  
Comentários
[1] Comentário enviado por ErhnamDjinm em 14/11/2008 - 08:14h

Só uma observação... A grande maioria dos tutoriais colocam a configuração do PAM como opcional, mas na verdade, quando se configura o Samba com LDAP, é um procedimento obrigatório, senão o samba não entende a senha armazenada pelo LDAP e os usuários não conseguem autenticar.

[2] Comentário enviado por ranzes em 14/11/2008 - 14:33h

Não concordo com a sua colocação amigo , de onde você tirou que é obrigatório ter o módulo PAM para que o samba se comunique corretamente com LDAP?
Eu tenho aqui Slackware 12 com LDAP Samba e mais um monte de serviços rodando tudo 100% e sequer tenho PAM em algum dos servidores.
Para seu conhecimento o samba automaticamente quando uma vez configurado corretamente, ele busca no ldap o atributo: sambaNTPassword corretamente criptografado pelo utilitário smbldap-tools para autenticar.

[3] Comentário enviado por ErhnamDjinm em 14/11/2008 - 19:00h

Eu ví em um tutorial que no momento está fora do ar, era no Wiki do Gentoo. Realmente, o Slack é excessão porque não usa PAM.
Mas já configurei no Debian e no Gentoo, e em ambos só consegui autenticar nas estações Windows depois de configurar o PAM. Se você souber oque estou fazendo de errado por favor me explique, eu realmente tentei fazer sem PAM.

[4] Comentário enviado por walber em 14/11/2008 - 19:16h

Estou tendo esse problema durante a execução do: smbldap-populate


failed to add entry: objectclass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 7.
adding new entry: uid=nobody,ou=Usuarios,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #4 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 8.
adding new entry: cn=Domain Admins,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 9.
adding new entry: cn=Domain Users,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 10.
adding new entry: cn=Domain Guests,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 11.
adding new entry: cn=Domain Computers,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 12.
adding new entry: cn=Administrators,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 16.
adding new entry: cn=Account Operators,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 18.
adding new entry: cn=Print Operators,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 19.
adding new entry: cn=Backup Operators,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 20.
adding new entry: cn=Replicators,ou=Grupos,dc=ldap,dc=com,dc=br
failed to add entry: objectclass: value #2 invalid per syntax at /usr/sbin/smbldap-populate line 495, <GEN1> line 21.
adding new entry: sambaDomainName=ldap,dc=ldap,dc=com,dc=br
failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 495, <GEN1> line 21.

Please provide a password for the domain root:
/usr/sbin/smbldap-passwd: user root doesn't exist


Pode me ajudar?

No mais ocorreu tudo certo, desde já agradeço.

[5] Comentário enviado por darth_acf em 14/11/2008 - 22:02h

Antes de executar o comando verifique:

1. se o samba (445/tcp open microsoft-ds,
139/tcp open netbios-ssn

e o ldap estao startados (139/tcp open netbios-ssn)

Para isso execute o comando :
netstat -nlt ou se preferir
apt-get install nmap

Fenix:~# nmap localhost


Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-11-14 20:47 AMST
Interesting ports on localhost (127.0.0.1):
Not shown: 1670 closed ports
PORT STATE SERVICE
80/tcp open http
111/tcp open rpcbind
113/tcp open auth
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds


2. Reveja os passos:
Criar o arquivo /etc/samba/user.ldif:

dn: ou=Usuarios,dc=hayla,dc=com,dc=br
ObjectClass: top
ObjectClass: OrganizationalUnit
ou: Usuarios

Criar o arquivo /etc/samba/computers.ldif:

dn: ou=Computadores,dc=hayla,dc=com,dc=br
ObjectClass: top
ObjectClass: OrganizationalUnit
ou: Computadores

Criar o arquivo /etc/samba/groups.ldif:

dn: ou=Grupos,dc=hayla,dc=com,dc=br
ObjectClass: top
ObjectClass: OrganizationalUnit
ou: Grupos


2.1.1 Reveja os arquivos
smbldap_bind.conf e smbldap.conf
e teste novamente
o comando smbldap-populate

[6] Comentário enviado por walber em 17/11/2008 - 08:10h

ok, obrigado irei testar hj, e posto aqui.

[7] Comentário enviado por walber em 17/11/2008 - 18:25h

Puts darth_acf revi todos os passos e num rolou continua o mesmo problema, eu até logo no ldap, cria OUs, mais na hora de criar users da pau, o pode ser, pois segui a risca seu tuto.

[8] Comentário enviado por dailson em 18/11/2008 - 13:40h

Qual é o endereço do seu artigo anterior que vc falou no cabeçalho do artigo??

[9] Comentário enviado por darth_acf em 19/11/2008 - 09:53h

e esse o link dailson
http://www.vivaolinux.com.br/etc/ldap.conf-darth_acf

[10] Comentário enviado por darth_acf em 19/11/2008 - 10:05h

walber voce esta usando
o comando smbldap-useradd -a -m usuariox para criar usuario?



rode um nmap ou netstat -nlt e mostra o resultado para nos!!

[11] Comentário enviado por tiagotavares em 30/12/2008 - 19:56h

Tá, criamos todos aqueles arquivos .ldif. E agora? Não temos colocar essas entradas na base? Ou eu não entendi a parada direito?
Tipo, não teriamos que usar o comando #ldapadd -x -D -W -f user.ldif/computers.ldif/groups.ldif para que sejam criados as OU's Usuários, Computadores e Grupos?

Um abraço!

[12] Comentário enviado por darth_acf em 31/12/2008 - 09:22h

exatamente antes de prosseguir precisa povoar a base
no caso
slapadd -l computers.ldif
e assim por diante

qualquer duvida estou a disposição

[13] Comentário enviado por paulo.r.rj em 21/01/2009 - 12:04h

Boa tarde, tenho uma duvido sobre a configuração do sistema ldap + sampa, na empresa eu que presto serviço já esta configurado o servidor, temos maquinas de xeros com autenticação via ldap, sendo usuário e senha, no micro o openldaoo formato da autenticação é cn=usuario,ou=pasta,o=base depois senha, na xerox temos que prencher todos estes dado fica complicado para o usuário, tenho envista que o erro esta no configuração do ldap, será que tem agum modelo de script

[14] Comentário enviado por gssilva em 04/05/2010 - 20:34h

Muito bom cara...

Pessoal, os módulos do PAM para LDAP somente são obrigatórios se serviços locais forem usá-lo para autenticação de usuários que somente existem na base de dados. O Samba não precisa do PAM para autenticar usuários da base LDAP, ele vai buscar direto nela o que precisa! Quanto aos ldif' s, é preciso configurar o arquivo que os clientes LDAP usam para fazer pesquisas na base, que, em Debian e derivados é /etc/ldap/ldap.conf.

[15] Comentário enviado por abgiacobe em 18/11/2011 - 11:21h

Alessandro, Eu tenho um servidor PDC e mais 10 servidores Linux Debian V5 que são servidores de arquivos atualmente eu tenho o samba configurado neles , mas gostaria que esses servidores autenticassem pelo LDAP do PDC. Por que cada vez que preciso criar um usuário acabo tendo que criar no PDC e em cada servidor colocando a mesma senha isso me impede de criar um política de senhas tornando a minha rede uma droga. Me da um help por favor por que não faço idéia de como isso é configurado.

Outro serviço que tenho nesses servidores Linux é o SVN que gostaria que autenticasse pelo LDAP também não sei se para isso basta só colocar o servidor para autenticar com LDAP ou se vou ter que fazer isso no servidor e no SVN também.

Ajuda aí por favor!!!!!!

[16] Comentário enviado por darth_acf em 28/11/2011 - 14:43h

ola amigo, manda seu email que irei repassar para vcs uns tutoriais para auxilia-lo na migração

[17] Comentário enviado por marcosbuganeme em 23/03/2012 - 14:56h

Olá amigo, o tópico foi criado a muito anos atrás, mas vejo que ainda responde nele.
Estou querendo montar um sistema no ubuntu que rode SAMBA + APACHE + SQUID que autentique os usuários com o LDAP, poderia me dar uma mãozinha em bons materiais?
Vejo que você têm um vasto conhecimento na área, acho que fica mais fácil aprender com quem sabe na prática.
email para contato: [email protected]
Obrigado, aguardo uma resposta.

[18] Comentário enviado por stefanols em 08/03/2013 - 12:47h

Pô bicho, e os direitos autorais dos co-autores? :( kkkk. Abraço Alessandro.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts