====== Samba4 ====== ===== Descripción ===== Samba 4 es una implementación del control del Dominio de MS completamente compatible con Active Directory.\\ ===== Prerequistos ===== Nada un linux moderno .. suele ser.\\ ===== Instalación ===== ==== Debian ==== Instale de los rpositorios\\ \\ apt-get install samba ldb-tools winbind smbclient ldb-tools smbldap-tools cifs-utils  libnss-winbind libpam-winbind\\ \\ Eso termina montando todas las dependencias\\ \\ \\ **CentOS/RHEL** yum install gcc libacl-devel libblkid-devel gnutls-devel  readline-devel python-devel gdb pkgconfig krb5-workstation  zlib-devel setroubleshoot-server libaio-devel  setroubleshoot-plugins policycoreutils-python \\\\    libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel  libxml2-devel libacl-devel libsepol-devel libattr-devel  keyutils-libs-devel cyrus-sasl-devel cups-devel bind-utils\\ \\ Si va a compartir directorios, asegurese que tengan en el fstab tenga los opciones de atributos extendidos: /dev/hda3 /home ext3 user_xattr,acl,barrier=1 1 1   ===== Configuración ===== ==== 1. Creando el dominio ==== Garantice que no tiene el /etc/samba/smb.conf .. deje que la herramienta lo cree\\ [root@alpha ~]# /usr/local/samba/bin/samba-tool domain provisionRealm: expert.expertltda.com Domain [expert]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [192.168.8.202]: noneAdministrator password: // Importante: Tenga en cuenta la complejida del password: MInimo 8 caracteres, una mayuscula y un numeroRetype password: Looking up IPv4 addressesLooking up IPv6 addresses....... Populating DomainDnsZones and ForestDnsZones partitionsSetting up sam.ldb rootDSE marking as synchronizedFixing provision GUIDsA Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.confOnce the above files are installed, your Samba4 server will be ready to useServer Role: active directory domain controllerHostname: alphaNetBIOS Domain: EXPERTDNS Domain: expert.expertltda.comDOMAIN SID: S-1-5-21-1450233174-2261187801-2291801002https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_ControllerOJO .. en el systemctl de Debian 9 toca desahbilitar un poco de cosas- https://www.server-world.info/en/note?os=Debian_9&p=samba&f=4 ==== 2. Comprobando conectividad con samba   ==== Si lo monto en /usr/local/samba no olvide colocar el directorio en el PATH\\ \\ Compruebe que todo esta corriendo $ smbclient --version Eso debe mostrar algo como "Version 4.0.XXXXX". COrra el sigueinte comando para listar los compartidos $ smbclient -L localhost -U% La salida debe ser algo similar a esto: Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.0.0) netlogon y sysvol son base para el funcionamiento de AD. SI falla este comando reinicie samba: $ /etc/init.d/samba-ad-dc stop $ /etc/init.d/samba-ad-dc start Pruebe la autenticacion: $ smbclient //localhost/netlogon -UAdministrator%'p4$$word' -c 'ls' Debe ver algo como esto:\\ \\ Domain=[EXPERT] OS=[Unix] Server=[Samba 4.0.6]\\   .                                   D        0  Thu Jun  6 09:15:35 2013\\   ..                                  D        0  Thu Jun  6 09:17:24 2013\\ \\         40317 blocks of size 524288. 36220 blocks available\\  \\  \\ Agregue un usuario para probar\\ \\   $  samba-tool user create skina\\ \\ Authenticando contra winbind\\ \\    $  ntlm_auth --request-nt-key --domain=COLMINUTO-EXT --username=skina --password='Nio4Las2Oo'\\ \\    $  wbinfo --ntlmv2 -a skina%Nio4Las2Oo\\   ==== 3. El administrador no vence ====    $  samba-tool user setexpiry administrator --noexpiry\\   ===== Trucos ===== ==== 1. Herramientas de testeo o consulta ====     $  ldbsearch -H /var/lib/samba/private/sam.ldb '(&(objectclass=person))'\\ \\     $  ldbsearch -H /var/lib/samba/private/sam.ldb '(invocationId=*)' --cross-ncs objectguid\\ \\     $ netstat -tunap |grep samba\\ \\     $  wbinfo -u\\ \\     $  host -t SRV _ldap._tcp.codema.coop.\\ \\     $  samba-tool fsmo show\\ \\     $  wbinfo --name-to-sid fraterneo\\ ==== 2. Manipular el DNS con smb-tool ==== \\ Añadir un registro A al servicio DNS:\\     $ samba-tool dns add 10.0.1.130 lab.codesa.co.cu pdc-master-1.lab.codesa.co.cu A ‘10.0.1.130’\\ \\ Añadir un registro MX al servicio DNS:\\    $   samba-tool dns add 10.0.1.130 lab.codesa.co.cu lab.codesa.co.cu MX ‘mailserver.lab.codesa.co.cu 5’\\ \\ Creación de una zona inversa en el servicio DNS:\\    $  samba-tool dns zonecreate 10.0.1.130 1.0.10.in-addr.arpa\\ \\ Creación de un registro PTR al servicio DNS:\\   $  samba-tool dns add 10.0.1.130 1.0.10.in-addr.arpa 140.1.0.10.in-addr.arpa PTR ‘ws-1.lab.codesa.co.cu’\\ \\ \\   $  samba-tool dns zoneinfo 10.0.1.130 lab.codesa.co.cu\\   $  samba-tool dns zonelist  192.168.10.18\\ \\   $  samba-tool dns delete 10.0.1.130 lab.codesa.co.cu w7-test.lab.codesa.co.cu A ‘10.0.2.92’\\ \\ \\ ==== 2. Usuarios y grupos con smb-tool ==== Añadir un usuario en el dominio:\\ root@pdc-master-1:~# samba-tool user add bolodia\\ \\ o\\ \\   $  samba-tool user add jvillamil --surname="Villamil" --given-name="Jorge" --initials="JV" --mail-address="jvillamil@codema.com.co"\\ \\ \\ +++  https:%%//%%www.server-world.info/en/note?os=CentOS_7&p=samba&f=5\\ \\ -------------------\\ \\ Añadir un usuario con los atributos UNIX en el dominio:\\ root@pdc-master-1:~# samba-tool user add bolodia –uid-number=500 –gid-number=500 –login-shell=/bin/false –uid=bolodia\\ \\ New Password: \\ Retype Password: \\ User ‘bolodia’ created successfully\\ \\ Eliminar un usuario del dominio:\\ root@pdc-master-1:~# samba-tool user delete bolodia\\ \\ ldb_wrap open of secrets.ldb\\ Deleted user bolodia\\ \\ Ver lista de usuarios del dominio:\\ root@pdc-master-1:~# samba-tool user list\\ \\ ldb_wrap open of secrets.ldb\\ \\ bolodia\\ Administrator\\ krbtgt\\ Guest\\ \\ Añadir un grupo en el dominio:\\ root@pdc-master-1:~# samba-tool group add “Grupo Informatica”\\ \\ ldb_wrap open of secrets.ldb\\ Added group Grupo Informatica\\ \\ Eliminando un grupo del dominio:\\ root@pdc-master-1:~# samba-tool group delete “Grupo Informatica”\\ \\ ldb_wrap open of secrets.ldb\\ Deleted group Grupo Informatica\\ \\ Añadiendo miembros a un grupo del dominio:\\ root@pdc-master-1:~# samba-tool group addmembers “Grupo Informatica” bolodia\\ \\ ldb_wrap open of secrets.ldb\\ Added members to group Grupo Informatica\\ \\ Listar miembros de un grupo del dominio:\\ root@pdc-master-1:~# samba-tool group listmembers “Grupo Informatica”\\ \\ ldb_wrap open of secrets.ldb\\ bolodia\\ \\ Eliminar miembros de un grupo del dominio:\\ root@pdc-master-1:~# samba-tool group removemembers “Grupo Informatica” bolodia\\ \\ ldb_wrap open of secrets.ldb\\ Removed members from group Grupo Informatica\\ \\ Desactivar regla de complejidad de las contraseñas en el dominio:\\ root@pdc-master-1:~# samba-tool domain passwordsettings set --complexity off\\ \\ Password complexity deactivated!\\ All changes applied successfully!\\ \\ Activar regla de complejidad de las contraseñas en el dominio:\\ root@pdc-master-1:~# samba-tool domain passwordsettings set --complexity on\\ \\ Password complexity activated!\\ All changes applied successfully!\\ \\ Establecer longitud mínima de las contraseñas en el dominio:\\ Ejemplo 1 (Longitud mínima de 6 caracteres):\\ \\ root@pdc-master-1:~# samba-tool domain passwordsettings set –min-pwd-length=6\\ \\ Minimum password length changed!\\ All changes applied successfully!\\ \\ Ejemplo 2 (Longitud mínima de 8 caracteres):\\ \\ root@pdc-master-1:~# samba-tool domain passwordsettings set –min-pwd-length=8\\ Minimum password length changed!\\ All changes applied successfully!\\ \\ Resetear la contraseña del Administrador del Dominio (o expiró o se nos olvidó)\\ root@pdc-master-1:~# samba-tool user setpassword Administrator\\ New Password:\\ Changed password OK\\ root@pdc-karas:~#\\ ==== 3. Como pegar maquinas a un Dominio ==== Un windows   https:%%//%%wiki.samba.org/index.php/Joining_a_Windows_host_to_a_domain\\ \\ Un linux    https:%%//%%wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member\\ \\ Esto puede ayudar\\ \\ https:%%//%%wiki.samba.org/index.php/Required_settings_for_NT4-style_domains\\ \\ https:%%//%%samba.tranquil.it/doc/en/samba_config_server/debian/server_secondary_debian.html#server-secondary-debian\\ ==== 4. Como pego otro DC a un dominio (forest) ==== NUNCA replique si no tiene el sistema usando BIND9_DLZ .. NO FUNCIONA\\ \\ - Primero instale samba y kerberos :-\\ - Borre el smb.conf\\ - Peguelo al dominio con  samba-tool domain join codema.coop DC -U"CODEMA-W10/Administrator" --realm=codema.coop\\ - Pruebe el DNS o cosas similares para ver com estan\\ \\ ++ samba-tool drs showrepl++ samba-tool ldapcmp ldap://DC1 ldap://DC2 -Uadministrator domain \\ - http:%%//%%www.golinuxhub.com/2014/02/how-to-configure-samba-4-secondary.html\\ - https:%%//%%wiki.samba.org/index.php/Joining_a_Samba_DC_to_an_Existing_Active_Directory\\ - https:%%//%%wiki.samba.org/index.php/Samba-tool_ldapcmp\\ \\ \\ +++  OJO .. en Samba 4.3.8 es obligatorio montar winbind !! si no no pega las maquinas\\ \\ +++ Todos los problemas de transfernecias de dominio estan basadas en los DNS .. el dice quien controla.\\ \\ Verifique si la replica anda\\ \\ https:%%//%%wiki.samba.org/index.php/Verifying_the_Directory_Replication_Statuses\\ \\ \\ Pruebe la replica a mano\\ \\ samba-tool drs replicate munich.cucuta.gov.co berlin.cucuta.gov.co CN=Configuration,DC=cucuta,DC=gov,DC=co\\ \\ \\ ==== 4. Como saco un DC de un dominio (forest) ==== \\ https:%%//%%wiki.samba.org/index.php/Demoting_a_Samba_AD_DC\\ \\ \\ ==== 5. Usar bind como backend de DNS ==== Sucede que cuando se complican los DNS o tiene varios servidores .. el servidor interno de DNS se enreda entonces mejor usar BIND\\ \\ - https:%%//%%wiki.samba.org/index.php/Setting_up_a_BIND_DNS_Server\\ - https:%%//%%wiki.samba.org/index.php/BIND9_DLZ_DNS_Back_End\\ - https:%%//%%wiki.samba.org/index.php/Changing_the_DNS_Back_End_of_a_Samba_AD_DC\\ \\ El problema esta en que el bind estandar de paquete no viene ni con el soporte de ldopen o de los modulos DLZ . .entonces toco reconstruirlo metiendole mano a debian/rules agregandole\\ \\         --with-dlz-postgres=no --with-dlz-mysql=no --with-dlz-bdb=yes --with-dlz-filesystem=yes \\\\         --with-dlz-ldap=yes  --with-dlz-stub=yes --with-dlopen=yes \\\\ \\ Y seguir el estandar de backport o reconstruir el paquete  (https:%%//%%wiki.debian.org/SimpleBackportCreation)\\ \\ ==== 6. Configurar como Single-Sign-On con Radius ==== \\ - https:%%//%%wiki.samba.org/index.php/VPN_Single_SignOn_with_Samba_AD\\ \\ ==== 7. Como se que maquinas viejas ==== \\ for i in `ldapsearch -w "cheb2Pei" -x -H ldap:%%//%%192.168.222.12 -D "CN=squid proxy,CN=Users,DC=codema,DC=coop" -b 'CN=Computers,dc=codema,dc=coop' '(objectclass=computer)'  | grep cn: | awk '{print $2}' ` ; do\\   echo  -n -e $i"\\t" ;\\   fecha=`ldapsearch -w "cheb2Pei" -x -H ldap:%%//%%192.168.222.12 -D "CN=squid proxy,CN=Users,DC=codema,DC=coop" -b 'CN=Computers,dc=codema,dc=coop' "(&(objectClass=computer)(cn=$i))" lastLogonTimestamp | grep "^lastLogonTimestamp: " | cut -d ' ' -f 2- ` ; echo $fecha | sed -r 's/(.*)([0-9]{18})(.*$)/echo "\\1""$(date +%D_%T -d \\@$(((\\2\\/10000000)-11644473600)))""\\3"/e' ;\\ done\\ ===== Problemas ===== ==== 1. Problema con aplicación GPO ==== En algunas ocasiones al aplicar la directiva de grupo desde el Administrator con el comando:\\ \\ gpupdate /force\\ \\ Da error al procesar la directiva de grupo.\\ \\ Para solucionar el problema:\\ \\ samba-tool ntacl sysvolreset\\ \\ Y todo OK.\\ - http:%%//%%techgenix.com/Top-10-Reasons-Why-Group-Policy-Fails-to-Apply-Part1/\\ - http:%%//%%techgenix.com/Top-10-Reasons-Why-Group-Policy-Fails-to-Apply-Part2/\\ - http:%%//%%techgenix.com/Top-10-Reasons-Why-Group-Policy-Fails-to-Apply-Part3/\\ \\   ==== 2. Se pierden los roles ==== \\ Por no razon aparente .. no puedo hacer\\ \\  samba-tool fsmo show\\ \\ Obtenemos\\ ldb_wrap open of secrets.ldb\\ ERROR(): uncaught exception - 'No such element'\\   File "/usr/lib/python2.7/dist-packages/samba/netcmd/%%__%%init%%__%%.py", line 175, in _run\\     return self.run(*args, %%**%%kwargs)\\   File "/usr/lib/python2.7/dist-packages/samba/netcmd/fsmo.py", line 392, in run\\     pdcEmulator = get_fsmo_roleowner(samdb, domain_dn)\\   File "/usr/lib/python2.7/dist-packages/samba/netcmd/fsmo.py", line 43, in get_fsmo_roleowner\\     master_owner = res[0]["fSMORoleOwner"][0]\\ \\ Despues de mucho investigar descubro que es un problema con los roles (FSMO).. que parece que algunas hojas de LDAP no tienen el valor correcto.\\ \\ samba-tool dbcheck --fix\\ \\ Checking 655 objects\\ ERROR: fSMORoleOwner not found for role CN=RID Manager$,CN=System,DC=codema,DC=coop\\ Sieze role CN=RID Manager$,CN=System,DC=codema,DC=coop onto current DC by adding fSMORoleOwner=CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop [y/N/all/none] q^C\\ \\ Finalmente  . intento apoderarme de los roles .. pero tengo fallas con RIP y PDC\\ \\ samba-tool fsmo seize --role=pdc\\ \\ Entonces toco meterle mano a las tripas con unos LDIFF que corrigen el problema\\ dn: DC=codema,DC=coop\\ changetype: modify\\ replace: fSMORoleOwner\\ fSMORoleOwner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ \\ dn: CN=RID Manager$,CN=System,DC=codema,DC=coop\\ changetype: modify\\ replace: fSMORoleOwner\\ fSMORoleOwner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ \\ ldbmodify -H /var/lib/samba/private/sam.ldb --cross-ncs ./cosa2.ldif\\ \\ Y listo\\ \\ samba-tool fsmo show \\ ldb_wrap open of secrets.ldb\\ SchemaMasterRole owner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ InfrastructureMasterRole owner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ RidAllocationMasterRole owner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ PdcEmulationMasterRole owner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ DomainNamingMasterRole owner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\ ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=PARMENIDES3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=codema,DC=coop\\  \\ http:%%//%%poster.bshellz.net/samba/Ubuntu_14.04_4.1.6_to_4.3.8_Upgrade_Notes.txt\\ https:%%//%%lists.samba.org/archive/samba/2015-December/196760.html\\ \\   ==== 3. No sube el DNS ==== \\ EN maquinas como Ubuntu 20 hay un systemd-resolvd que ocupa el puerto.\\ \\ https:%%//%%www.techrepublic.com/article/how-to-deploy-samba-on-linux-as-an-active-directory-domain-controller/\\   ==== 4. No puedo pegarme a un dominio con Windows 2019 ==== \\ No hay compatibilidad para un forest .. solo hasta 2012  y solo se puede montar con un servidor Read Only\\ \\ samba-tool domain join codema.coop RODC -U"CODEMA-W10/Administrator" --realm=codema.coop\\ \\  samba-tool domain join meiko.local RODC -U"MEIKO\\mkadmin" --site=AWS\\ \\ Es un problema de compatibilidad de schemas\\ \\ https:%%//%%wiki.samba.org/index.php/AD_Schema_Version_Support\\  \\ https:%%//%%wiki.samba.org/index.php/Join_a_domain_as_a_RODC\\ https:%%//%%blog.svedr.in/posts/samba4-readonly-dc-howto/\\ https:%%//%%samba.tranquil.it/doc/en/samba_config_server/debian/server_rodc_debian.html\\   ==== 5. NO autentica ldap ==== ldap server require strong auth = no ===== Referencias ===== -  https:%%//%%wiki.samba.org/index.php/Setup_a_Samba_Active_Directory_Domain_Controller\\ - http:%%//%%linuxprience.blogspot.com.co/2013/10/controlador-de-dominio-con-samba-4.html\\ - https:%%//%%easgs.wordpress.com/2014/01/28/opensuse-13-1-con-active-directory-guia-ilustrada/ xFIN ---- __**Advertencia**__ Este documento es privado y es de u so exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal. ----  \\ ANEXO 1:   Script de Inicio ============================================================== Crear en /etc/rc.d/init.d/samba #! /bin/bash # # samba4 Bring up/down samba4 service # # chkconfig: - 90 10 # description: Activates/Deactivates all samba4 interfaces configured to \\ # start at boot time. # ### BEGIN INIT INFO # Provides: # Should-Start: # Short-Description: Bring up/down samba4 # Description: Bring up/down samba4 ### END INIT INFO # Source function library. . /etc/init.d/functions if [ -f /etc/sysconfig/samba4 ]; then \t. /etc/sysconfig/samba4 fi CWD=$(pwd) prog="samba4" start() { # Attach irda device echo -n $"Starting $prog: " \t/usr/local/samba/sbin/samba \tsleep 2 \tif ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi echo } stop() { # Stop service. echo -n $"Shutting down $prog: " \tkillall samba \tsleep 2 \tif ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi echo } status() { \t/usr/local/samba/sbin/samba --show-build } # See how we were called. case "$1" in start) \tstart  ;; stop) \tstop  ;; status) \tstatus irattach \t;; restart|reload) \tstop \tstart \t;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0Apuntar enlace:/etc/rc3.d/S80samba4 -> ../rc.d/init.d/samba4 \\   ============================================================== ============================================================== 09-Mayo-2016 Kasandra\\ 04-Junio-2013 J. C. Pineros C.