Il protocollo SMB/CIFS ha due livelli di sicurezza: user e share. Il livello share non è quasi più utilizzato (era adatto per sistemi più vecchi WME, W98)
Samba supporta tre meccanismi di autenticazione:
- passowrd in chiaro
- NTLM
- ticket Kerberos
PAM, ovvero pluggable authentication modules sono delle librerie condivise che possono essere utilizzate per permettere ad un amministratore di rafforzare una policy di sicurezza. Samba è in grado di utilizzare PAM per autenticare gli utenti e rafforzare certi controlli sfruttando la configurazione del servizio PAM per Samba. Per poter sfruttare le librerie PAM, queste devono essere installate e relazionate a Samba (verificare con smbd -b | grep WITH_PAM). Samba fa uso delle impostazioni di autenticazione PAM, solo se i client passano le loro password in chiaro, nel caso in cui queste sono cifrate, il modulo PAM viene ignorato.
E’ utile sincronizzare le password fra utenti di sistema e utenti samba, per fare questo è necessario impostare pam password change = yes
Più nel dettaglio la sincronizzazione fra utenti locali di sistema unix ed utenti samba è possibile grazie all’utilizzo delle API PAM, come spiegato in precedenza, grazie ad un programma o script esterno. In alternativa si può delegare il discorso a LDAP. L’opzione più semplice è quest’ultima, dato che samba deve solo inviare un comando ldap ModifyPassword. Ovviamente questo funziona solo quando viene utilizzato ldapsam come backend di autenticazione
NTLMv1 e NTLMv2 sono due protocolli in cui le password in chiaro non vengono mai passate attraverso la rete, ma per come è costruito il protocollo di comunicazione NTLMv1 soffre di attacchi man in the middle, cosa di cui invece non soffre NTLMv2.
In sistemi microsoft ogni oggetto, che sia esso un gruppo, un utente o un pc viene identificato da un SID Windows security identifier. Il ruolo principale di Samba è quello di manipolare gli oggetti Unix (utenti, gruppi etc..) in modo tale da renderli comprensibili anche da sistemi microsoft. Samba deve quindi utilizzare degli strumenti aggiuntivi rispetto al classico /etc/passwd per dialogare con i pc della rete. Tali strumenti, che sono tutti metodi di immagazzinamento dati, sono: un file di testo, un file tdb, oppure un LDAP directory service. (smbpassd, tdbsam, ldapsam) .
Il file tdbsam rispetto al classico smbpasswd contiene più informazioni, ed è il metodo consigliato quando si vuole creare un server di dominio unico (PDC) senza alcun controllore di dominio di backup.
Ldapsam si basa su LDAP directory service, ed in quanto tale si basa su degli schema. Due classi ausiliarie ed una strutturale vengono utilizzate per la gestione degli utenti e dei gruppi: sambaDomain, SambaSamAccount (gestione degli account), sambaGroupMapping (gestione dei gruppi). Di solito le informazioni di autenticazione fra Samba ed Ldap vengono passate in chiaro, il che è sufficientemente sicuro se queste si trovano sulla stessa macchina. Nel caso in cui però il demone smbd e il servizio ldap risiedano su due macchine diverse è importante utilizzare ldap con SSL, grazie al metodo start_tls.
E’ possibile gestire degli account tramite gli strumenti smbpasswd e pdbedit (per gestire i file smbpasswd e file .tdb)
Per controllare l’autorizzazione che un utente può avere per manipolare file o cartelle possono essere sfruttati tre diversi metodi:
- i security descriptor
- i permessi di filesystem
- il controllo degli accessi nel file di configurazione di samba (interessante l’utilizzo del tag + e – seguito da nome utente o gruppo)










[...] suo quinto articolo della serie dedicata al server Samba, Cesare ci spiega i vari metodi di autenticazione che possiamo [...]