Note sul protocollo Microsoft Common Internet File System (CIFS)

A futura memoria (e spero per l’utilità di altri) mi annoto alcuni concetti sul Microsoft Common Internet File System (CIFS) un protocollo di rete Windows per l’accesso remoto ai file.

Introduzione

I sistemi Client utilizzano il protocollo CIFS (Common Internet File System) per richiedere files e servizi di stampa da sistemi server in rete.

CIFS è basato su SMB (Server Message Block) un protocollo per la condivisione in rete di file, stampanti, porte seriali e comunicazioni di varia natura la cui implementazione sui sistemi Microsoft è nota col nome Microsoft SMB Protocol. per la precisione CIFS è un dialetto (set di message packets che definisce una particolare versione del protocollo) di SMB.

Origini

SMB è stato inventato da Barry Feigenbaum presso la IBM e originariamente era stato studiato per operare al di sopra di NetBIOS.

Quando Sun Microsystems rilasiò il WebNFS, Microsoft (nel 1998) lanciò l’iniziativa di chiamare SMB Common Internet File System (CIFS) ed incluse diverse migliorie:

  • Gestione di file di grosse dimensioni.
  • Possibilità di operare senza alcun supporto di NetBIOS agendo direttamente su TCP/IP (a partire da Windows 2000).

La seconda versione di NTLM (NTLMv2) venne sviluppata perché la prima (derivata dalla specifica originale di SMB) utilizzava la cifratura Data Encryption Standard (DES) in maniera troppo complessa.

Con Windows Vista (2006) viene introdotto il Server Message Block 2.0 che presenta le seguenti migliorie:

  • Invio comandi SMB multipli con lo stesso pacchetto, per ridurre il numero di pacchetti inviati.
  • Supporto di un buffer size maggior rispetto a SMB 1.0
  • Supporto ai link simbolici.
  • Aumento delle costanti restrittive del progetto del protocollo per consentire una maggiore scalabilità, come ad esempio l’aumento del numero di file handle aperti sul server e del numero di condivisioni di file che un server può supportare.
  • Supporto a brevi interruzioni delle cominicazioni di rete.

Per ulteriori informazioni si veda New Networking Features in Windows Server 2008 and Windows Vista.

Descrizione

SMB utilizza l’approccio client-server ed è stato ottimizzato per l’uso in rete locale, ma puo’ essere usato anche attraverso l’Internet.

Una sezione del protocollo SMB è dedicata specificatamente all’accesso al filesystem per consentire ai client di eseguire richieste al file server, ma esistono altre sezioni specializzate per le comunicazioni tra processi.

I server SMB rendono disponibili client sulla rete il loro filesystem e le altre risorse. La modalità primaria di utilizzo del protocollo prevede che i client possono avere i loro propri dischi che non sono pubblicamente accessibili ed accedere comunque al filesystem condiviso e alle stampanti del server.

Il meccanismo di comunicazione tra processi incluso in SMB fornisce le named pipes con cui è implementato il meccanismo di autenticazione e l’implementazione Microsoft del DCE/RPC il MSRPC (Microsoft Remote Procedure Call). Inoltre SMB è anche usato come fondamento del Microsoft Distributed File System.

Per consentire l’interoperabilità con la piattaforma Microsoft Windows è nato il progetto Samba che rappresenta una implementazione free usata per garantire compatibilità SMB con sistemi operativi non Microsoft. A partire dalla versione 4 Samba introduce in via sperimentale il supporto a SMB 2.0.

Le specifiche dell’implementazine Microsoft del protocollo SMB sono disponibili ai seguenti link:

Autenticazione

Per l’autenticazione CIFS utilizza le procedure descritte nella  RFC 2478 (GSS-API) che consente al client o al server di richiedere autenticaione indipendentemete dalla scelta finale del metodo di autenticazione, che per CIFS può essere  Kerberos o NTLM (per default Windows 2000 o Windows XP in rete fanno una richiesta per un’autenticazione Kerberos).

Windows 2000 o Windows XP carica all’avvio entrambi i compoanenti Kerberos e NTLM Security Support Provider (SSP). Le applicazioni Microsoft eseguono una richiesta di negoziazione  verso la Security Support Provider Interface (SSPI) richiedere l’autenticazione. La richiesta di negoziazione selziona l’appropriato componente SSP per gestire la richeista di utenteicazione. Ciò significa che Windows 2000 o Windows XP in rete tenteranno l’autenticazione usando Kerberos SSP, mentre Windows 2000 o Windows XP standalone e Windows NT  useranno NTLM, quindi, ad esempio, un server CIFS Windows 2000 userà Kerberos per l’autenticazione.

Per ulteriori informazioni si veda CIFS Kerberos Authentication

Firma SMB (Server Message Block)

La firma SMB (o firme di protezione) è un meccanismo di protezione incluso nel protocollo SMB progettata per migliorare la protezione del protocollo ed è stata introdotta per la prima volta in Microsoft Windows NT 4.0 Service Pack 3 (SP3) e in Microsoft Windows 98.

La firma SMB e le firme di protezione possono essere configurate sia per il servizio Workstation (utilizzato per le connessioni in uscita) che per il servizio Server (utilizzato per le connessioni in ingresso).

Quando la firma SMB è attivata sia i client che supportano questa funzionalità sia quelli che non la supportano possono effettuare connessioni.

Quando invece la firma SMB è richiesta è necessario che questa funzionalità sia supportata da entrambi i computer della connessione SMB, in caso contrario la connessione SMB non verrà stabilita.

Per impostazione predefinita, la firma SMB è attivata per le sessioni SMB in uscita nei seguenti sistemi operativi:

  • Windows Server 2003
  • Windows XP
  • Windows 2000
  • Windows NT 4.0
  • Windows 98

Per impostazione predefinita, la firma SMB è attivata per le sessioni SMB in ingresso nei seguenti sistemi operativi:

  • Controller di dominio basati su Windows Server 2003
  • Controller di dominio basati su Windows 2000 Server
  • Controller di dominio basati su Windows NT 4.0 Server

Per impostazione predefinita, la firma SMB è richiesta per le sessioni SMB in ingresso sui controller di dominio basati su Windows Server 2003.

Occorre installare il Service Pack 6a (SP6a) sui client Windows NT 4.0 che interagiscono con un dominio basato su Windows Server 2003. Per l’esecuzione di NTLMv2 è necessario che i client basati su Windows 98 SE, Windows 98 e Windows 95 eseguano il client DS.

I client DS di Windows 98 SE, Windows 98 e Windows 95 inseriranno la firma SMB tramite i server Windows 2003 utilizzando l’autenticazione NTLM, ma non quella NTLMv2. Inoltre, i server Windows 2000 non risponderanno alle richieste di firma SMB inoltrate da tali client.

Per ulteriori informazioni si vedano: