====== 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.