Come configurare un Server LDAP su linux

 

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