Vai al contenuto
GLGiuseppe Lanza Scrivimi

Configurare un server LDAP

Questa guida viene dall’archivio del mio vecchio sito ed è stata scritta per versioni di sistema di quegli anni. I concetti restano validi, ma prima di applicare i comandi verifica che siano adatti alla tua versione.

Configurazione di un Servizio di Directory

Un servizio di directory ha bisogno innanzitutto di una struttura ad albero dei nomi (server DNS) e di una analoga struttura associata basata sul protocollo LDAP (slapd).

Inoltre per fornire anche il servizio di file server a macchine Windows avrete bisogno del server SAMBA (samba) e per utilizzare la crittografia basata sul protocollo Kerberos avete bisogno del server Kerberos e del software per il server delle chiavi (krb5-admin-server e krb5-kdc).

Questo vi permetterà di avere un servizio di directory scalabile che potrete utilizzare come backend per tutti i servizi della vostra azienda , dai vostri servizi di posta ai vostri utenti remoti che si collegano via RADIUS, al server FTP.

Installazione

Vi servono i pacchetti :

#apt-get -y install samba

#apt-get -y install smbldap-tools

#apt-get -y install krb5-ftpd

#apt-get -y install krb5-telnetd

Descrizione dell'architettura

Consideriamo una configurazione tipo con :

LDAP master con DNS master on-board

LDAP replica con DNS slave per fault tolerance

un file server SAMBA come PDC

un altro file server SAMBA come BDC

un KDC

i servers protetti da Kerberos (tutti i clients e le 2 macchine SAMBA + la replica LDAP)

ogni entry citata è su una macchina separata.

Configurazione del master LDAP

Innanzitutto procedere alla configurazione del DNS master creando la zona diretta e l'inversa per il vostro dominio.

Pertanto installate il pacchetto bind9 con il comando :

#apt-get -y install bind9

ed effettuate le configurazioni come indicato nel wiki Configurare un server DNS.

Fatto ciò installiamo poi i pacchetti necessari per il server LDAP :

#apt-get -y install slapd

#apt-get -y install migrationtools

#apt-get -y install ldap-utils

qualora vogliamo amministrare il server LDAP direttamente dal terminale e non da una workstation remota installiamo anche il pacchetto per la gestione grafica del server LDAP :

#apt-get -y install gq

Poi procediamo come segue :

· nel file /usr/share/migrationtools/migrate_common.ph effetuaimo le sostituzioni :

$DEFAULT_MAIL_DOMAIN = vostrodominio

$DEFAULT_BASE = "dc=miodominio,dc=com"

$EXTENDED_SCHEMA = 1

· poi eseguire come root i comandi :

#cd /usr/share/migrationtools

#./migrate_base.pl > /etc/ldap/base.ldif

#./migrate_hosts.pl /etc/hosts > /etc/ldap/hosts.ldif

#./migrate_group.pl /etc/group > /etc/ldap/group.ldif

#./migrate_passwd.pl /etc/passwd > /etc/ldap/passwd.ldif

#slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/base.ldif

#slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/hosts.ldif

#slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/group.ldif

#slapadd -b "dc=mydomain,dc=com" -f /etc/ldap/passwd.ldif

· generiamo poi le password dell'utente admin :

#slappasswd -h {crypt} -s adminpassword

· a questo punto testiamo la configurazione con il comando :

#ldapsearch -x -H ldap://IP master LDAP -b "dc=miodominio,dc=com" "(cn=nomeutente)"

· modificare il file /etc/ldap/slapd.conf come segue :

replica host = replicaFQDN bindmethod=simple \

binddn="cn=replicator,ou=miaOU,dc=miodominio,dc=com" \
credentials=replicatorpassword

· installare l'utility smbldap-tools come root :

#apt-get -y install smbldap-tools

· eseguire il comando :

#cp /usr/share/doc/smbldap-tools/samba.schema /etc/ldap/schema/samba.schema

ed inserire nel file /etc/ldap/slapd.conf dopo l'ultima direttiva include.... quella che segue :

include /etc/ldap/schema/samba.schema

Ora procediamo alla configurazione del servizio di autenticazione crittografata installando il pacchetto Kerberos come segue :

#apt-get -y install krb5-kdc

#apt-get -y install krb5-admin-server

eseguire come root i seguenti comandi :

#kdb5_util create -s

#kadmin.local

#kadmin: ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/admin

#kadmin: ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/changepw

#kadmin: addprinc -pw secret krbadm@MIODOMINIO.COM

#kadmin: q

#/etc/init.d/krb5-kdc start

#/etc/init.d/krb5-admin-server start

Configurazione della Replica LDAP

Innanzitutto procedere alla configurazione del DNS slave (ricordiamo che bisogna soltanto modificare il file /etc/bind9/named.conf.local aggiungendovi la zona diretta e l'inversa del vostro dominio e specificando l'IP del DNS master per la sincronizzazione delle zone).

Pertanto installate il pacchetto bind9 con il comando :

#apt-get -y install bind9

ed effettuate le configurazioni come indicato nel wiki Configurare un server DNS.

Procedere come segue :

· in /etc/ldap/slapd.conf inserire direttive :

referral ldap://<FQDN o IP LDAP master>

updatedn "cn=replicator,ou=miaOU,dc=miodominio,dc=com"

updateref ldap://<FQDN o IP LDAP master>

access to attrs = userPassword,sambaLMPassword,sambaNTPassword

by dn = "cn=admin,ou=miaOU,dc=miodominio,dc=com" write

by dn = "cn=samba,ou=miaOU,dc=miodominio,dc=com" write

by dn = "cn=nssuser,ou=miaOU,dc=miodominio,dc=com" read

by anonymous auth

by self write

by * none

access to *

by dn = "cn=admin,ou=miaOU,dc=miodominio,dc=com" write

by anonymous auth

by * none

N.B. : ricordatevi di creare nel DB LDAP sia l'utente samba che l'utente nssuser.

Se volete usate l'utility gq da installare o sul server LDAP o su una workstation remota da cui amministrare master e replica LDAP.

· installare i pacchetti per il supporto all'autenticazione Kerberos lato client

#apt-get -y install libpam-krb5

#apt-get -y install krb5-user

· configurare i pacchetti per il supporto all'autenticazione Kerberos lato client

· modificare il file /etc/pam.d/common-account come segue :

account sufficient pam_krb5.so

account required pam_unix.so

· modificare il file /etc/pam.d/common-auth come segue :

auth sufficient pam_krb5.so nullok_secure

auth required pam_unix.so nullok_secure

· modificare il file /etc/pam.d/common-session come segue :

session sufficient pam_krb5.so

session required pam_unix.so

Configurazione del PDC SAMBA

· installate il pacchetto samba nel modo seguente :

#apt-get -y install samba

· modificate il file /etc/samba/smb.conf come segue :

workgroup = MIODOMINIO.COM

domain master = yes

domain logons = yes

encrypt passwords = yes

security = user

os level = 65

wins support = yes

name resolver order = wins lmhosts hosts bcast

logon path = \\%N\profiles\%U

logon drive = H:

logon home = \\%N\%U\winprofile

logon script = logon.bat

log level = 1

printcap name = CUPS

show add printer wizard = No

shutdown script = /var/lib/samba/scripts/shutdown.sh

abort shutdown script = /sbin/shutdown -c

utmp = Yes

map acl inherit = Yes

printing = cups

passdb backend = ldapsam:ldap://<IP LDAP master>/ ldap://<IP LDAP replica>/

ldap admin dn = cn=admin,dc=miodominio,dc=com

ldap suffix = dc=miodominio,dc=com

ldap group suffix = ou=Groups

ldap user suffix = ou=People

ldap machine suffix = ou=Computers

ldap idmap suffix = ou=People

add user script = /usr/sbin/smbldap_useradd -m '%u'

delete user script = /usr/sbin/smbldap-userdel -r "%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"

add machine script = /usr/sbin/smbldap_useradd -w '%u'

set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

ldap delete dn = Yes

[homes]

comment = Home Directories

path = /home/%U

browseable = yes

writable = yes

create mask = 0775

directory mask = 0775

valid users = %S

[netlogon]

comment = Network Logon Service

path = /usr/local/netlogon

guest ok = yes

writable = yes

share modes = no

browseable = yes

[profiles]

path = /var/lib/samba/profiles

read only = no

create mask = 0600

directory mask = 0700

browseable = yes

writable = yes

directory mode = 0755

[printers]

comment = All Printers

browseable = no

path = /tmp

printable = yes

public = no

writable = no

create mode = 0700

[print$]

comment = Printer Drivers

path = /var/lib/samba/printers

browseable = yes

read only = yes

guest ok = no

[whole_linux_server]

comment = whole_linux_box

path = /

valid users = admin root dtrask

admin users = admin root dtrask

write list = admin root dtrask

public = no

writable = yes

· create la share var/lib/samba/profiles e rendetela leggibile e scrivibile da tutti gli utenti del sistema :

#mkdir /var/lib/samba/profiles && chmod -R 777 /var/lib/samba/profiles

questo è necessario poichè i clients Microsoft accedono in scrittura a tale directory per creare il profilo degli utenti di rete.

· creare l'utente samba e memorizzarne la password nel file

/var/lib/samba/secrets.tdb come segue :

#read -s -p "Digita la password dell'utente samba : " LDAP_BINDPW

#smbpasswd -w $LDAP_BINDPW

· memorizzare il SID del server nel file /var/lib/samba/secrets.tdb

come segue :

#/etc/init.d/samba start

#net getlocalsid

#net rpc getsid miodominio.com

· installare e configurare il pacchetto smbldap-tools come segue :

#apt-get -y install smbldap-tools

· controllare la configurazione dei files :

smbldap.conf

smbldap-bind.conf

· lanciare i comandi :

#smbldap-populate

#smbldap-passwd Administrator

#net rpc join miodominio.com -UAdministrator%password

· creare i nuovi utenti utilizzando le utilities smbldap-tools come negli esempi :

#smbldap-useradd -a -g 512 -m -s /bin/sh -d /home/user_admin -F "" -P user-admin

consultate le man pages per tutte le opzioni (il valore di -F è il roaming profile dell'utente).

· testate la vostra configurazione tramite i comandi :

#smbclient //SRV/public -Uuser_admin%password

#pdbedit -Lv user_admin

· aggiornate le policies SAMBA con i comandi :

#pdbedit -P "password_history" -C 5

#pdbedit -P "maximum_password_age" -C 180

#pdbedit -P "min_password_length" -C 6

· installare i pacchetti per il supporto all'autenticazione Kerberos lato client

#apt-get -y install libpam-krb5

#apt-get -y install krb5-user

· configurare i pacchetti per il supporto all'autenticazione Kerberos lato client

· modificare il file /etc/pam.d/common-account come segue :

account sufficient pam_krb5.so

account required pam_unix.so

· modificare il file /etc/pam.d/common-auth come segue :

auth sufficient pam_krb5.so nullok_secure

auth required pam_unix.so nullok_secure

· modificare il file /etc/pam.d/common-session come segue :

session sufficient pam_krb5.so

session required pam_unix.so

Altre utilità LDAP

Se dovete modificare le passwords agli utenti del DB LDAP creato potete usare il comando :

#ldappasswd -x -D "cn=admin,dc=miodominio,dc=com" -W -s nuovapasswordutente

"cn=utente,ou=miaOU,dc=miodominio,dc=com"

Configurazione del BDC SAMBA

· installate il pacchetto samba nel modo seguente :

#apt-get -y install samba

· modificate il file /etc/samba/smb.conf come segue :

workgroup = MIODOMINIO.COM

domain master = no

domain logons = yes

encrypt passwords = yes

security = user

os level = 65

wins support = yes

name resolver order = wins lmhosts hosts bcast

logon path = \\%N\profiles\%U

logon drive = H:

logon home = \\%N\%U\winprofile

logon script = logon.bat

log level = 1

printcap name = CUPS

show add printer wizard = No

shutdown script = /var/lib/samba/scripts/shutdown.sh

abort shutdown script = /sbin/shutdown -c

utmp = Yes

map acl inherit = Yes

printing = cups

passdb backend = ldapsam:ldap://<IP LDAP master>/ ldap://<IP LDAP replica>/

ldap admin dn = cn=admin,dc=miodominio,dc=com

ldap suffix = dc=miodominio,dc=com

ldap group suffix = ou=Groups

ldap user suffix = ou=People

ldap machine suffix = ou=Computers

ldap idmap suffix = ou=People

add user script = /usr/sbin/smbldap_useradd -m '%u'

delete user script = /usr/sbin/smbldap-userdel -r "%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"

add machine script = /usr/sbin/smbldap_useradd -w '%u'

set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

ldap delete dn = Yes

[homes]

comment = Home Directories

path = /home/%U

browseable = yes

writable = yes

create mask = 0775

directory mask = 0775

valid users = %S

[netlogon]

comment = Network Logon Service

path = /usr/local/netlogon

guest ok = yes

writable = yes

share modes = no

browseable = yes

[profiles]

path = /var/lib/samba/profiles

read only = no

create mask = 0600

directory mask = 0700

browseable = yes

writable = yes

directory mode = 0755

[printers]

comment = All Printers

browseable = no

path = /tmp

printable = yes

public = no

writable = no

create mode = 0700

[print$]

comment = Printer Drivers

path = /var/lib/samba/printers

browseable = yes

read only = yes

guest ok = no

[whole_linux_server]

comment = whole_linux_box

path = /

valid users = admin root dtrask

admin users = admin root dtrask

write list = admin root dtrask

public = no

writable = yes

· create la share var/lib/samba/profiles e rendetela leggibile e scrivibile da tutti gli utenti del sistema :

#mkdir /var/lib/samba/profiles && chmod -R 777 /var/lib/samba/profiles

questo è necessario poichè i clients Microsoft accedono in scrittura a tale directory per creare il profilo degli utenti di rete.

· il comando wins_server = yes unito ad una opportuna (vedi sezione dedicata alla configurazione

dei clients) qualifica il server SAMBA come WINS server e permette pertanto di impedire di inutili broadcasts dei clients per localizzare il loro NETBIOS server.

· acquisire il SID del PDC con il comando :

#net rpc getsid

· installare i pacchetti per il supporto all'autenticazione Kerberos lato client

#apt-get -y install libpam-krb5

#apt-get -y install krb5-user

· configurare i pacchetti per il supporto all'autenticazione Kerberos lato client

· modificare il file /etc/pam.d/common-account come segue :

account sufficient pam_krb5.so

account required pam_unix.so

· modificare il file /etc/pam.d/common-auth come segue :

auth sufficient pam_krb5.so nullok_secure

auth required pam_unix.so nullok_secure

· modificare il file /etc/pam.d/common-session come segue :

session sufficient pam_krb5.so

session required pam_unix.so

Configurazione dei clients

· installare come root la libreria per il supporto LDAP con il comando :

#apt-get -y install libnss-ldap

· modificare il file /etc/ldap/ldap.conf come segue :

BASE dc=miodominio,dc=com

URI ldap://<FQDN o IP LDAP master> ldap://<FQDN o IP LDAP replica>

· modificare il file /etc/pam.d/common-account come segue :

account sufficient pam_ldap.so

account required pam_unix.so

· modificare il file /etc/pam.d/common-auth come segue :

auth sufficient pam_ldap.so nullok_secure

auth required pam_unix.so nullok_secure

· modificare il file /etc/pam.d/common-session come segue :

session sufficient pam_ldap.so

session required pam_unix.so

N.B. : se volete usare soltanto LDAP e non permettere l'accesso ai clients agli utenti locali dovete usare nei 3 files visti le direttive :

account required pam_ldap.so

account required pam_ldap.so nullok_secure

account required pam_ldap.so

· eseguire il join al dominio SAMBA con il comando :

#net rpc join miodominio.com -UAdministrator%password

· per poter accedere al filesystem SAMBA installare l'utility smbfs :

#apt-get -y install smbfs

· per montare un filesystem remoto SAMBA utilizzare il comando :

#smbmount //SRV/public /mnt/smb -o username=user_admin

· se volete abilitare l'automount del filesystem SAMBA utilizzate il programma

autofs installandolo come segue :

#apt-get -y install autofs

· ora modificate il file /etc/auto.master come segue :

/auto /etc/auto.smb

ed il file /etc/auto.smb come segue :

smb -fstype=smbfs,rw,guest ://SRV/public

e riavviate il servizio autofs con il comando :

#/etc/init.d/autofs restart

· ora per impedire il broadcast sulla rete per l'individuazione del server WINS

modificare il file /etc/samba/smb.conf come segue :

wins server = <IP o FQDN SAMBA PDC>

· installare i pacchetti per il supporto all'autenticazione Kerberos lato client

#apt-get -y install libpam-krb5

#apt-get -y install krb5-user

· configurare i pacchetti per il supporto all'autenticazione Kerberos lato client

· modificare il file /etc/pam.d/common-account come segue :

account sufficient pam_krb5.so

account required pam_unix.so

· modificare il file /etc/pam.d/common-auth come segue :

auth sufficient pam_krb5.so nullok_secure

auth required pam_unix.so nullok_secure

· modificare il file /etc/pam.d/common-session come segue :

session sufficient pam_krb5.so

session required pam_unix.so

.

Autore : Cristiano Valli

DsServer (l'ultima modifica è del 2005-12