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.663 ]

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


Configurações do smbldap-tools



Copiar os arquivos smbldap_bind.conf e smbldap.conf:

# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/


Editar o arquivo /etc/smbldap-tools/smbldap_bind.conf:

############################

# Credential Configuration #

############################

# Notes: you can specify two differents configuration if you use a

# master ldap for writing access and a slave ldap server for reading access

# By default, we will use the same DN (so it will work for standard Samba

# release)


slaveDN="cn=admin,dc=hayla,dc=com,dc=br"

slavePw="x"

masterDN="cn=admin,dc=hayla,dc=com,dc=br"

masterPw="x"



Onde "x" é a senha definida no slapd.



Editar o arquivo /etc/smbldap-tools/smbldap.conf:




# $Source: /opt/cvs/samba/smbldap-tools/smbldap.conf,v $
# $Id: smbldap.conf,v 1.18 2005/05/27 14:28:47 jtournier Exp $
#
# smbldap-tools.conf : Q & D configuration file for smbldap-tools

# This code was developped by IDEALX (http://IDEALX.org/) and
# contributors (their names can be found in the CONTRIBUTORS file).
#
# Copyright (C) 2001-2002 IDEALX
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# USA.

# Purpose :
# . be the configuration file for all smbldap-tools scripts

#
# General Configuration
#

# Put your own SID. To obtain this number do: "net getlocalsid".
# If not defined, parameter is taking from "net getlocalsid" return

SID="S-1-5-21-1821302853-543241946-2264962988"

# Domain name the Samba server is in charged.
# If not defined, parameter is taking from smb.conf configuration file
# Ex: sambaDomain="IDEALX-NT"

sambaDomain="ldap"

#
# LDAP Configuration
#

# Notes: to use to dual ldap servers backend for Samba, you must patch
# Samba with the dual-head patch from IDEALX. If not using this patch
# just use the same server for slaveLDAP and masterLDAP.
# Those two servers declarations can also be used when you have
# . one master LDAP server where all writing operations must be done
# . one slave LDAP server where all reading operations must be done
# (typically a replication directory)

# Slave LDAP server
# Ex: slaveLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"

slaveLDAP="127.0.0.1"

# Slave LDAP port
# If not defined, parameter is set to "389"
slavePort="389"

# Master LDAP server: needed for write operations
# Ex: masterLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
masterLDAP="127.0.0.1"

# Master LDAP port
# If not defined, parameter is set to "389"
masterPort="389"

# Use TLS for LDAP
# If set to 1, this option will use start_tls for connection
# (you should also used the port 389)
# If not defined, parameter is set to "1"
ldapTLS="0"

# How to verify the server's certificate (none, optional or require)
# see "man Net::LDAP" in start_tls section for more details
verify="none"

# CA certificate
# see "man Net::LDAP" in start_tls section for more details
#cafile="/etc/opt/IDEALX/smbldap-tools/ca.pem"

# certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
#clientcert="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.pem"

# key certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
#clientkey="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.key"

# LDAP Suffix
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=hayla,dc=com,dc=br"

# Where are stored Users
# Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for usersdn
usersdn="ou=Usuarios,${suffix}"

# Where are stored Computers
# Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for computersdn
computersdn="ou=Computadores,${suffix}"

# Where are stored Groups
# Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for groupsdn
groupsdn="ou=Grupos,${suffix}"

# Where are stored Idmap entries (used if samba is a domain member server)
# Ex: groupsdn="ou=Idmap,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for idmapdn
idmapdn="ou=Idmap,${suffix}"

# Where to store next uidNumber and gidNumber available for new users and groups
# If not defined, entries are stored in sambaDomainName object.
# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
sambaUnixIdPooldn="sambaDomainName=ldap,${suffix}"

# Default scope Used
scope="sub"

# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="SSHA"

# if hash_encrypt is set to CRYPT, you may set a salt format.
# default is "%s", but many systems will generate MD5 hashed
# passwords if you use "$1$%.8s". This parameter is optional!
crypt_salt_format="%s"

#
# Unix Accounts Configuration
#

# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/bash"

# Home directory
# Ex: userHome="/home/%U"
userHome="/home/%U"

# Default mode used for user homeDirectory
userHomeDirectoryMode="700"

# Gecos
userGecos="System User"

# Default User (POSIX and Samba) GID
defaultUserGid="513"

# Default Computer (Samba) GID
defaultComputerGid="515"

# Skel dir
skeletonDir="/etc/skel"

# Default password validation time (time in days) Comment the next line if
# you don't want password to be enable for defaultMaxPasswordAge days (be
# careful to the sambaPwdMustChange attribute's value)
defaultMaxPasswordAge="45"

#
# SAMBA Configuration
#

# The UNC path to home drives location (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon home'
# directive and/or disable roaming profiles
# Ex: userSmbHome="\\PDC-SMB3\%U"
userSmbHome="\\PDC-SRV\%U"

# The UNC path to profiles locations (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon path'
# directive and/or disable roaming profiles
# Ex: userProfile="\\PDC-SMB3\profiles\%U"
userProfile="\\PDC-SRV\profiles\%U"

# The default Home Drive Letter mapping
# (will be automatically mapped at logon time if home directory exist)
# Ex: userHomeDrive="H:"
userHomeDrive="H:"

# The default user netlogon script name (%U username substitution)
# if not used, will be automatically username.cmd
# make sure script file is edited under dos
# Ex: userScript="startup.cmd" # make sure script file is edited under dos
userScript="logon.bat"

# Domain appended to the users "mail"-attribute
# when smbldap-useradd -M is used
# Ex: mailDomain="idealx.com"
mailDomain="4linux.com.br"

#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#

# Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but
# prefer Crypt::SmbHash library
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"

# Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm)
# but prefer Crypt:: libraries
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"

# comment out the following line to get rid of the default banner
# no_banner="1"

Executar o comando:

# smbldap-populate

Testando SAMBA com LDAP:

Com o samba e o slapd rodando, adicione o usuário root:

# smbldap-usearadd -a root

Dê uma senha para o usuário root:

# smbldap-passwd root

Adicione um usuário comum e dê uma senha para ele:

# smbldap-useradd -a -m myuser
# smbldap-passwd myuser


Veja os direitos que podem ser dados aos usuários comuns:

# net rpc rights list
PASSWORD: coloque_a_senha_que_foi_dada_ao_root_do_slapd

Garantindo direito do myuser adicionar máquinas ao domínio:

# net rpc rights grant SeMachineAccountPrivilege myuser
PASSWORD: coloque_a_senha_que_foi_dada_ao_root_do_slapd

Página anterior    

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

Ativar Log de Acessos do Samba no OpenMediaVault

Resara Server Configuration

Servidor Samba PDC para Windows XP em 3 passos

Samba - Dançando conforme a música

Backup de arquivos das estações de sua rede com Samba PDC

  
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