Intro

Samba es una de las herramientas más empleadas para compartir archivos. Es tan popular porque es la que permite compartir archivos con máquinas Windows. El mérito reside en que sin estar desarrollada por Microsoft, se ha puesto tanto esfuerzo en ella que los desarrolladores han conseguido desentrañar el protocolo de comunicación casi por completo.

Sin embargo, una de las asignaturas pendientes del protocolo de Microsoft (y por tanto también de samba) es la seguridad, porque hasta las últimas versiones los datos no se encriptaban y viajaban en plano por los cables, lo que les hacían vulnerables antes cualquier sniffer de red. Los últimos protocolos de samba ya permiten encriptación y lo que para algunos es una bendición porque evita que sus datos corran peligro de ser husmeados, para otros implica que sus sistemas no se puedan conectar al servidor.

Para liar más las cosas, las últimas actualizaciones de Windows 10 impiden la conexión por defecto a servidores samba que no fuerzan la encriptación.

 

Conectar clientes de Windows 10 sin forzar la encriptación del servidor samba

En la versión Windows 10 fall y en la 1709 de Windows server 2016 se ha deshabilitado por defecto el acceso invitado a SMB2 (ver ref. bibliográfica 1).

Los clientes así configurados (que son todos los que se habían actualizado) no se pueden conectar a un servidor samba salvo que tenga la siguiente opción en la configuración global en smb.conf:

smb encrypt=force

Para permitir a los windows 10 que se conecten a samba sin forzar la encriptación hemos de modificar el valor de «Habilitar incios de sesión de invitado no seguro» desde el valor original «No configurada» hasta «Habilitada».

Esta directiva la encontraremos de la siguiente forma:

Ejecutamos gpedit.msc en la ventana de «Ejecutar» o en la de Cortana.

«Directiva de Equipo local» -> «Configuración del equipo» -> «Plantillas administrativas» ->»Red» -> «Estación de trabajo Lanman»

 

Conectar clientes Linux

En este caso tenemos dos opciones:

  • Conectar mediante smbclient. Válido para todos los kernel
  • Montar el share con cifs. Válido para kernel desde el 4.8.0-54.57.

 

Conectar mediante smbclient

Habría que incluir la opción -mSMB3 en el comando smbclient:

# smbclient //smbcect.uv.es/chemi -mSMB3

 

Montar el share con cifs

Para aquellos sistemas que tengan un kernel igual o superior al 4.8.0-54.57, es posible montar el share con el siguiente comando:

# sudo mount -t cifs //servidor.samba.mio/SHARE /directorio/local -o username=minombre,noexec,seal,vers=3.0

La magia de este comando está en la opción no documentada (aún) seal. Sin seal no es posible la conexión.

Además de seal es necesario indicar al comando mount que ha de emplear la versión 3.0 de samba.

Para evitar dar permisos de root a los usuarios que deban de montar shares de samba, podemos agregarlos algrupo samba y añadir la siguiente línea a la sección «group» cuando hacemos visudo (ref. 4):

%samba ALL=(ALL) /bin/mount,/bin/umount,/sbin/mount.cifs,/sbin/umount.cifs

 

Bibliografía

  1. Guest access in SMB2 disabled by default in Windows 10 Fall Creators Update and Windows Server 2016 version 1709
  2. Windows Server 2012 R2: Which version of the SMB protocol (SMB 1.0, SMB 2.0, SMB 2.1, SMB 3.0 or SMB 3.02) are you using?
  3. SMB 3.1.1 Encryption in Windows 10
  4. Samba/SambaClientGuide