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: <Contraseña del Usuario>
Retype Password: <Confirmar Contraseña del Usuario>
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:<Nueva contraseña>
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 \\@$1))”“\\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(<type 'exceptions.KeyError'>): 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.

1)
(\\2\\/10000000)-11644473600
Volver arriba