SAMBA per condividere informazioni tra ambienti eterogenei
Scopriamolo insieme! Cosa sono il Software Libero e GNU/Linux?
Cos'è il Software Libero? Il software libero è software pubblicato con una licenza che permette a chiunque di utilizzarlo e che ne incoraggia lo studio, le modifiche e la redistribuzione, incentrandosi sulla libertà dell'utente e non solo sull'apertura del codice sorgente, che è comunque un pre-requisito del software libero.
Quattro libertà fondamentali ● Libertà 0: Libertà di eseguire il programma per qualsiasi scopo. ● Libertà 1: Libertà di studiare il programma e modificarlo. ● Libertà 2: Libertà di copiare il programma in modo da aiutare il prossimo. ● Libertà 3: Libertà di migliorare il programma e di distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio.
Cos'è GNU/Linux Linux (o GNU/Linux) è un sistema operativo libero di tipo Unix costituito dall'integrazione del kernel (cuore del sistema) Linux con elementi del sistema GNU e di altro software sviluppato e distribuito con licenza GNU GPL o con altre licenze libere.
Storia ● Il software libero nasce negli anni '80 quando ci si è accorti che quello proprietario frenava fortemente lo sviluppo e la collaborazione ● Il progetto GNU nel 1983 da il via al primo sistema operativo libero ● Nel 1991 GNU si fonde con Linux e da vita al sistema operativo tutt'oggi in uso ● Dagli anni '90 in poi vengono sviluppate tantissime distribuzioni che raccolgono il software per renderlo facilmente fruibile
Le distribuzioni Per distribuzione, si intende una raccolta di programmi precompilati sotto forma di pacchetti che facilitano l’installazione di un sistema operativo GNU/Linux. Esistono moltissime distribuzioni, circa 200, ciascuna con particolari caratteristiche ideate per specifici target di applicazione e tipologie di utenti.
SAMBA per condividere informazioni tra ambienti eterogenei
Che cosè SAMBA ? ● Samba è un progetto libero che fornisce servizi di condivisione di file e stampanti a client SMB/CIFS. ● Samba è liberamente disponibile, al contrario di altre implementazioni SMB/CIFS, e permette di ottenere interoperabilità tra Linux, Unix, Mac OS X e Windows.
Che cosè SAMBA ? Samba è un software che può girare su piattaforme che non siano Microsoft Windows, per esempio, UNIX, Linux, IBM System 390, OpenVMS e altri sistemi operativi. Samba utilizza il protocollo TCP/IP sfruttando i servizi offerti sul server ospite. Quando correttamente configurato, permette di interagire con client o server Microsoft Windows come se fosse un file e print server Microsoft agendo da Primary Domain Controller (PDC) o come Backup Domain Controller, può inoltre prendere parte ad un dominio Active Directory (dalla versione 4 potrà essere integrato in AD come un normale Domain Controller).
Come possiamo integrare SAMBA in una struttura già esistente ? ● La soluzione proposta in questo “talk” prevede che in rete sia già presente un servizio Active Directory di Microsoft ● Il file server SAMBA dovrà condividere delle cartelle presenti sul server samba con i vari utenti/gruppi di AD
Quali sono i servizi proposti per realizzare la soluzione ? ● Active Directory di Microsoft (solo perchè vogliamo integrare SAMBA in una struttura pre-esistente, ma in realtà SAMBA + OpenLDAP + Kerberos, opportunamente configurati potrebbe potenzialmente sostituire AD). ● DNS e DHCP installati, per semplicità, sullo stesso server AD (anche in questo caso i servizi DNS e DHCP potrebbero essere configurati su di un server Linux)
Quali sono i servizi proposti per realizzare la soluzione ? ● NTP – Network Time Protocol, necessario a mantenere sincronizzati gli orologi di tutti i server e i pc della rete ● Kerberos – Kerberos è un protocollo di rete per l'autenticazione tramite crittografia che permette a diversi terminali di comunicare su una rete informatica insicura provando la propria identità e cifrando i dati (vengono utilizzati dei “token” al posto di utente e password)
Quali sono i servizi proposti per realizzare la soluzione ? ● SAMBA opportunamente configurato per utilizzare AD e l'autenticazione tramite Kerberos !
Iniziamo con il servizio NTP ● Installiamo il servizio NTP lato SERVER su di una macchina a scelta (es. il gateway di rete), tutti i pc e i server della rete utilizzeranno il servizio NTP lato CLIENT per mantenere sincronizzati i propri orologi.
NTP lato SERVER ● apt-get install ntp NTP lato CLIENT ● apt-get install ntp ● modificare il contenuto del file /etc/ntp.conf ● server IP_DEL_SERVER_NTP ● #server 0.debian.pool.ntp.org iburst dynamic ● #server 1.debian.pool.ntp.org iburst dynamic ● #server 2.debian.pool.ntp.org iburst dynamic ● #server 3.debian.pool.ntp.org iburst dynamic
Installiamo il client Kerberos apt-get install krb5-user krb5-config krb5-doc ● Configuriamo il file /etc/krb5.conf e verifichiamo che tutto funzioni correttamente ● [libdefaults] ● default_realm = NOME_ASSEGNATO_AL_REALM ● [realms] ● NOME_ASSEGNATO_AL_REALM = { ● kdc = indirizzo_ip_del_server_microsoft ● admin_server = indirizzo_ip_del_server_microsoft ● } ● [domain_realm] ● nomeserver.dominio.locale = NOME_ASSEGNATO_AL_REALM ●.dominio.locale = NOME_ASSEGNATO_AL_REALM ● dominio.locale = NOME_ASSEGNATO_AL_REALM
Testiamo il client Kerberos kinit -V utente → per ricevere un token dal server klist → per visualizzare l'elenco dei token kdestroy → per cancellare i token ricevuti
Installiamo SAMBA apt-get install samba smbclient smbfs winbind ● In realtà smbclient e smbfs ci servono per effettuare solo dei test di funzionamento !
SERVIZI - SAMBA Sul server samba sono in esecuzione 3 servizi: ● smbd per i servizi di condivisione di file e stampanti. ● nmbd per il servizio di risoluzione dei nomi NetBIOS e di assistenza al browsing delle risorse. ● winbind, che in questo caso è il vero “collettore” tra il mondo linux e il mondo Microsoft !
Configuriamo opportunamente PAM perchè utilizzi winbind ● Pluggable Authentication Modules: è un meccanismo per integrare più schemi di autenticazione a basso livello in un'unica API ad alto livello ● In parole povere è IL sistema di autenticazione a “moduli” utilizzato da linux per gestire l'autenticazione degli utenti.
Modifichiamo PAM perchè usi winbind # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # #auth required pam_unix.so nullok_secure auth sufficient pam_winbind.so auth sufficient pam_unix.so nullok_secure use_first_pass
Modifichiamo PAM perchè usi winbind # /etc/pam.d/common-account - authorization settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authorization modules that define # the central access policy for use on the system. The default is to # only deny service to users whose accounts are expired in /etc/shadow. # #account required pam_unix.so account sufficient pam_winbind.so account sufficient pam_unix.so
Modifichiamo PAM perchè usi winbind # /etc/pam.d/common-session - session-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define tasks to be performed # at the start and end of sessions of *any* kind (both interactive and # non-interactive). The default is pam_unix. # # session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0077 session required pam_unix.so
Modifichiamo nsswitch perchè usi winbind # /etc/nsswitch.conf passwd: compat winbind group: compat winbind
Configuriamo il file /etc/samba/smb.conf [global] workgroup = NOME_DOMINIO_NEL_FORMATO_NETBIOS realm = NOME_ASSEGNATO_AL_REALM server string = %h server security = ADS password server = indirizzo_ip_del_server_microsoft obey pam restrictions = Yes passdb backend = tdbsam pam password change = Yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully*. unix password sync = Yes syslog = 0 log file = /var/log/samba/log.%U max log size = 1000 name resolve order = lmhosts host wins bcast socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
Configuriamo il file /etc/samba/smb.conf load printers = No dns proxy = No wins server = indirizzo_ip_del_server_microsoft panic action = /usr/share/samba/panic-action %d idmap backend = idmap_rid:DOMINIO_NETBIOS= idmap uid = idmap gid = winbind enum users = Yes winbind enum groups = Yes winbind use default domain = Yes template shell = /bin/ template homedir = /home/%D/%U valid users = %S
Facciamo ripartire i servizi winbind e samba Aggiungiamo il server SAMBA al dominio /etc/init.d/samba restart /etc/init.d/winbind restart net ads join -U Administrator /etc/init.d/winbind restart
Facciamo alcune prove getent passwd → per visualizzare l'elenco degli utenti locali e di tutti gli utenti del dominio getent group → per visualizzare l'elenco dei gruppi locali e di tutti i gruppi del dominio wbinfo -u → per visualizzare l'elenco dei soli utenti del dominio wbinfo -g → per visualizzare l'elenco dei soli gruppi del dominio
Andiamo a creare una cartella che verrà condivisa per i nostri test e assegnamola ad un gruppo del dominio. mkdir /condivisa chgrp permessi-commerciali /condivisa chmod 770 /condivisa
Apportiamo alcune modifiche al nostro server SAMBA per condividere la cartella in rete. [condivisa] comment = cartella condivisa di prova path = /condivisa read list write list read only = No create mask = 0660 directory mask = 0770 ● Facciamo caricare a samba (smbd) le nuove impostazioni ● /etc/init.d/samba reload
Esiste un'interfaccia grafica che mi permette di gestire la configurazione del server SAMBA ? apt-get install swat NB. dopo aver installato swat è necessario effettuare un riavvio del server.
Configuriamo il nostro client linux per l'autenticazione tramite Kerberos #apt-get install ntp #apt-get install samba-common winbind #apt-get install krb5-user krb5-config krb5-doc libpam-krb5 ● configuriamo il file /etc/krb5.conf come visto prima ● configuriamo samba e aggiungiamo il client al dominio come visto in precedenza ● modifichiamo i file nella cartella /etc/pam.d per gestire l'autenticazione tramite kerberos ● modifichiamo il file /etc/nsswitch.conf per winbind
Configuriamo il nostro client per l'autenticazione tramite Kerberos # /etc/pam.d/common-auth auth sufficient pam_krb5.so ccache=/tmp/krb5cc_%u auth sufficient pam_unix.so likeauth nullok_secure use_first_pass auth required pam_deny.so # /etc/pam.d/common-account account required pam_unix.so account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] pam_krb5.so minimum_uid=10000 # /etc/pam.d/common-session session required pam_unix.so session optional pam_foreground.so session optional pam_krb5.so minimum_uid=10000 session required pam_mkhomedir.so umask=0077 skel=/etc/skel
Configuriamo nsswitch # /etc/nsswitch.conf passwdcompat winbind groupcompat winbind Alcune note: - configurare l'interfaccia di rete direttamente tramite il file /etc/network/interfaces e disattivare network manager (NetworkManager può creare dei ritardi in fase di autenticazione !!)
DOMANDE ?