IndiceBRTableOfContents |
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