Rendere sicuro un server di file e di stampa Samba

Modalità di sicurezza di Samba

Esistono due livelli di sicurezza disponibili al protocollo CIFS (Common Internet Filesystem): a livello utente e a livello condivisione. L'implementazione della modalità di sicurezza di Samba consente una maggiore flessibilità, fornendo quattro modi per implementare la sicurezza a livello utente e uno per quella a livello condivisione.

  • security = user: richiede a client di fornire nome utente e password per collegarsi alla condivisione. Gli account di Samba sono separati da quelli di sistema, ma il pacchetto libpam-smbpass consente di sincronizzare utenti e password con il database degli utenti di Samba.

  • security = domain: questa modalità consente al server Samba di apparire ai client Windows come «Primary Domain Controller» (PDC), «Backup Domain Controller» (BDC) oppure «Domain Member Server» (DMS). Per maggiori informazioni, consultate the section called “Samba come controller di dominio”.

  • security = ADS: consente al server Samba di unirsi a un dominio «Active Directory» come membro nativo. Per maggiori informazioni, consultate the section called “Integrare Samba con Active Directory”.

  • security = server: questa modalità è sospesa da prima che Samba potesse diventare un server membro e, a causa di alcuni problemi di sicurezza, non deve essere utilizzata. Per ulteriori informazioni, consultate la sezione Server Security della guida di Samba.

  • security = share: consente ai client di collegarsi alle condivisioni senza fornire nome utente e password.

La modalità di sicurezza preferita dipende dall'ambiente e da cosa il server Samba deve realizzare.

Livello di sicurezza utente

Questa sezione spiega come riconfigurare il server di file e stampa Samba, da the section called “Server di file Samba” e il Server di stampa, affinché richieda l'autenticazione.

Per prima cosa, installate il pacchetto libpam-smbpass che consente di sincronizzare gli utenti di sistema col database degli utenti di Samba:

sudo apt-get install libpam-smbpass

Note

Se l'attività server di Samba era stata scelta durante l'installazione, libpam-smbpass è già installato.

Aprite il file /etc/samba/smb.conf e nella sezione [share] modificate:

guest ok = no

Riavviate Samba affinché le nuove impostazioni abbiano effetto:

sudo /etc/init.d/samba restart

Ora, quando ci si connette con directory o stampanti condivise, verranno richiesti un nome utente e una password.

Note

Per individuare un dispositivo di rete nella condivisione, deve essere attivata l'opzione “Riconnetti all'accesso”, che richiederà solo una volta la digitazione del nome utente e della password, almeno fino a quando la password cambia.

Livello di sicurezza condivisione

Ci sono diverse opzioni disponibili per aumentare la sicurezza di ogni singola directory condivisa. Facendo uso dell'esempio [share], questa sezione illustra alcune di queste opzioni.

Gruppi

I gruppi definiscono una raccolta di computer o utenti che hanno un livello comune di accesso a specifiche risorse della rete e offrono un livello di granulosità nel controllo dell'accesso a tali risorse. Per esempio, se è definito un gruppo qa che contiene gli utenti freda, danika e rob, ed è definito un secondo gruppo support composto dagli utenti danika, jeremy e vincent, allora certe risorse di rete configurate per consentire l'accesso al gruppo qa abiliteranno di conseguenza l'accesso da freda, danika, e rob, ma non da jeremy o vincent. Poiché l'utente danika appartiene sia al gruppo qa, sia a quello support, sarà in grado di accedere alle risorse configurate per l'accesso da entrambi i gruppi, laddove tutti gli altri utenti avranno accesso solo alle risorse che permettono l'accesso esplicito al gruppo di cui fanno parte.

Per impostazione predefinita, Samba cerca i gruppi del sistema locale definiti in /etc/group, per determinare a quali gruppi appartengono gli utenti. Per ulteriori informazioni sull'aggiunta e la rimozione degli utenti dai gruppi, consultate la sezione Fondamenti.

Quando si definiscono i gruppo nel file di configurazione Samba, /etc/samba/smb.conf, la sintassi riconosciuta è far precedere il nome del gruppo con il simbolo «@». Ad esempio, per definire un gruppo chiamato sysadmin in una certa sezione di /etc/samba/smb.conf, il nome del gruppo deve essere inserito come @sysadmin.

Permessi dei file

I permessi dei file definiscono i diritti che un computer o un utente ha su una particolare directory, file o insieme di file. Tali permessi possono essere definiti modificando il file /etc/samba/smb.conf e specificando i permessi di una condivisione definita.

Per esempio, per una condivisione Samba chiamata share e la necessità di attribuire permessi di sola lettura al gruppo di utenti conosciuto come qa, e continuando a mantenere condivisi i permessi di scrittura per il gruppo chiamato sysadmin e l'utente vincent, allora il file /etc/samba/smb.conf potrebbe essere modificato per aggiungere le seguenti voci sotto la voce [share]:

read list = @qa
write list = @sysadmin, vincent

Un altro permesso possibile in Samba è dichiarare permessi amministrativi a una particolare risorsa condivisa. Gli utenti che hanno permessi amministrativi possono leggere, scrivere o modificare qualsiasi informazione contenuta nelle risorse per le quali sono stati attribuiti loro permessi amministrativi espliciti.

Per esempio, per attribuire permessi amministrativi all'utente melissa all'esempio share, il /etc/samba/smb.conf deve essere modificato per aggiungere la riga seguente sotto la voce [share]:

admin users = melissa

Modificato il file /etc/samba/smb.conf, riavviate Samba affinché le modifiche abbiano effetto:

sudo /etc/init.d/samba restart

Note

Affinché read list e write list funzionino, il modello di sicurezza di Samba non deve essere impostato a security = share

Ora che Samba è stato configurato per limitare quali gruppi hanno accesso alla directory condivisa, è necessario aggiornare i permessi del file system.

I permessi Linux tradizionali sui file non eseguono bene la mappatura degli Access Control Lists (ACL, 'elenchi di controllo dell'accesso') di Windows NT. Per fortuna, sui server Kubuntu sono disponibili gli ACL POSIX, che forniscono un controllo più dettagliato. Per esempio, per abilitare gli ACL su /srv in un file system EXT3, modificate /etc/fstab aggiungendo l'opzione acl:

UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv  ext3    noatime,relatime,acl 0 
    1

Quindi montate nuovamente la partizione:

sudo mount -v -o remount /srv

Note

L'esempio di sopra suppone /srv in una partizione separata. Se /srv, od ovunque sia configurato il percorso di condivisione, fa parte della partizione /, è richiesto un riavvio.

Per ottenere la corrispondenza con la configurazione Samba qui sopra, al gruppo sysadmin saranno attribuiti i permessi di lettura, scrittura e esecuzione in /srv/samba/share, nel gruppo qa i permessi di lettura ed esecuzione, e i file apparterranno al nome utente melissa. Digitate i seguenti comandi in un terminale:

sudo chown -R melissa /srv/samba/share/
sudo chgrp -R sysadmin /srv/samba/share/
sudo setfacl -R -m g:qa:rx /srv/samba/share/

Note

Il comando setfacl qui sopra attribuisce i permessi di esecuzione a tutti i file nella directory /srv/samba/share, la qual cosa può essere o no consigliabile.

Un client Windows mostrerà che i nuovi permessi dei file sono implementati. Consultate le pagine man acl e setfacl per ulteriori informazioni sugli ACL POSIX.

Profilo AppArmor Samba

Kubuntu è distribuito col modulo di sicurezza AppArmor, che fornisce controlli obbligatori degli accessi. Il profilo AppArmor predefinito per Samba dovrà essere adattato opportunamente alla configurazione. Per ulteriori dettagli sull'uso di AppArmor, consultate il wiki.

Esistono profili AppArmor predefiniti per /usr/sbin/smbd e /usr/sbin/nmbd, gli eseguibili dei demoni Samba, come parte dei pacchetti apparmor-profiles. Per installare il pacchetto, da un prompt di terminale, digitare:

sudo apt-get install apparmor-profiles

Note

Questo pacchetto contiene profili per molti altri binari.

Per impostazione predefinita, i profili per smbd e nmbd sono in modalità apprendimento ('complain'), che consente a Samba di funzionare senza modificare il profilo, e con solo la registrazione degli errori. Per mettere il profilo smbd in modalità esecuzione ('enforce'), e far funzionare Samba come ci si attende, il profilo dovrà essere modificato per rispecchiare tutte le directory condivise.

Modificate /etc/apparmor.d/usr.sbin.smbd, aggiungendo le informazioni per [share] dall'esempio del server di file:

/srv/samba/share/ r,
/srv/samba/share/** rwkix,

Ora impostate il profilo in modalità enforce e ricaricatelo:

sudo aa-enforce /usr/sbin/smbd
cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r

Ora è possibile leggere, scrivere ed eseguire i file come normali nella directory condivisa, e l'eseguibile smbd avrà accesso solo ai file e le directory configurate. Assicuratevi di aggiungere le voci per ciascuna directory che Samba deve condividere. Tutti gli errori saranno registrati in /var/log/syslog.

Risorse