Servicio de compartición de ficheros y Dominios

Zentyal usa Samba para implementar SMB/CIFS [4] y gestionar el dominio, Kerberos [5] para los servicios de autenticación.

[4]http://es.wikipedia.org/wiki/Samba_(programa)
[5]http://es.wikipedia.org/wiki/Kerberos

Configurar Zentyal como un servidor de Dominio Standalone

Antes de activar el módulo de Compartición de Ficheros y Dominios tenemos que revisar ciertas configuraciones de nuestro servidor. Durante la activación del módulo el Dominio se provisiona. Esto quiere decir que las configuraciones para LDAP, DNS y Kerberos son generadas, creando los objetos de LDAP, los Principales de seguridad de Keberos, las zonas específicas de DNS y demás. Esta operación puede ser revertida, pero es más costos que activar y desactivar el resto de módulos.

Antes de activar Compartición de ficheros y Dominios por primera vez nos aseguraremos que:

  • Hemos configurado el modo de operación, por defecto Controlador del Dominio, pero también podemos configurar el servidor para ser un controlador adicional unido a otros nodo. En este último caso, configuraremos el modo de operaciones y las credenciales antes de activar el módulo, y seguiremos las instrucciones para este supuesto en las siguientes secciones. Si el servidor va a funcionar como primer Controlador del Dominio, no es necesario modificar los datos por defecto.
_images/main_controller.png

Zentyal como controlador único del dominio

  • El dominio local y el hostname son correctos. Podemos comprobar esto desde Sistema ‣ General. Si deseamos modificar estos datos, reiniciaremos el servidor antes de activar el módulo.
_images/hostanddomain.png

Comprobando nombre del host y dominio

  • En la configuración del módulo DNS tenemos un dominio “local” que coincide con el que tenemos en Sistema ‣ General, el dominio contiene nuestro hostname como registro (A), sección Nombres de máquinas, este nombre debe estar asociado a, por lo menos, una IP interna. Añadiremos todas las IP internas donde deseemos proporcionar servicios del dominio a este Hostname.
_images/dns.png

zentyal hostname dentro del dominio zentyal-domain.lan, apuntando a todas las IP internas

  • El módulo de NTP está instalado y activado, y los clientes reciben esta sincronización NTP, preferentemente a través de DHCP.

Una vez que hayamos activado Compartición de Ficheros podemos proveer carpetas compartidas, unir clientes Windows al dominio, configurar y enlazar las políticas GPO y aceptar conexiones de los nuevos controladores de dominio adicionales, tanto Windows Server como Zentyal

Configurar un servidor de ficheros con Zentyal

Una vez que hayamos activado el módulo Compartición de Ficheros (ya sea como Controlador de dominio o como Controlador Adicional del dominio), el servidor podrá ofrecer la funcionalidad de un servidor de ficheros SMB/CIFS.

Por defecto cada usuario de LDAP tiene un directorio personal /home/<nombredelservidor> en el servidor. Si el módulo está activado, el directorio será accesible al usuario (y sólo al usuario) usando SMB/CIFS. Adicionalmente, si es un cliente Windows unido al dominio, este directorio se montará automáticamente como el volumen H:.

Para crear un nuevo directorio compartido, accederemos a Compartición de Ficheros, tab de Directorios compartidos y seleccionaremos Añadir nuevo.

_images/share_add.png

Añadiendo directorio compartido

Habilitado:
Por defecto activado, se está compartiendo este directorio, Podemos desmarcarlo para dejar de compartir.
Nombre del recurso compartido:
El nombre de esta carpeta compartida para nuestros usuarios.
Ruta del recurso compartido:
Ruta en el sistema de ficheros donde se encuentra el recurso, por defecto dentro de /home/samba/shares, o especificar un directorio diferente usando Ruta del sistema de ficheros.
Comentario:
Descripción más detallada del contenido del recurso.
Acceso de invitado:
Activando esta opción será posible acceder al directorio sin autenticación previa. Las demás políticas de acceso asociadas a esta carpeta serán ignoradas.
_images/shares.png

Lista de carpetas compartidas

Los directorios compartidos pueden ser gestionados accediendo a Control de Acceso. Usando el botón Añadir nuevo, podemos asignar permisos de lectura, lectura escritura o administrador a usuarios y grupos. Si un usuario es el administrador de un directorio compartido, puede leer, escribir y borrar cualquier fichero dentro de ese directorio.

_images/share_acl.png

Añadiendo una nueva ACL (Lista de control de acceso)

Si deseamos almacenar los ficheros eliminados en un directorio especial, llamado Papelera de Reciclaje, podemos marcar la opción Habilitar papelera de reciclaje desde el tab Papelera de reciclaje. Si no necesitamos activar esta característica para todos los recursos compartidos, podemos añadir excepciones con la lista Excluir de la papelera de reciclaje. Otras características de esta opción, como el nombre del directorio pueden ser modificadas desde el fichero /etc/zentyal/samba.conf.

_images/recycle-bin.png

Papelera de reciclaje

Accediendo al tab Antivirus, podemos activar el rastreo de virus en nuestros ficheros compartidos. También es posible añadir excepciones en las carpetas donde no se requiere el uso de antivirus. Para disponer de esta característica, el módulo de antivirus debe estar instalado y activado.

_images/samba_av.png

Antivirus analizando las carpetas

Si un virus es detectado en las carpetas seleccionadas, el fichero será movido a una carpeta especial de cuarentena /var/lib/zentyal/quarantine. Este comportamiento impide que el malware se propague por las redes de nuestro servidores, pero el administrador del sistema puede analizar el fichero (en algunas ocasiones los virus vienen embebidos en ficheros útiles, como las macros de hojas de cálculo).

_images/quarantine.png

Fichero de malware movido a directorio en cuarentena

SMB/CIFS es un protocolo muy común que puede ser usado de forma nativa en cualquier cliente Windows, la mayoría de distribuciones de Linux (Usando el explorador de ficheros Nautilus, por ejemplo), y usando aplicaciones dedicadas también en Android o iOS.

Además de esto, el servicio de Compartición de ficheros está estrechamente integrado con el subsistema de Kerberos (Ver Autenticación con Kerberos más abajo), lo que significa que si los usuarios se han unido al dominio o han conseguido el ticket principal de Kerberos de cualquier otro modo, las ACL explicadas más arriba se aplicarán sin necesidad de intervención del usuario.

Uniendo un cliente Windows al dominio

El proceso de unir un cliente Windows al dominio de Zentyal es idéntico a unirse a un servidor Windows.

En primer lugar tendremos que crear un Domain Admin, que no debe ser confundido con la cuenta de administración de Zentyal. Un Domain Admin es cualquier usuario del LDAP que esté agregado al grupo Domain Admins

_images/domain_admin.png

Añadiendo un usuario Domain Admin a LDAP

Ahora, accediendo al cliente windows

  • Nos aseguraremos que el servidor Zentyal y el cliente Windows pueden alcanzarse mutuamente a través de una red local
  • Nos aseguraremos de que el cliente Windows tiene a Zentyal como su servidor DNS
  • Nos aseguraremos de que tanto el cliente como el servidor tienen la hora perfectamente sincronizada usando NTP

Después de comprobar estas precondiciones, nos uniremos al dominio de la manera habitual

_images/join_win1.png

Uniéndose al dominio con Windows

Para los credenciales, usaremos el Domain Admin que hemos creado previamente

_images/join_win2.png

Credenciales del Domain Admin

Tras completar el proceso, nuestro cliente Windows aparecerá en el árbol de LDAP bajo la Computers OU, aplicará las GPO configuradas y obtendrá el ticket de Kerberos automáticamente al iniciar sesión (Ver la sección de Kerberos).

_images/join_win3.png

Cliente Windows en el árbol LDAP

Ahora ya podemos iniciar sesión en nuestro cliente Windows con los usuarios creados en el LDAP de Zentyal.

Autenticación con Kerberos

Kerberos es un sistema de autenticación automática que se integra con Samba4/Active Directory y con todos los demás servicios compatibles en el dominio.

El cliente solo necesita introducir sus credenciales una vez para obtener el ticket “principal” de, Ticket Granting Ticket.

Esta operación se realiza automáticamente en los clientes Windows unidos al dominio, las credenciales de inicio de sesión se envían al Controlador de Dominio (Cualquiera de ellos) y su el usuario se verifica, el controlador envía el TGT junto con otros tickets necesarios para la compartición de ficheros al cliente.

Puedes comprobar la lista de tickets activos en el cliente usando el comando klist

_images/winkrb.png

Tickets de Kerberos tras iniciar sesión

En sistemas Ubuntu/Debian también es posible obtener el ticket TGT de Kerberos instalando el paquete heimdal-clients

_images/ubuntukrb.png

Obteniendo el TGT de Kerberos en Ubuntu

Una vez que el cliente ha obtenido el ticket TGT de Kerberos, todos los demás servicios compatibles con Kerberos del dominio aceptaran los tickets proporcionados por el cliente, que son obtenidos automáticamente cuando se solicita acceder al servicio.

Este mecanismo de autenticación tiene dos ventajas principales:

  • Seguridad: Los credenciales viajan seguros por la red local, el sistema es resistente al sniffing y a los ataques de replay.
  • Comodidad: Los usuarios sólo necesitan introducir sus credenciales una vez, los demás tickets de autorización se obtienen de forma transparente. Por ejemplo, es posible usar un Proxy HTTP no transparente sin necesidad de importunar a los usuarios con una pantalla de inicio de sesión cada vez que comienzan a navegar.

Servicios de Zentyal compatibles con la autorización Kerberos en esta versión:

  • Compartición de Ficheros (SMB/CIFS)
  • Proxy HTTP
  • Correo Electrónico
  • Trabajo en grupo (Zarafa)

Es importante observar que todos los Controladores de Dominio están integrados en el mismo contexto de Kerberos. Por ejemplo, un servidor Windows puede proveer el ticket TGT de Kerberos y más tarde el usuario puede usar un Proxy HTTP ofrecido por un servidor Zentyal unido al mismo dominio sin necesidad de introducir los credenciales de nuevo.

Políticas de Grupo (GPO)

Las políticas de grupo o Group Policy Objects (GPO) son políticas asociadas a los contenedores del Dominio.

Usando GPOs, podemos realizar configuraciones automáticas o comunicar restricciones a los clientes, tenemos políticas globales para todo el dominio, políticas para las Unidades Organizativas y también para los Sites (localizaciones físicas).

Ejemplos típicos del uso de una GPO incluirían:

  • Instalar y actualizar paquetes de software sin intervención del usuario
  • Configurar el Proxy HTTP de los navegadores e instalar la Autoridad de Certificación del dominio
  • Enviar scripts que serán ejecutados al inicio y/o cierre de sesión
  • Restringir partes de la configuración del cliente Windows al usuario

Zentyal puede importar y hacer cumplir cualquier GPO cuando esta unido a un servidor Windows a través de la replicación del SYSVOL [9] , que se realiza automáticamente. Usando la propia interfaz web de Zentyal es posible crear nuevas GPO para los scripts de inicio y fin de sesión.

Accediendo a Dominio ‣ Objetos de Política de Grupo (GPO), podemos ver la Default Domain Policy que será aplicada a todas las máquinas del dominio y la Default Domain Controllers Policy que sera aplicada a todos los servidores controladores del Dominio.

_images/gpolist.png

Lista de GPO y formulario para crear nuevas

Accediendo al icono de configuración dentro de una GPO, podemos configurar scripts de inicio y fin de sesión, que pueden ser asociados con los Equipos o con los Usuarios.

_images/logon.png

Añadiendo un script de inicio de sesión a los usuarios relacionados con esta GPO

Una vez se haya creado una GPO, es necesario asociarla a un contenedor para que tenga efecto sobre los equipos/usuarios contenidos. Podremos hacer esto accediendo al menú Dominio ‣ Enlaces para Políticas de Grupo.

_images/linkgpo.png

Enlazando la GPO con el OU de Ventas

[11]http://en.wikipedia.org/wiki/File_Replication_Service

Incluso si no tenemos ningún servidor Windows en el dominio, es posible crear y propagar cualquier GPO usando cualquier cliente Windows unido al dominio. Para ello tendremos que instalar la herramienta RSAT de Microsoft e iniciar sesión con el usuario que hemos configurado como administrador del dominio.

_images/rsat.png

Gestionando las GPO con la herramienta RSAT en un cliente Windows

Usando esta herramienta, las GPO serán añadidas automáticamente al SYSVOL del dominio y ejecutadas desde el servidor Zentyal en todos los demás clientes.

Unir Zentyal Server a un dominio existente

Gracias a la integración con tecnologías Samba4, Zentyal es capaz de convertirse en un Controlador Adicional de un dominio existente, ya sea uniéndose a un servidor Windows o a otro controlador basado en Samba4, por ejemplo, otro servidor Zentyal.

Tras unirse al dominio, la información de LDAP, DNS, Kerberos y el directorio SYSVOL serán replicados de manera transparente.

Tenemos que verificar ciertos puntos antes de unirnos a otro controlador

  • La información local del directorio LDAP de Zentyal será destruida, ya que se sobrescribirá la información de directorio del dominio
  • Todos los controladores deben tener la hora perfectamente sincronizada, a ser posible usando NTP
  • Cuando Zentyal reciba los usuarios sincronizados desde el dominio, creará sus directorios de usuario asociados /home/<nombredeusuario>, comprueba que estos nuevos directorios no existen previamente para evitar colisiones
  • La correcta configuración del sistema de DNS es crítica, los demás controladores de dominio enviarán la información a la IP proporcionada por el sistema de DNS

Si tenemos alguna IP externa asociada a nuestro hostname (por ejemplo, zentyal.zentyal-domain.lan) podremos tener problemas de sincronización si alguno de los demás controladores intenta usar esa IP para enviar los datos. Incluso si tenemos varias IP internas, podemos sufrir el mismo problema, por que el sistema de DNS lleva a cabo un round-robin por defecto cuando responde a las peticiones. Si este es su caso, puede ser recomendable descomentar el parámetro sortlist = yes en el fichero /etc/zentyal/dns.conf y reiniciar el servidor DNS. De esta manera el DNS ordenará las IP de la respuesta, poniendo primero la que coincida con la máscara de red de la máquina haciendo la petición.

Una vez que se hayan comprobado todos estos puntos, podemos unirnos al dominio desde Dominio ‣ Configuración

_images/join_windows.png

Zentyal server uniéndose a un servidor Windows como controlador adicional

Guardar los cambios llevará más tiempo del habitual en este caso, dado que Samba4 se estará provisionando y todos los datos del dominio necesitan ser replicados.

_images/zentyal_synced.png

Árbol LDAP de Zentyal replicado con el servidor Windows

Explorando el árbol LDAP desde el servidor Windows también nos mostrará el nuevo controlador de dominio

_images/windows_synced.png

Árbol LDAP de Windows mostrando el nuevo controlador

Desde este momento la información de LDAP, dominio DNS asociado a samba (el dominio local) y Kerberos será sincronizada en ambas direcciones. Es posible gestionar la información de LDAP (usuarios, grupos, OUs...) en cualquiera de los controladores y los cambios se replicarán en los demás.

El proceso para unirse a otro servidor Zentyal es idéntico al descrito.

Migración Total

Todos los controladores de dominio poseen una réplica de la información de dominio comentada anteriormente, sin embargo existen roles específicos que pertenecen a máquinas concretas, llamados los roles FSMO o Operations Masters.

Los Operations Masters son críticos para el funcionamiento del dominio, hay cinco roles FSMO:

  • Schema master: a cargo de la definición del árbol LDAP, envía actualizaciones de este formato
  • Domain naming master: Crear y borrar dominios en el bosque
  • Infrastructure master: Provee de identificadores GUID, SID y DN únicos en el dominio
  • Relative ID Master: ID relativas asignadas a los principales de seguridad
  • PDC Emulator: Compatibilidad con máquinas Windows 2000/2003 hosts, servidor de hora principal

Usando el script de Migración Total, podemos transferir estos roles a un servidor Zentyal unido al dominio.

Desde el directorio /usr/share/zentyal-samba ejecutamos:

administrator@zentyal:/usr/share/zentyal-samba$ sudo ./ad-migrate
WARNING: This script will transfer all FSMO roles from the current owners to
        the local server.
        After all roles has been successfully transferred, you can shutdown
        the other domain controllers.
Do you want to continue [Y/n]? Y

Checking server mode...

Checking if server is provisioned...

Synchronizing sysvol share...
syncing    [SYSVOL] files and directories including ACLs, without DOS Attributes

Transferring FSMO roles...
Transferring Schema Master role from owner: CN=NTDS Settings,CN=WINDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=zentyal-domain,DC=lan
Transferring Domain Naming Master role from owner: CN=NTDS Settings,CN=WINDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=zentyal-domain,DC=lan
Transferring PDC Emulation Master role from owner: CN=NTDS Settings,CN=WINDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=zentyal-domain,DC=lan
Transferring RID Allocation Master role from owner: CN=NTDS Settings,CN=WINDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=zentyal-domain,DC=lan
Transferring Infrastructure Master role from owner: CN=NTDS Settings,CN=WINDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=zentyal-domain,DC=lan

Migrated successfully!

De ahora en adelante, Zentyal será el único controlador crítico para el dominio y todas los servicios de dominio seguirán funcionando incluso si apagamos los demás controladores, exceptuando consideraciones de red y escalabilidad.

Limitaciones conocidas

Es importante comprobar la lista de limitaciones conocidas de Samba4 para esta versión antes de planificar el dominio:

  • Sólo un dominio, en un único bosque, Samba no soporta múltiples dominios ni múltiples bosques.
  • El nivel funcional del dominio ha de ser mínimo 2003 y máximo 2012
  • El nombre de host no puede coincidir con el nombre NETBIOS, el nombre NETBIOS se genera a partir de la parte izquierda del nombre de dominio, por ejemplo, si el nombre de host es ‘zentyal’, el nombre de dominio no puede ser ‘zentyal.lan’, pero si ‘zentyal-domain.lan’
  • Las relaciones de confianzas entre dominios y bosques no están soportadas
  • Las GPO se sincronizarán desde los servidores Windows hacia los servidores Zentyal, pero no a la inversa
  • No es posible combinar sincronización Samba4 con master/slave
  • No se soportan usuarios con nombres no-ASCII (tildes, eñes, guión)