
La realización de que me había metido en un proceso de sustitución no llegó de inmediato. Solo cuando comenzaron a llegar estaciones de trabajo de la organización superior con la distribución de 'Alt Linux' a bordo, sospeché que algo andaba mal.
Sin embargo, a medida que avanzaba por las etapas de aceptación de lo inevitable, me involucré y, de hecho, comencé a disfrutar un poco del proceso. En algún momento pensé que a este ritmo tarde o temprano tendría que separarme de las soluciones de organización del servicio de directorios de Microsoft y moverme hacia algo más exótico. Por lo tanto, para prepararme con anticipación para lo inevitable y tratar de captar tantos obstáculos ocultos como fuera posible, se decidió desplegar un entorno de prueba que incluyera:
- DC1 — Windows Server 2012R2
- DC2 — Alt Server 8.2
- File Server — Windows Server 2012R2
- PC1 — Windows 7
- PC2 — Alt Estación de Trabajo 8.2
Tareas del entorno:
- Desplegar un dominio basado en w2k12r2. Crear un conjunto mínimo de políticas de grupo (similar a las utilizadas en la infraestructura de trabajo), incluidas las políticas de redirección de carpetas de usuario (Descargas / Documentos / Escritorio). Al final, mi objetivo es que cuando un usuario cambie de un puesto de trabajo en Windows a Linux y viceversa, tenga acceso cómodo a sus documentos de trabajo.
- Introducción de Samba DC como segundo controlador. Verificación de la replicación del servicio de directorios y DNS
- Configuración de clientes Linux para trabajar con carpetas redirigidas
Implementación:
- Instalación e introducción del nuevo controladorLa instalación de MS Windows 2012R2 es bastante sencilla y más o menos comprensible. En Internet hay 1001 manuales sobre el despliegue de dominios en Windows tanto usando GUI como mediante Powershell, así que no lo repetiré una vez más, solo dejaré a la documentación oficial, para aquellos curiosos que quieran refrescar su memoria.
Sin embargo, hay un punto importante en este apartado. Hoy en día, Samba no puede trabajar con esquemas de directorio superiores a 2008R2.
Título del spoiler Más bien, los desarrolladores han declarado dicho soporte como experimental. Pero en la práctica, intentar introducir Samba como segundo DC en un dominio Windows existente con un esquema 69 se encontrará con el siguiente error
DsAddEntry falló con estado WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)
El problema es que Windows 2012 y 2012R2 utilizan herramientas WMI para trabajar con dominios y bosques, cuyo soporte estable se anunció solo para la versión Samba 4.11, que se lanzará antes de fin de año.
De esto se deduce que la única opción para introducir Samba en el dominio AD desplegado en un servidor 2012R2 es degradar el esquema de 69 a 47. Por supuesto, en una infraestructura de trabajo no hay que hacerlo sin razones de peso, pero aquí tenemos un banco de pruebas, así que ¿por qué no?Instalamos Alt Server 8.2. Durante la instalación, seleccionamos el perfil 'Servidor Samba-DC (controlador AD)'. En el servidor desplegado, realizamos una actualización completa del sistema e instalamos el paquete task-samba-dc, que arrastrará todo lo necesario.
# apt-get install task-samba-dcSi por alguna razón task-samba-dc, a pesar de las garantías de la documentación de Alt, se niega a instalar todo lo necesario.
# apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-develA continuación, pasamos a configurar Kerberos y obtener un ticket. Abrimos el archivo krb5.conf, vamos a la sección [libdefaults] y lo ajustamos de la siguiente manera:
# vim /etc/krb5.confdns_lookup_kdc = true dns_lookup_realm = true default_realm = TEST.LOCALSolicitamos un ticket
# kinit administrator Password for administrator@TEST.LOCAL:Verificamos la lista de tickets obtenidos de Kerberos
# klist Ticket cache: KEYRING:persistent:0:0 Default principal: administrator@TEST.LOCAL Valid starting Expires Service principal 16.05.2019 11:51:38 16.05.2019 21:51:38 krbtgt/TEST.LOCAL@TEST.LOCAL renew until 23.05.2019 11:51:35Ahora eliminamos o renombramos el archivo de configuración existente de Samba.
# mv smb.conf smb.conf.bak1Y finalmente, introducimos en el dominio AD como segundo controlador:
# samba-tool domain join test.local DC -U"TESTadministrator"La inclusión exitosa vendrá acompañada del siguiente registro
Buscando un DC escribible para el dominio 'test.local' Encontrado DC DC1.TEST.LOCAL Contraseña para [TESTadministrator]: Reconectando al maestro de nombres e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL El nombre DNS del nuevo maestro de nombres es DC1.TEST.LOCAL el grupo de trabajo es TEST el ámbito es TEST.LOCAL Añadiendo CN=DC2,OU=Controladores de Dominio,DC=TEST,DC=LOCAL Añadiendo CN=DC2,CN=Servidores,CN=Nombre-Del-Sitio-Por-Defecto,CN=Sitios,CN=Configuración,DC=TEST,DC=LOCAL Añadiendo CN=Configuraciones NTDS,CN=DC2,CN=Servidores,CN=Nombre-Del-Sitio-Por-Defecto,CN=Sitios,CN=Configuración,DC=TEST,DC=LOCAL Añadiendo SPNs a CN=DC2,OU=Controladores de Dominio,DC=TEST,DC=LOCAL Estableciendo la contraseña de cuenta para DC2$ Activando la cuenta Llamando a la provisión básica Buscando direcciones IPv4 Buscando direcciones IPv6 No se asignará ninguna dirección IPv6 Configurando share.ldb Configurando secrets.ldb Configurando el registro Configurando la base de datos de privilegios Configurando la base de datos idmap Configurando la base de datos SAM Configurando las particiones y configuraciones de sam.ldb Configurando sam.ldb rootDSE Pre-cargando el esquema de Samba 4 y AD Se ha generado una configuración de Kerberos adecuada para Samba AD en /var/lib/samba/private/krb5.conf Provisión OK para el DN del dominio DC=TEST,DC=LOCAL Iniciando replicación Schema-DN[CN=Esquema,CN=Configuración,DC=TEST,DC=LOCAL] objetos[402/1426] valores_enlazados[0/0] Schema-DN[CN=Esquema,CN=Configuración,DC=TEST,DC=LOCAL] objetos[804/1426] valores_enlazados[0/0] Schema-DN[CN=Esquema,CN=Configuración,DC=TEST,DC=LOCAL] objetos[1206/1426] valores_enlazados[0/0] Schema-DN[CN=Esquema,CN=Configuración,DC=TEST,DC=LOCAL] objetos[1608/1426] valores_enlazados[0/0] Schema-DN[CN=Esquema,CN=Configuración,DC=TEST,DC=LOCAL] objetos[1743/1426] valores_enlazados[0/0] Analizando y aplicando objetos del esquema Partición[CN=Configuración,DC=TEST,DC=LOCAL] objetos[402/2240] valores_enlazados[0/24] Partición[CN=Configuración,DC=TEST,DC=LOCAL] objetos[804/2240] valores_enlazados[0/24] Partición[CN=Configuración,DC=TEST,DC=LOCAL] objetos[1206/2240] valores_enlazados[0/24] Partición[CN=Configuración,DC=TEST,DC=LOCAL] objetos[1608/2240] valores_enlazados[0/24] Partición[CN=Configuración,DC=TEST,DC=LOCAL] objetos[1772/2240] valores_enlazados[24/24] Replicando objetos críticos desde el DN base del dominio Partición[DC=TEST,DC=LOCAL] objetos[109/110] valores_enlazados[26/29] Partición[DC=TEST,DC=LOCAL] objetos[394/5008] valores_enlazados[29/29] Listo con NC replicado siempre (base, configuración, esquema) Replicando DC=DomainDnsZones,DC=TEST,DC=LOCAL Partición[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objetos[42/42] valores_enlazados[0/0] Replicando DC=ForestDnsZones,DC=TEST,DC=LOCAL Partición[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objetos[20/20] valores_enlazados[0/0] Exop en[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objetos[3] valores_enlazados[0] Confirmando la base de datos SAM Añadiendo 1 registro DNS remoto para DC2.TEST.LOCAL Añadiendo registro DNS A DC2.TEST.LOCAL para IPv4 IP: 192.168.90.201 Añadiendo registro DNS CNAME 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL para DC2.TEST.LOCAL Todos los demás registros DNS (como registros _ldap SRV) se crearán samba_dnsupdate al primer inicio Replicando nuevos registros DNS en DC=DomainDnsZones,DC=TEST,DC=LOCAL Partición[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objetos[1/42] valores_enlazados[0/0] Replicando nuevos registros DNS en DC=ForestDnsZones,DC=TEST,DC=LOCAL Partición[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objetos[1/20] valores_enlazados[0/0] Enviando DsReplicaUpdateRefs para todas las particiones replicadas Estableciendo isSynchronized y dsServiceName Configurando la base de datos de secretos Unido al dominio TEST (SID S-1-5-21-3959064270-1572045903-2556826204) como un DCEn la herramienta ADUC debe aparecer un registro del nuevo DC en el dominio TEST.LOCAL, y en el administrador de DNS debe haber un nuevo registro A correspondiente a DC2.
- Replicación entre controladoresPrimero, verifiquemos el funcionamiento del servicio de replicación de directorios (DRS)
# samba-tool drs showreplTodos los intentos de replicación en la salida deben ser exitosos. En la lista de objetos KCC, nuestro DC1 en Windows debería aparecer dentro de los 15 minutos después de la entrada.
Nombre del Sitio: Default-First-Site-NameDC2 Opciones DSA: 0x00000001 GUID del objeto DSA: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf ID de invocación DSA: 017997b5-d718-41d7-a3f3-e57ab5151b5c ==== VECINOS ENTRANTES ==== DC=ForestDnsZones,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Lun May 27 12:56:31 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Lun May 27 12:56:31 2019 MSK DC=DomainDnsZones,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Lun May 27 12:56:32 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Lun May 27 12:56:32 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Lun May 27 12:56:32 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Lun May 27 12:56:32 2019 MSK DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Lun May 27 12:56:32 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Lun May 27 12:56:32 2019 MSK CN=Configuration,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Lun May 27 12:56:33 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Lun May 27 12:56:33 2019 MSK ==== VECINOS SALIENTES ==== DC=ForestDnsZones,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Jue May 23 16:40:03 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Jue May 23 16:40:03 2019 MSK DC=DomainDnsZones,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Jue May 23 16:40:03 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Jue May 23 16:40:03 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Jue May 23 16:40:08 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Jue May 23 16:40:08 2019 MSK DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Jue May 23 16:40:08 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Jue May 23 16:40:08 2019 MSK CN=Configuration,DC=test,DC=local Default-First-Site-NameDC1 a través de RPC GUID del objeto DSA: 60fb339d-efa3-4585-a42d-04974e6601b7 Último intento @ Lun May 27 12:12:17 2019 MSK fue exitoso 0 fallo(s) consecutivo(s). Último éxito @ Lun May 27 12:12:17 2019 MSK ==== OBJETOS DE CONEXIÓN KCC ==== Conexión -- Nombre de la conexión: 6d2652b3-e723-4af7-a19f-1ee48915753c Habilitado : VERDADERO Nombre DNS del servidor : DC1.test.local Nombre DN del servidor : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local TipoDeTransporte: RPC opciones: 0x00000001 Advertencia: ¡No hay NC replicado para la conexión!Advertencia «¡No hay NC replicado para la Conexión!» se puede ignorar sin problemas. Aparece porque al registrar un nuevo DC, Samba establece incorrectamente algunas banderas de replicación.
También sería bueno verificar la replicación de LDAP.
# samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -UadministratorEl comando mencionado anteriormente comparará los valores de los atributos de los objetos en el DC1 y DC2.
Ejemplo de replicación exitosa
* Comparando el contexto [DOMAIN]... * Objetos a comparar: 249 * Resultado para [DOMAIN]: ÉXITO * Comparando el contexto [CONFIGURATION]... * Objetos a comparar: 1750 * Resultado para [CONFIGURATION]: ÉXITO * Comparando el contexto [SCHEMA]... * Objetos a comparar: 1739 * Resultado para [SCHEMA]: ÉXITO * Comparando el contexto [DNSDOMAIN]... * Objetos a comparar: 42 * Resultado para [DNSDOMAIN]: ÉXITO * Comparando el contexto [DNSFOREST]... * Objetos a comparar: 20 * Resultado para [DNSFOREST]: ÉXITOEn algunos casos, los atributos de los objetos en diferentes controladores pueden diferir, y la salida del comando lo indicará. Pero no en todos los casos esto será un signo de problemas de replicación.
El siguiente paso es configurar manualmente una replicación estable del directorio SysVol.
El asunto es que Samba aún no soporta DFS-R, al igual que no soportaba el FRS anterior. Por lo tanto, para la replicación entre DC Samba y Windows, la única solución que funciona hoy en día es la replicación unidireccional mediante la herramienta Robocopy del paquete .Los desarrolladores de Samba, para evitar problemas de compatibilidad, recomiendan instalar primero el paquete de utilidades en una estación de trabajo normal, y después copiar Robocopy en el controlador en la carpeta «C:Program Files (x86)Windows Resource KitsTools»
Después de la instalación, en el programador de tareas en el controlador con Windows, creamos una tarea para ejecutar la replicación con los siguientes parámetros:
— Ejecutar para todos los usuarios
— Disparador para ejecutar Diariamente cada 5 minutos durante el día
— En acciones, especificamos la ruta a la herramienta robocopy, y como argumentos indicamos:DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /secEn este caso específico, copiamos el contenido del directorio SysVol desde DC1 a DC2.
- Carpetas de usuario portátiles mediante la configuración pam_mountHe encontrado dos soluciones viables para esta tarea mediante ensayo y error.
- Montaje completo de la carpeta de perfil de la red en la sección /home. Una opción sencilla. Funciona perfectamente si los nombres de las carpetas Mis documentos, Descargas y Escritorio coinciden en ambos sistemas operativos. Se asume que la PC con Linux ya ha sido unida al dominio y los usuarios inician sesión con sus cuentas de dominio, utilizando sssd como mecanismo de autenticación y autorización.
# vim /etc/security/pam_mount.conf.xml<volume uid="100000000-2000000000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)" mountpoint="~" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>donde:
- uid=«100000000-2000000000» — rango de UID asignado a los usuarios de dominio por SSSD
- server=«dfs» — nombre del servidor de archivos
- path=«Profile_Users/%(USER)» — recurso en el servidor de archivos que contiene el perfil del usuario
- mountpoint=»~» — punto de montaje en la carpeta personal del usuario
El nombre de usuario se pasa a la macrovariable «%(USER)», utilizada por pam_mount, para conectar nuestro recurso de red, tal como se ingresa en el gestor de pantalla. Por lo tanto, es importante que el inicio de sesión en el DM se realice sin especificar explícitamente el nombre de dominio.
En sssd.conf, esto se resuelve comentando o estableciendo el valor False en la opción use_fully_qualified_names, que activa el modo de nombres completos (incluido el dominio) para usuarios y grupos.
- El segundo método es menos directo y más rudimentario, y en mi opinión más conveniente y preferible. La diferencia con el primero radica únicamente en la configuración de pam_mount.
# vim /etc/security/pam_mount.conf.xmlEs decir, simplemente montamos cada una de nuestras carpetas en el directorio correspondiente por separado.
- Montaje completo de la carpeta de perfil de la red en la sección /home. Una opción sencilla. Funciona perfectamente si los nombres de las carpetas Mis documentos, Descargas y Escritorio coinciden en ambos sistemas operativos. Se asume que la PC con Linux ya ha sido unida al dominio y los usuarios inician sesión con sus cuentas de dominio, utilizando sssd como mecanismo de autenticación y autorización.
Conclusiones
Durante medio mes de trabajo en el banco de pruebas, esta configuración sobrevivió exitosamente a varias desconexiones prolongadas y cortas de ambos controladores, prácticamente sin consecuencias para los clientes (una vez, un cliente en Windows 7 perdió la relación de confianza).
En general, tengo una impresión bastante positiva del trabajo con este producto, a pesar de todos los matices que enfrenté, tanto en el artículo como "tras bambalinas".
Hay muchas piedras en el camino, y habrá que pescarlas en gran cantidad durante el trabajo con Samba. Sin embargo, hoy en día no hay otras soluciones que permitan organizar un entorno híbrido, utilizando el servicio de directorio y sin usar Windows.
Fuente: habr.com
