24/05/2012 791522 Alessandro Brusò Installazione di una piattaforma Linux Server LDAP 07/04/2012 File Server Amministratore di sistema Domain Controller 2 1 24/05/2012 1 • Analisi 2 • Creazione del server virtuale 3 • Installazione e configurazione dei servizi 07/04/2012 Amministratore di sistema 3 Servizi Configurazione di rete Server LDAP (OpenLDAP) File Server (Samba) Domain Controller (Samba) 07/04/2012 Amministratore di sistema 4 2 24/05/2012 Configurazione di rete Nelle slide precedenti sono state abilitate due schede di rete per condividere la connessione Wi-Fi. Come prima cosa bisogna configurarle: sudo nano /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface # Interfaccia esterna auto eth0 iface eth0 inet dhcp # The secondary network interface # Interfaccia interna auto eth1 iface eth1 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 Ctrl-O Salva Ctrl-X Esci sudo /etc/init.d/networking restart 07/04/2012 Amministratore di sistema 5 LDAP LDAP è l’acronimo di Lightweight Directory Access Protocol (protocollo leggero di accesso alle directory). È un protocollo standard che fornisce un efficiente algoritmo di ricerca per l’interrogazione dei servizi di directory Oltra alla ricerca è possibile inserire/modificare/eliminare informazioni LDAP è solitamente utilizzato per l’autenticazione degli utenti e realizza l’SSO (Single Sign-On) ovvero tramite un’unica autenticazione un utente può accedere a tutte le risorse informatiche alle quali è abilitato LDAP è client-server: un client LDAP invia una richiesta ad un server LDAP che la processa, accede ad un directory database e restituisce i risultati È una versione semplificata del protocollo X.500 https://help.ubuntu.com/10.04/serverguide/C/network-authentication.html 07/04/2012 Amministratore di sistema 6 3 24/05/2012 LDAP Le informazioni vengono memorizzate in una struttura gerarchica, il DIT Directory Information Tree (albero delle informazioni di una directory) Una directory riservata (cn=config) nel DIT permette di configurare dinamicamente slapd senza dover riavviare il servizio L’informazione all’interno di una directory è organizzata in elementi (entry) Ogni entry è un insieme di attributi Ad ogni livello esiste un Relative Distinguished Name (RDN) che lo identifica L’unione degli RDN presi in successione dalla foglia alla radice costituisce il Distinguished Name (DN) http://it.wikipedia.org/wiki/LDAP 07/04/2012 Amministratore di sistema 7 Open LDAP Open LDAP è una implementazione open source di LDAP È costituito da tre componenti principali: • slapd (stand alone LDAP daemon), il demone LDAP • le librerie che implementano il protocollo LDAP • I software client per la gestione, l’interrogazione e la manutenzione del database (ldapsearch, ldapadd, ldapdelete, …) http://it.wikipedia.org/wiki/OpenLDAP http://www.openldap.org/ 07/04/2012 Amministratore di sistema 8 4 24/05/2012 LDAP: Installazione Installazione dei pacchetti sudo apt-get install slapd ldap-utils db4.8-util 07/04/2012 Amministratore di sistema 9 LDAP: Configurazione Configurazione dei pacchetti sudo dpkg-reconfigure slapd 07/04/2012 Amministratore di sistema 10 5 24/05/2012 LDAP: Configurazione Configurazione dei pacchetti Omettere la configurazione del server LDAP? Selezionare No Premere Invio 07/04/2012 Amministratore di sistema 11 LDAP: Configurazione Configurazione dei pacchetti Eliminare il database quando slapd verrà disinstallato? Selezionare No Premere Invio 07/04/2012 Amministratore di sistema 12 6 24/05/2012 LDAP: Configurazione Configurazione dei pacchetti Permettere l’utilizzo del protocollo LDAPv2 (obsoleto)? Selezionare No Premere Invio 07/04/2012 Amministratore di sistema 13 LDAP: Schemi La configurazione di default è minimale e serve solo a far partire il servizio Aggiungete i seguenti file schema: sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif Cos’è un file schema? LDAP raccoglie informazioni sulle risorse presenti in rete, lo schema è il tracciato record che descrive i campi delle risorse L’estensione LDIF sta per Lightweight Data Interchange Format 07/04/2012 Amministratore di sistema 14 7 24/05/2012 LDAP: Database Preparare uno script per il backend cd /etc/ldap sudo nano db.ldif # Load dynamic backend modules dn: cn=module{0},cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: {0}back_hdb # Create the database dn: olcDatabase={1}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcDbDirectory: /var/lib/ldap 07/04/2012 Amministratore di sistema 15 LDAP: Database Lo script continua… In evidenza: il dominio, l’amministratore LDAP e la sua password olcSuffix: dc=dominio,dc=it olcRootDN: cn=admin,dc=dominio,dc=it olcRootPW: dominiopwd olcDbConfig: {0}set_cachesize 0 2097152 0 olcDbConfig: {1}set_lk_max_objects 1500 olcDbConfig: {2}set_lk_max_locks 1500 olcDbConfig: {3}set_lk_max_lockers 1500 olcLastMod: TRUE olcDbCheckpoint: 512 30 olcDbIndex: uid eq,pres,sub olcDbIndex: cn,sn,mail pres,eq,approx,sub olcDbIndex: objectClass eq Ctrl-O per salvare e Ctrl-X per uscire da nano 07/04/2012 Amministratore di sistema 16 8 24/05/2012 LDAP: Database Lanciare lo script sudo ldapadd –Y EXTERNAL –H ldapi:/// -f db.ldif 07/04/2012 Amministratore di sistema 17 LDAP: Configurazione di base Password crittografata slappasswd -h {MD5} -s dominiopwd Verrà visualizzata la password crittografa e quest’ultima andrà inserita nel file di configurazione di base 07/04/2012 Amministratore di sistema 18 9 24/05/2012 LDAP: Configurazione di base Preparare lo script per il frontend con la configurazione di base cd /etc/ldap sudo nano base.ldif In evidenza la password crittografata ricavata con slappasswd dn: dc=dominio,dc=it objectClass: dcObject objectClass: organization o: dominio.it dc: dominio description: Dominio dn: cn=admin,dc=admin,dc=it objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin userPassword: {MD5}lIc0QwP/2k3HX5n+lwzefA== description: LDAP administrator 07/04/2012 Amministratore di sistema 19 LDAP: Configurazione di base Lanciare lo script sudo ldapadd –Y EXTERNAL – H ldapi:/// -f base.ldif 07/04/2012 Amministratore di sistema 20 10 24/05/2012 LDAP: ACL ACL acronimo di Access Control List, serve per regolamentare l’accesso alle directory. Create il file di configurazione: sudo nano config.ldif dn: cn=config changetype: modify dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootDN olcRootDN: cn=admin,cn=config dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {MD5}lIc0QwP/2k3HX5n+lwzefA== dn: olcDatabase={0}config,cn=config changetype: modify delete: olcAccess 07/04/2012 Amministratore di sistema 21 LDAP: ACL Lanciare lo script sudo ldapadd –Y EXTERNAL –H ldapi:/// -f config.ldif 07/04/2012 Amministratore di sistema 22 11 24/05/2012 LDAP: ACL ACL di lettura e scrittura sudo nano acl.ldif Nota: i comandi olcAccess vanno su un’unica riga dn: olcDatabase={1}hdb,cn=config add: olcAccess olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=dominio,dc=it" write by anonymous auth by self write by * none olcAccess: to dn.base="" by * read olcAccess: to * by dn="cn=admin,dc=dominio,dc=it" write by * read 07/04/2012 Amministratore di sistema 23 LDAP: ACL Lanciare lo script sudo ldapmodify –x –D cn=admin,cn=config –W –f acl.ldif 07/04/2012 Amministratore di sistema 24 12 24/05/2012 LDAP Sbagliato qualcosa? Potete ripetere la procedura dall’inizio avendo cura prima di rimuovere e poi di reinstallare ldap sudo apt-get remove slapd --purge sudo apt-get install slapd 07/04/2012 Amministratore di sistema 25 LDAP: NSS Il Network Service Switch determina l’ordine delle ricerche effettuate quando viene richiesta una certa informazione Modificare il file nsswitch.conf in modo che la precedenza spetti ai file locali e, in seconda battuta, usi LDAP per la risoluzione di utenti, password e gruppi. Con la seguente modifica, la precedenza spetti sempre ai file locali (/etc/passwd per gli utenti, /etc/shadow per le password, /etc/group per i gruppi), permettendo l’autenticazione dell’amministratore anche qualora il servizio LDAP non risultasse disponibile 07/04/2012 Amministratore di sistema 26 13 24/05/2012 LDAP: NSS Meglio fare un backup del file originale prima di modificarlo sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.bkp_20120407 Procedere con la modifica al file, sostituendo compat con files ldap sudo nano /etc/nsswitch.conf passwd: compat group: compat shadow: compat 07/04/2012 passwd: files ldap group: files ldap shadow: files ldap Amministratore di sistema 27 LDAP: PAM Pluggable Authentication Modules (PAM) è un meccanismo per integrare più schemi di autenticazione a basso livello in un’unica API ad alto livello, permettendo a programmi che necessitino di una forma di autenticazione, di essere scritti indipendentemente dallo schema di autenticazione sottostante utilizzato Installate il software necessario: sudo apt-get install libpam-ldap libnss-ldap auth-clientconfig 07/04/2012 Amministratore di sistema 28 14 24/05/2012 LDAP: PAM Configurazione LDAP Server URI ldapi:///localhost 07/04/2012 Amministratore di sistema 29 LDAP: PAM Configurazione DN of the search base: dc=dominio,dc=it 07/04/2012 Amministratore di sistema 30 15 24/05/2012 LDAP: PAM Configurazione LDAP version: 3 07/04/2012 Amministratore di sistema 31 LDAP: PAM Configurazione Make local root database admin: Yes 07/04/2012 Amministratore di sistema 32 16 24/05/2012 LDAP: PAM Configurazione LDAP database require login? No 07/04/2012 Amministratore di sistema 33 LDAP: PAM Configurazione LDAP account for root: cn=admin,dc=dominio,dc =it 07/04/2012 Amministratore di sistema 34 17 24/05/2012 LDAP: PAM Configurazione LDAP root account password: alessandro 07/04/2012 Amministratore di sistema 35 LDAP: PAM Configurazione Le modifiche vengono salvate nel file /etc/ldap.conf Fate un backup del file /etc/ldap/ldap.conf sudo cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.bkp_20120407 Quindi sovrascrivere il file /etc/ldap/ldap.conf sudo cp /etc/ldap.conf /etc/ldap/ldap.conf 07/04/2012 Amministratore di sistema 36 18 24/05/2012 LDAP: Profilo Create il profilo sudo nano /etc/auth-client-config/profile.d/ldap_profile [ldap_profile] nss_passwd=passwd: files ldap nss_group=group: files ldap nss_shadow=shadow: files ldap nss_netgroup=netgroup: files ldap 07/04/2012 Amministratore di sistema 37 LDAP: Profilo Create il profilo pam_auth=auth auth auth auth auth pam_account=account account account pam_password=password password password 07/04/2012 required sufficient required sufficient required sufficient sufficient required sufficient sufficient required pam_env.so pam_unix.so likeauth nullok pam_group.so use_first_pass pam_ldap.so use_first_pass pam_deny.so pam_unix.so pam_ldap.so pam_deny.so pam_unix.so nullok md5 shadow pam_ldap.so use_first_pass pam_deny.so Amministratore di sistema 38 19 24/05/2012 LDAP: Profilo Create il profilo pam_session=session session skel=/etc/skel/ session session required required pam_limits.so pam_mkhomedir.so required optional pam_unix.so pam_ldap.so Lanciate lo script sudo auth-client-config –a –p ldap_profile 07/04/2012 Amministratore di sistema 39 LDAP Riavviare il servizio: sudo /etc/init.d/slapd restart Test del servizio ldapsearch -x Non dovrete ottenere errori 07/04/2012 Amministratore di sistema 40 20 24/05/2012 SAMBA Scopo: interoperabilità tra Windows e Linux nei servizi di autenticazione e condivisione di file e stampanti da una qualsiasi piattaforma TCP/IP enabled. Limiti Alcune funzionalità di Active Directory non sono presenti in Samba Ad esempio mancano i gruppi nidificati e le Group Policy Vantaggi Risparmio sulle licenze Single Sign-On: con OpenLdap c’è un unico repository di utenti e password per tutti i servizi e i server aziendali, sia Windows che Linux 07/04/2012 Amministratore di sistema 41 SAMBA: Installazione Installazione dei pacchetti sudo apt-get install samba samba-doc smbclient smbldap-tools smbldap-tools sono script che permettono di gestire gruppi utenti e gruppi Samba/Unix salvando i dati sull’albero LDAP anziché sui file /etc/passwd, /etc/shadow e /etc/group In pratica sostituiscono i comandi Linux di gestione degli utenti Gli script vengono installati in /usr/bin e i file di configurazione in /etc/smbldap-tools 07/04/2012 Amministratore di sistema 42 21 24/05/2012 SAMBA: Schema Nello schema Samba sono specificati i campi per il nome utente, la password, la home, i gruppi, … che servono per memorizzare i dati nell’albero LDAP Il file samba.schema è già stato installato Copiatelo nella directory di openLDAP e decomprimetelo sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/ sudo gzip –d /etc/ldap/schema/samba.schema.gz 07/04/2012 Amministratore di sistema 43 SAMBA: OpenLDAP Schema Inserire le informazioni per Samba nel Directory Information Tree di LDAP nano /tmp/convert Ecco lo script: include include include include include 07/04/2012 /etc/ldap/schema/core.schema /etc/ldap/schema/collective.schema /etc/ldap/schema/corba.schema /etc/ldap/schema/cosine.schema /etc/ldap/schema/duaconf.schema Amministratore di sistema 44 22 24/05/2012 SAMBA: OpenLDAP Schema Lo script continua… include include include include include include include include /etc/ldap/schema/dyngroup.schema /etc/ldap/schema/inetorgperson.schema /etc/ldap/schema/java.schema /etc/ldap/schema/misc.schema /etc/ldap/schema/nis.schema /etc/ldap/schema/openldap.schema /etc/ldap/schema/ppolicy.schema /etc/ldap/schema/samba.schema 07/04/2012 Amministratore di sistema 45 SAMBA: OpenLDAP Schema Creare una directory temporanea mkdir /tmp/ldif Conversione slapcat –f /tmp/convert –F /tmp/ldif –n0 –s ʺcn={12}samba,cn=schema,cn=configʺ > /tmp/cn=samba.ldif 07/04/2012 Amministratore di sistema 46 23 24/05/2012 SAMBA: OpenLDAP Schema Editate il file generato: nano /tmp/cn=\samba.ldif Eliminate il {12} dalle prime 3 righe dn: cn={12}samba,cn=schema,cn=config objectClass: olcSchemaConfig cn: {12}samba dn: cn=samba,cn=schema,cn=config objectClass: olcSchemaConfig cn: samba 07/04/2012 Amministratore di sistema 47 SAMBA: OpenLDAP Schema Eliminate le ultime 7 righe che dovrebbero somigliare a queste structuralObjectClass: olcSchemaConfig entryUUID: 458debec-27e2-1031-965b-0113f6ef9828 creatorsName: cn=config createTimestamp: 20120501140411Z entryCSN: 20120501140411.677492Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20120501140411Z 07/04/2012 Amministratore di sistema 48 24 24/05/2012 SAMBA: OpenLDAP Schema Quindi aggiungete le informazioni nel DIT sudo ldapadd –x –D cn=admin,cn=config –W –f /tmp/cn\=samba.ldif Verrà chiesta la password dominiopwd 07/04/2012 Amministratore di sistema 49 SAMBA: ACL Impostare le regole di accesso a LDAP nano /tmp/smbacl.ldif dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcAccess olcAccess: to dn.base="" by self write by * auth olcAccess: to attrs=userPassword,sambaNTPassword,sambaLMPassword by dn="cn=admin,dc=dominio,dc=it" write by anonymous auth by self write by * none olcAccess: to * by * read by anonymous auth Nota: i parametri di olcAccess devono essere su un’unica riga 07/04/2012 Amministratore di sistema 50 25 24/05/2012 SAMBA Lanciare lo script sudo ldapmodify –x –D cn=admin,cn=config –W –f /tmp/smbacl.ldif Potete vedere le regole impostate con il comando: ldapsearch –xLLL –D cn=admin,cn=config –x –b cn=config –W olcDatabase={1}hdb 07/04/2012 Amministratore di sistema 51 SAMBA: LDAP Tools Configurazione degli LDAP Tools Fermare il servizio smbd sudo /etc/init.d/smbd stop Backup della configurazione sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bkp_20120407 Modificate la configurazione sudo nano /etc/samba/smb.conf 07/04/2012 Amministratore di sistema 52 26 24/05/2012 SAMBA: LDAP Tools Segue lo script [global] workgroup = DOMINIO netbios name = SERVER server string = %h PDC (%v) interfaces = eth0, lo bind interfaces only = yes enable privileges = yes guest account = guest domain logons = yes 07/04/2012 Nome del dominio Nome del server Samba ascolta solo eth0 e lo È domain controller Amministratore di sistema 53 SAMBA: LDAP Tools Lo script continua… domain master = yes preferred master = yes os level = 65 wins support = yes security = user ldap suffix = dc=dominio,dc=it ldap user suffix = ou=Users ldap machine suffix = ou=Computers ldap group suffix = ou=Groups ldap idmap suffix = ou=Idmap 07/04/2012 Amministratore di sistema Master browser Server wins Autenticazione Parametri Samba per collegarsi a LDAP 54 27 24/05/2012 SAMBA: LDAP Tools Lo script continua… ldap admin dn = cn=admin,cn=dominio,cn=it idmap backend = ldap:ldap://ldap.dominio.it idmap uid = 10000-20000 idmap gid = 10000-20000 ldap passwd sync = yes ldap ssl = no 07/04/2012 Amministratore di sistema 55 SAMBA: LDAP Tools Prendiamo nota del sid (Secure Identifier) del dominio sudo net getlocalsid Otterremo qualcosa del tipo: SID for domain LDAP is: S-1-5-21-12853714474050154245-2850450890 07/04/2012 Amministratore di sistema 56 28 24/05/2012 SAMBA: LDAP Tools Configurare smbldap-tools sudo cp /usr/share/doc/smbldaptools/examples/smbldap.conf.gz /etc/smbldap-tools/ sudo gzip –d /etc/smbldap-tools/smbldap.conf.gz sudo cp /usr/share/doc/smbldaptools/examples/smbldap_bind.conf /etc/smbldap-tools/ sudo nano /etc/smbldap-tools/smbldap.conf 07/04/2012 Amministratore di sistema 57 SAMBA Scorrere i parametri modificando impostandoli come indicato Lasciare inalterate le altre righe SID="S-1-5-21-1285371447-4050154245-2850450890" sambaDomain="DOMINIO" #slaveLDAP="127.0.0.1" masterLDAP="127.0.0.1" ldapTLS="0" #cafile="/etc/smbldap-tools/ca.pem" #clientcert="/etc/smbldap-tools/smbldap-tools.iallanis.info.pem" #clientkey="/etc/smbldap-tools/smbldap-tools.iallanis.info.key" suffix="dc=dominio,dc=it" hash_encrypt="MD5" userLoginShell="/bin/false" userGecos="DOMINIO Domain User" 07/04/2012 Amministratore di sistema 58 29 24/05/2012 SAMBA Lo script continua… defaultMaxPasswordAge="180" userSmbHome="" userProfile="" userHomeDrive="K:" userScript="%U.bat" mailDomain="dominio.it" 07/04/2012 Amministratore di sistema 59 SAMBA Modificate smbldap_bind.con f sudo nano /etc/smbldap-tools/smbldap_bind.conf Facendolo diventare così: slaveDN="cn=admin,dc=dominio,dc=it" slavePW="dominiopwd" masterDN="cn=admin,dc=dominio,dc=it" masterPW="dominiopwd" Proteggiamo i file: sudo chmod 0664 /etc/smbldap-tools/smbldap.conf sudo chmod 0600 /etc/smbldap-tools/smbldap_bind.conf 07/04/2012 Amministratore di sistema 60 30 24/05/2012 SAMBA Dite a Samba la password per accedere a LDAP sudo smbpasswd –w dominiopwd Se è tutto corretto dovreste ottenere: Setting stored password for "cn=admin,cn=dominio,cn=it" in secrets.tdb 07/04/2012 Amministratore di sistema 61 SAMBA Popolare LDAP Per il corretto funzionamento, Samba ha bisogno di alcuni gruppi predefiniti e di 2 utenti: Administrator e guest sudo /usr/sbin/smbldap-populate –a administrator –u 5001 –g 5001 –r 5001 –b guest –l 5000 Per comodità specificate la password di Administrator: alessandro 07/04/2012 Amministratore di sistema 62 31 24/05/2012 SAMBA Lista degli utenti Possiamo ottenere la lista degli utenti con il seguente comando: sudo getent passwd In particolare verranno visualizzati gli utenti administrator e guest 07/04/2012 Amministratore di sistema 63 SAMBA Create i gruppi di utenti Gruppo Descrizione DISIT Direzione Sistemi Informatici e Telematici DIAMM Direzione Amministrativa DIPER Direzione Personale DIPRO Direzione Produzione Domain Users Gruppo che contiene tutti gli utenti Domain Users è già stato creato con il comando smbldap-populate Ogni nuovo utente viene assegnato in modo automatico a questo gruppo 07/04/2012 Amministratore di sistema 64 32 24/05/2012 SAMBA Create i gruppi sudo sudo sudo sudo /usr/sbin/smbldap-groupadd /usr/sbin/smbldap-groupadd /usr/sbin/smbldap-groupadd /usr/sbin/smbldap-groupadd 07/04/2012 -a -a -a -a disit diamm diper dipro Amministratore di sistema 65 SAMBA Create gli utenti sudo sudo sudo sudo sudo sudo sudo sudo sudo sudo /usr/sbin/smbldap-useradd -a -m disit_u01 /usr/sbin/smbldap-passwd disit_u01 /usr/sbin/smbldap-useradd -a -m diamm_u01 /usr/sbin/smbldap-passwd diamm_u01 /usr/sbin/smbldap-useradd -a -m diper_u01 /usr/sbin/smbldap-passwd diper_u01 /usr/sbin/smbldap-useradd -a -m dipro_u01 /usr/sbin/smbldap-passwd dipro_u01 /usr/sbin/smbldap-useradd -a -m dipro_u02 /usr/sbin/smbldap-passwd dipro_u02 07/04/2012 Amministratore di sistema Parametri: -a è un Windows User -m crea la home directory 66 33 24/05/2012 SAMBA Abilitazione utenti Agli utenti non viene concesso l’accesso alla shell (è stato impostato /bin/false). Diamo l’abilitazione al personale informatico. sudo /usr/sbin/smbldap-usermod -s /bin/bash disit_u01 Assegnare gli utenti ai gruppi sudo sudo sudo sudo sudo /usr/sbin/smbldap-groupmod /usr/sbin/smbldap-groupmod /usr/sbin/smbldap-groupmod /usr/sbin/smbldap-groupmod /usr/sbin/smbldap-groupmod 07/04/2012 -m -m -m -m -m disit_u01 diamm_u01 diper_u01 dipro_u01 dipro_u02 disit diamm diper dipro dipro Amministratore di sistema 67 SAMBA Lista degli utenti Verifica Possiamo ottenere la lista degli utenti con il seguente comando: sudo getent group E ottenere qualcosa del genere: … disit:*:5001:disit_u01 diamm:*:5002:diamm_u01 diper:*:5003:diper_u01 dipro:*:5004:dipro_u01,dipro_u02 07/04/2012 Amministratore di sistema 68 34 24/05/2012 SAMBA Condivisioni Verifica Condivisione Percorso Descrizione public /samba/public Cartella pubblica. Contiene una cartella per ogni gruppo apps /samba/apps Cartella applicazioni in sola lettura netlogon /samba/netlogon Cartella di sistema, necessaria in un domain controller Contiene gli script di logon di un utente profiles /samba/profiles Cartella di sistema per i profili roaming di Windows homes /samba/home Cartella home degli utenti (ciascuno ha la propria) rootdir /samba Condivisione utile per i backup 07/04/2012 Amministratore di sistema 69 SAMBA Condivisione public Verifica Anziché avere una condivisione per ogni gruppo, la scelta è quella di avere public come condivisione principale e lavorare con i permessi. A fronte di molti gruppi ci sarà un’unica mappatura. Ognuno vede solamente le sottocartelle alle quali ha accesso! sudo sudo sudo sudo sudo sudo mkdir mkdir mkdir mkdir mkdir mkdir –p –p –p –p –p –p /samba/public /samba/public/comune /samba/public/disit /samba/public/diamm /samba/public/diper /samba/public/dipro Parametro –p crea anche le cartelle parent se non esistono 07/04/2012 Amministratore di sistema 70 35 24/05/2012 SAMBA Condivisione public Verifica Aggiustare i permessi sudo sudo sudo sudo sudo sudo sudo sudo sudo sudo chmod chgrp chmod chgrp chmod chgrp chmod chgrp chmod chgrp 770 /samba/public/comune "Domain Users" /samba/public/comune 770 /samba/public/diamm diamm /samba/public/diamm 770 /samba/public/diper diper /samba/public/diper 770 /samba/public/dipro dipro /samba/public/dipro 770 /samba/public/disit disit /samba/public/disit Solo i membri del gruppo Domain Admins possono creare file nella directory public Verifica: ls –al /samba/public 07/04/2012 Amministratore di sistema 71 SAMBA Condivisione public Verifica suid Quando gli utenti creano files o cartelle nelle condivisioni, questi vengono marcati con utente=UtenteCreatore e gruppo=GruppoDefaultUtente. Il gruppo di default è Domain Users, quindi tutti i file creati in disit sono potenzialmente a disposizione anche degli utenti del gruppo diamm essendo questi membri del gruppo Domain Users Nota: in questo caso sono protetti dai permessi della cartella Ogni file creato/copiato/ripristinato dall’amministratore non risulta accessibile dagli utenti normali senza reimpostare manualmente i permessi sui files 07/04/2012 Amministratore di sistema 72 36 24/05/2012 SAMBA Condivisione public Verifica setuid Con i seguenti comandi ogni file creato nelle cartelle avrà come gruppo proprietario il gruppo della cartella e non quello dell’utente sudo sudo sudo sudo sudo chmod chmod chmod chmod chmod g+s g+s g+s g+s g+s /samba/public/comune /samba/public/disit /samba/public/diamm /samba/public/diper /samba/public/dipro I permessi di gruppo verranno modificati da rwx a rws Verifica: ls –al /samba/public 07/04/2012 Amministratore di sistema 73 SAMBA Condivisione apps In questa condivisione mettiamo tutti i programmi condivisi nella rete. Solo l’amministratore può scrivere nella cartella, gli altri utenti possono solo leggere ed eseguire i file contenuti sudo sudo sudo sudo mkdir chmod chgrp chmod 07/04/2012 /samba/apps 750 /samba/apps "Domain Users" /samba/apps g+s /samba/apps Amministratore di sistema 74 37 24/05/2012 SAMBA Condivisione netlogon Condivisione necessaria quando si configura un domain controller Conterrà gli script degli utenti sudo mkdir /samba/netlogon Condivisione profiles Consente di usare i profili roaming di Windows sudo mkdir /samba/profiles sudo chmod 777 /samba/profiles Condivisione home: creata automaticamente da Samba (slides successive) 07/04/2012 Amministratore di sistema 75 SAMBA Condivisione netlogon Condivisione necessaria quando si configura un domain controller Conterrà gli script degli utenti sudo mkdir /samba/netlogon Condivisione profiles Consente di usare i profili roaming di Windows sudo mkdir /samba/profiles sudo chmod 777 /samba/profiles 07/04/2012 Amministratore di sistema 76 38 24/05/2012 SAMBA Condivisione home Creata automaticamente da Samba e mappata come K: in Windows al momento del logon tramite lo script logon.pl presente nelle slides successive Condivisione rootdir Utile per i backup, è accessibile solo all’amministratore sudo sudo sudo sudo ln -s mkdir ln -s ln -s /home /samba/home /samba/system /etc /samba/system/etc /var/lib/ldap /samba/system/ldap 07/04/2012 Amministratore di sistema 77 SAMBA È necessario configurare le condivisioni in Samba sudo nano /etc/samba/smb.conf Condivisione homes [homes] comment = "K: Cartella privata di %U, %u" writeable = yes create mask = 0700 directory mask = 0775 browseable = no force user = %U 07/04/2012 Amministratore di sistema 78 39 24/05/2012 SAMBA Condivisione public [public] comment = "L: - Cartella pubblica" path = /samba/public writeable = yes browseable = yes hide unreadable = yes directory mask = 0775 create mask = 0775 force create mode = 0775 force directory mode = 6775 security mask = 0777 force directory security mode = 0 07/04/2012 Amministratore di sistema 79 SAMBA Condivisione rootdir [rootdir] comment = "Cartella globale, solo per amministrazione e backup" path = /samba writeable = yes browseable = yes directory mask = 0770 create mask = 0775 force create mode = 0775 security mask = 0777 force security mode = 0 directory security mask = 0777 admin users = Administrator valid users = "@Domain Admins" force create mode = 0644 force directory mode = 6775 07/04/2012 Amministratore di sistema 80 40 24/05/2012 SAMBA Condivisione apps [apps] comment = "X: Applicazioni" path = /samba/apps writeable = yes browseable = yes directory mask = 0770 create mask = 0775 security mask = 0777 force security mode = 0 directory security mask = 0777 force directory security mode = 0 hide unreadable = yes force create mode = 0775 force directory mode = 6775 07/04/2012 Amministratore di sistema 81 SAMBA Condivisione netlogon [netlogon] comment = "Network Logon Service" path = /samba/netlogon guest ok = yes locking = no browseable = no root preexec = /etc/samba/logon.pl "%U" "%G" "%L" "%T" "%m" "%a" Condivisione profiles [profiles] comment = "Profile share" path = /samba/profiles writeable = yes 07/04/2012 Amministratore di sistema 82 41 24/05/2012 SAMBA Ultimi parametri in smb.conf map acl inherit = yes passdb backend = ldapsam:ldap://server.dominio.it name resolve order = wins host dns bcast add user script = /usr/sbin/smbldap-useradd -a -m '%u' delete user script = /usr/sbin/smbldap-userdel '%u' add group script = /usr/sbin/smbldap-groupadd -a -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' logon script = %U.bat logon path = logon home = logon drive = K: 07/04/2012 Amministratore di sistema 83 SAMBA Ultimi parametri in smb.conf log level = 0 log file = /var/log/samba/%m max log size = 50 smb ports = 139 445 hide dot files = yes name resolve order = wins host dns bcast time server = yes guest account = guest show add printer wizard = no lock directory = /var/lock/samba winbind use default domain = yes winbind enum users = yes winbind enum groups = yes template shell = /bin/false 07/04/2012 Amministratore di sistema 84 42 24/05/2012 SAMBA File di configurazione creato al volo al momento della login sudo nano /etc/samba/logon.pl #!/usr/bin/perl open LOG, ">>/var/log/samba/netlogon.log"; print LOG, "$ARGV[3] - Utente $ARGV[0] collegato a $ARGV[2]\n"; close LOG; # Elenco utenti $APPS = "-disit_u01-disit_u02-"; $NOLOGON = "-administrator-"; $DELMAP = "-winnt-win2k-win2k3-winxp-"; $ADMIN = "administrator"; 07/04/2012 Amministratore di sistema 85 SAMBA # Inizio generazione script open LOGON, ">/samba/netlogon/$ARGV[0].bat"; print LOGON "\@ECHO OFF\r\n"; print LOGON "ECHO DOMINIO logon script\r\n"; print LOGON "ECHO.\r\n"; # Sincronizza orario con il server print LOGON "NET TIME \\\\DOMINIO /SET /YES\r\n"; # Se piattaforma PC in $DELMAP cancella i vecchi map if (index($DELMAP,"-".lc($ARGV[0])."-")==1) { print LOGON "NET USE " /DEL /YES\r\n"; } 07/04/2012 Amministratore di sistema 86 43 24/05/2012 SAMBA # Esci se utente in $NOLOGON altrimenti applica i map if (index($NOLOGON,"-".lc($ARGV[0])."-")==-1) { # Disco L: (PUBLIC) print LOGON "NET USE L: \\\\DOMINIO\public /YES\r\n"; # Disco K: (HOME) print LOGON "NET USE K: \\\\DOMINIO\$ARGV[0] /YES\r\n"; # Disco X: (APPS) if (index($APPS,"-".lc($ARGV[0])."-")>=0) { print LOGON "NET USE X: \\\\DOMINIO\apps /YES\r\n"; } } # Chiudi il file close LOGON; 07/04/2012 Amministratore di sistema 87 SAMBA Avvio del servizio sudo /etc/init.d/smbd start Ora è possibile fare il join al dominio Start\Pannello di controllo\Sistema Cambia impostazioni Click su Cambia 07/04/2012 Amministratore di sistema 88 44 24/05/2012 SAMBA Selezionare Dominio Digitare il nome del dominio: DOMINIO Click su Ok Riavviare il PC 07/04/2012 Amministratore di sistema 89 SAMBA Test di funzionamento Per vedere il client appena aggiunto: sudo getent passwd Per vedere gli utenti del dominio: sudo pdbedit -L Per vedere le condivisioni: sudo smbclient –L localhost –U administrator 07/04/2012 Amministratore di sistema 90 45 24/05/2012 CRITICITÀ Le slides presentate mostrano come installare un server Linux che funzioni come Server LDAP, File Server e Domain Controller Le slides hanno scopo didattico. Per la messa in produzione di un server che offra questi servizi è necessario investire su aspetti che esulano dalle finalità di questo progetto, quali, ad esempio: • Sicurezza: la necessità di proteggere il server da possibili attacchi interni ed esterni alla rete, crittografare la connessione tra Samba e LDAP, … • Backup e disaster recovery: Salvataggio dei backup e prove di ripristino • Criticità e ridondanza: questi servizi sono critici, meglio ridondarli. Le repliche devono sincronizzarsi tra loro 07/04/2012 Amministratore di sistema 91 LIBRO Le slides presentate sono state prodotte rielaborando gli argomenti trattati nel libro: Small Business Server (seconda edizione) per Ubuntu Server 10.04 LTS di Stefano Giro 07/04/2012 Amministratore di sistema 92 46