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