Instalación de un Controlador de Dominio con Samba 4 de Sernet (Parte I)

En este post se describirá como instalar un Controlador de Dominio con los paquetes del Samba 4 de Sernet. Es muy importante recalcar que se deben seguir al pie de la letra los pasos que posteriormente se harán y  NO SALTARSE NINGÚN PASO.

Bueno, comencemos:

1.- Instalar el GNU/Debian 7 en el Servidor/PC

Parámetros a establecer:

Nombre de Equipo: <Nombre NetBIOS en minúsculas del servidor, ¡NO EXCEDERSE DE 15 CARACTERES!>

Nombre FQDN del Dominio: lab.codesa.co.cu

Dirección IP: <Dirección IP del servidor>

Máscara de Subred: <Máscara de Subred del servidor>

Puerta de Enlace: <Puerta de Enlace del servidor>

Servidores DNS: <Al menos dos servidores DNS, uno local del dominio y otro, que es el general>

Establecer contraseña del Root del servidor.

Crear nuevo usuario.

NOTA: Como este post es para describir como se crea un Controlador de Dominio para el dominio LAB.CODESA.CO.CU, los datos referentes al nombre del servidor y la configuración de red son los siguientes:

Nombre NetBIOS: PDC-MASTER-1

Nombre FQDN: pdc-master-1.lab.codesa.co.cu

Dirección IP: 10.0.1.130

Máscara de Subred: 255.255.255.128

Puerta de Enlace: 10.0.1.129

DNS 1: 10.0.1.130 (ó 127.0.0.1)

DNS 2: 10.0.1.66

DNS 3: 10.0.1.67

Configuraciones posteriores de archivos

Contenido del archivo /etc/resolv.conf:

search lab.codesa.co.cu

nameserver 10.0.1.130

nameserver 10.0.1.67

Contenido del archivo /etc/hosts:

127.0.0.1      localhost                          localhost.localdomain

10.0.1.130     pdc-master-1.lab.codesa.co.cu      pdc-master-1

10.0.1.66      pdc-master-2.lab.codesa.co.cu      pdc-master-2

10.0.1.140     ws-lan-1.lab.codesa.co.cu          ws-lan-1

# The following lines are desirable for IPv6 capable hosts

::1     localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

Contenido del archivo /etc/ntp.conf:

driftfile /var/lib/ntp/ntp.drift

statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats

filegen loopstats file loopstats type day enable

filegen peerstats file peerstats type day enable

filegen clockstats file clockstats type day enable

fudge   127.127.1.0 stratum 10

server  127.127.1.0

restrict 127.0.0.1

restrict ::1

broadcast 10.0.1.63

broadcast 10.0.1.255

Contenido del archivo /etc/ssh/sshd_config:

Port 53527

Protocol 2

ListenAddress 10.0.1.130

AllowUsers bolodia

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

UsePrivilegeSeparation yes

KeyRegenerationInterval 3600

ServerKeyBits 768

SyslogFacility AUTH

LogLevel INFO

LoginGraceTime 1m

PermitRootLogin no

StrictModes yes

RSAAuthentication yes

PubkeyAuthentication yes

IgnoreRhosts yes

RhostsRSAAuthentication no

HostbasedAuthentication no

PermitEmptyPasswords no

PasswordAuthentication no

X11Forwarding no

X11DisplayOffset 10

PrintMotd no

PrintLastLog yes

KeepAlive yes

Subsystem       sftp    /usr/lib/sftp-server

UsePAM yes

2.- Configurar APT

Contenido del archivo /etc/apt/sources.list:

#deb cdrom:[Debian GNU/Linux 7.5.0 _Wheezy_ – Official amd64 CD Binary-1 20140426-13:37]/ wheezy main

deb file:///media/flash/debian-repo/debian wheezy main contrib non-free

deb file:///media/flash/debian-repo/debian-security wheezy/updates main contrib non-free

3.- Actualizar el software del servidor

# aptitude update && aptitude upgrade -y

4.- Reiniciar el servidor.

5.- Añadir el repo local de Sernet-Samba4 al APT.

Contenido del archivo /etc/apt/sources.list.d/sernet-samba4.list:

deb file:///media/flash/sernet-samba4-repo/4.1/debian wheezy main

6.- Modificar el comportamiento del APT con respecto a los repos añadidos:

Contenido del archivo /etc/apt/preferences.d/sernet-samba4.pref:

Package: *

Pin: origin “sernet-samba4”

Pin-Priority: 991

NOTA: Esto no sé si funciona, dado que el origen de la paquetería es el mismo.

7.- Instalación de paquetes necesarios para el Samba4:

# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl quota fam libnet-ldap-perl bind9 dnsutils

NOTA 1: Aquí durante la configuración del paquete cliente de Kerberos se solicitarán datos. Yo puse los que creí correctos. De todas formas, creo que se puede configurar a posteriori.

NOTA 2: Es fundamental DESHABILITAR EL ARRANQUE del servicio bind9 si se va a utilizar el DNS interno de Samba4, dado que no permitirá cargar todos los servicios necesarios que se utilizan para el buen funcionamiento del Controlador de Dominio (DNS, RPC, Kerberos, SMB-CIFS, etc.):

# update-rc.d -f bind9 remove

# service bind9 stop

8.- Instalación del Samba 4 de Sernet:

Antes de refrescar la lista de paquetes se debe añadir la llave GPG del repositorio de Samba 4 de Sernet. Esto se hace de la siguiente manera:

# cat /media/flash/sernet-samba4-repo/sernet-build-key.gpg | apt-key add –

# apt-get update

Pero si la llave GPG está disponible en un servidor FTP, el comando es el siguente:

# wget –O- <Ruta del Archivo, ya sea HTTP o por FTP>/sernet-build-key.gpg | apt-key add –

# apt-get update

Completados estos pasos, ya se puede proceder a instalar los paquetes de Samba 4 de Sernet:

# apt-get install sernet-samba-ad libwbclient0 sernet-samba-client sernet-samba-winbind sernet-samba sernet-samba-libs sernet-samba-libsmbclient0

9.- Configurar comportamiento de Samba 4:

En el archivo /etc/default/sernet-samba cambiar lo siguiente:

SAMBA_START_MODE=”none”

por

SAMBA_START_MODE=”ad”

Y también el parámetro

SAMBA_RESTART_ON_UPDATE=”no”

por

SAMBA_RESTART_ON_UPDATE=”yes”

10.- Instalación de Samba4 como Controlador de Dominio.

10.1.- Realizar copia de seguridad del archivo /etc/samba/smb.conf antes de comenzar el proceso:

# mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

dado que los cambios que se hagan reescribirán el contenido del archivo.

10.2.- Aprovisionamiento del dominio:

SERNET Samba con DNS interno:

# samba-tool domain provision –realm=lab.codesa.co.cu –domain=LAB-CODESA –adminpass=’LaProbeta123‘ –server-role=dc –dns-backend=SAMBA_INTERNAL –function-level=2008_R2 –use-rfc2307 –use-xattr=yes –host-name=pdc-master-1 –host-ip=10.0.1.130

SERNET Samba con Bind como DNS:

# samba-tool domain provision –realm=lab.codesa.co.cu –domain= LAB-CODESA –adminpass=’ LaProbeta123‘ –server-role=dc –dns-backend=BIND9_DLZ –function-level=2008_R2 –use-rfc2307 –use-xattr=yes –host-name=pdc-master-1 –host-ip=10.0.1.130

 10.3.- Configuraciones posteriores:

Una vez creado el dominio, hay que hacerle algunos cambios al archivo de configuración, que debe verse así, de momento:

[global]

workgroup = LAB-CODESA

realm = lab.codesa.co.cu

netbios name = PDC-MASTER-1

server role = active directory domain controller

idmap_ldb:use rfc2307 = yes

server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb

server services = -s3fs +dns

allow dns updates = secure

dns forwarder = 10.0.1.67

dcerpc endpoint servers = +winreg +srvsvc

interfaces = eth0 lo

template shell = /bin/false

log file = /var/log/samba/lab.codesa.co.cu.log

syslog = 0

vfs objects = full_audit

template homedir = /home/users/%ACCOUNTNAME%

[netlogon]

path = /srv/services/samba/data/sysvol/lab.codesa.co.cu/scripts

read only = No

[sysvol]

path = /srv/services/samba/data/sysvol

read only = No

El camino establecido para la carpeta Sysvol puede ser una partición específica del disco duro, otro disco duro o la misma partición donde está instalado el servicio Samba4 de Sernet. En el archivo /etc/fstab se debe añadir algunas características específicas:

/dev/sdb1      /srv/services/samba/data ext4 rw,errors=remount-ro,user_xattr,acl 1 1

Enfatizo que para que se carguen apropiadamente los permisos al estilo Windows, deben estar establecidas las características “user_xattr” y “acl” en la(s) partición(particiones) que utilizará Samba 4 para compartimentación de archivos. Si esto no se hace, una de las cosas que sin duda fallará es el Editor de Directivas de Grupo de las Herramientas de Administración de Windows.

Claro está que hay que crear la partición en el segundo disco duro (en caso de que se tenga, sino hay que hacerla en el que está o modificar las características de alguna partición existente), formatearla y luego montarla. Mover la carpeta “sysvol” ubicada dentro de /var/lib/samba en la nueva ubicación, o sea, en /srv/services/samba/data, y luego reiniciar el servicio para que los nuevos cambios tengan efecto, o sea:

# service sernet-samba-ad restart

En caso de que se quiera repetir el aprovisionamiento, primero tendrá que eliminar el archivo de configuración anterior de Samba (en mi caso, le hago una salva):

# mv /etc/samba/smb.conf /etc/samba/smb.conf.lab-codesa_anterior

Si tenemos una configuración de Samba 4 utilizando el DNS interno y queremos cambiar a Bind mediante el comando siguiente se puede hacer:

# samba_upgradedns –dns-backend=BIND9_DLZ

y deshabilitar la característica de Samba4 de asumir ser DNS en el archivo smb.conf, o sea:

server services = -s3fs +dns

sustituirla por

server services = -s3fs -dns

10.4.- Configurar Kerberos

Antes de ponerse a hacer cosas con la herramienta samba-tool, hay que configurar Kerberos. Primeramente se hace una copia de respaldo del archivo de configuración del servicio antes de hacer cualquier cosa, o sea:

# cp /etc/krb5.conf /etc/krb5.conf.orig

Luego modificar el archivo de manera tal que el contenido final sea este:

[libdefaults]

default_realm = LAB.CODESA.CO.CU

dns_lookup_realm = true

dns_lookup_kdc = true

[realms]

LAB.CODESA.CO.CU = {

kdc = 10.0.1.130

kdc = 10.0.1.66

admin_server = 10.0.1.130

}

[domain_realm]

.lab.codesa.co.cu = LAB.CODESA.CO.CU

lab.codesa.co.cu = LAB.CODESA.CO.CU

[login]

krb4_convert = true

krb4_get_tickets = false

Modificado dicho archivo, se procede a inicializar la contraseña del administrador mediante este comando:

# kinit administrator@LAB.CODESA.CO.CU

Password for administrator@LAB.CODESA.CO.CU:<Introducir contraseña>

Warning: Your password will expire in 41 days on Mon Dec 22 05:33:17 2014

Luego ejecutar el siguiente comando para ver la lista de tickets activos:

# klist -e

Ticket cache:/tmp/krb5cc_0

Default principal: administrator@LAB.CODESA.CO.CU

Valid starting    Expires            Service principal

10/11/2014 06:00  10/11/2014 16:00   krbtgt/LAB.CODESA.CO.CU@LAB.CODESA.CO.CU

renew until 11/11/2014 05:59, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96

Ya en este punto estamos en condiciones de jugar con la herramienta samba-tool o usar las Herramienta de Administración Remota de Servidores (RSAT) desde un equipo o estación de trabajo con Windows que esté unida al dominio. Claro está que para que todos los cambios sean exitosos, se debe usar las credenciales del Administrador del Dominio.

10.5.- Uso de la herramienta CLI de Sernet-Samba4:

A continuación se muestra una serie de ejemplos de uso de la herramienta de Samba 4 en modo texto (CLI). En el caso de los ejemplos de DNS, el servidor destino es el crea Samba 4, ya sea interno o usando a Bind9 como backend de datos.

  • 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’

  • Ver estado del servidor DNS:

root@pdc-master-1:~# samba-tool dns serverinfo 10.0.1.130

GENSEC backend ‘gssapi_spnego’ registered

GENSEC backend ‘gssapi_krb5’ registered

GENSEC backend ‘gssapi_krb5_sasl’ registered

GENSEC backend ‘sasl-DIGEST-MD5’ registered

GENSEC backend ‘schannel’ registered

GENSEC backend ‘spnego’ registered

GENSEC backend ‘ntlmssp’ registered

GENSEC backend ‘krb5’ registered

GENSEC backend ‘fake_gssapi_krb5’ registered

Using binding ncacn_ip_tcp:10.0.1.130[,sign]

Cannot do GSSAPI to an IP address

Got challenge flags:

Got NTLMSSP neg_flags=0x60898215

Password for [administrator@LAB.CODESA.CO.CU]: <Contraseña del Administrador>

NTLMSSP: Set final flags:

Got NTLMSSP neg_flags=0x60088215

NTLMSSP Sign/Seal – Initialising with flags:

Got NTLMSSP neg_flags=0x60088215

  dwVersion                   : 0xece0205

  fBootMethod                 : DNS_BOOT_METHOD_DIRECTORY

  fAdminConfigured            : FALSE

  fAllowUpdate                : TRUE

  fDsAvailable                : TRUE

  pszServerName               : PDC-MASTER-1.lab.codesa.co.cu

  pszDsContainer              : CN=MicrosoftDNS,DC=DomainDnsZones, DC=lab,DC=codesa,DC=co,DC=cu

  aipServerAddrs              : [‘10.0.1.130 (53)’, ‘10.0.1.130 (53)’, ‘10.0.1.130 (53)’]

  aipListenAddrs              : [‘10.0.1.130 (53)’, ‘10.0.1.130 (53)’, ‘10.0.1.130 (53)’]

  aipForwarders               : []

  dwLogLevel                  : 0

  dwDebugLevel                : 0

  dwForwardTimeout            : 3

  dwRpcPrototol               : 0x5

  dwNameCheckFlag             : DNS_ALLOW_MULTIBYTE_NAMES

  cAddressAnswerLimit         : 0

  dwRecursionRetry            : 3

  dwRecursionTimeout          : 8

  dwMaxCacheTtl               : 86400

  dwDsPollingInterval         : 180

  dwScavengingInterval        : 0

  dwDefaultRefreshInterval    : 168

  dwDefaultNoRefreshInterval  : 168

  fAutoReverseZones           : FALSE

  fAutoCacheUpdate            : FALSE

  fRecurseAfterForwarding     : FALSE

  fForwardDelegations         : TRUE

  fNoRecursion                : FALSE

  fSecureResponses            : FALSE

  fRoundRobin                 : TRUE

  fLocalNetPriority           : FALSE

  fBindSecondaries            : FALSE

  fWriteAuthorityNs           : FALSE

  fStrictFileParsing          : FALSE

  fLooseWildcarding           : FALSE

  fDefaultAgingState          : FALSE

  dwRpcStructureVersion       : 0x2

  aipLogFilter                : []

  pwszLogFilePath             : None

  pszDomainName               : lab.codesa.co.cu

  pszForestName               : lab.codesa.co.cu

  pszDomainDirectoryPartition : DC=DomainDnsZones,DC=lab,DC=codesa,DC=co,DC=cu

  pszForestDirectoryPartition : DC=ForestDnsZones,DC=lab,DC=codesa,DC=co,DC=cu

  dwLocalNetPriorityNetMask   : 0xff

  dwLastScavengeTime          : 0

  dwEventLogLevel             : 4

  dwLogFileMaxSize            : 0

  dwDsForestVersion           : 4

  dwDsDomainVersion           : 4

  dwDsDsaVersion              : 4

  fReadOnlyDC                 : FALSE

  • Ver información de una zona específica del servidor DNS:

Ejemplo 1 (Zona Directa):

root@pdc-master-1:~# samba-tool dns zoneinfo 10.0.1.130 lab.codesa.co.cu

GENSEC backend ‘gssapi_spnego’ registered

GENSEC backend ‘gssapi_krb5’ registered

GENSEC backend ‘gssapi_krb5_sasl’ registered

GENSEC backend ‘sasl-DIGEST-MD5’ registered

GENSEC backend ‘schannel’ registered

GENSEC backend ‘spnego’ registered

GENSEC backend ‘ntlmssp’ registered

GENSEC backend ‘krb5’ registered

GENSEC backend ‘fake_gssapi_krb5’ registered

Using binding ncacn_ip_tcp:10.0.1.130[,sign]

Cannot do GSSAPI to an IP address

Got challenge flags:

Got NTLMSSP neg_flags=0x60898215

Password for [administrator@LAB.CODESA.CO.CU]: <Contraseña del Administrador>

NTLMSSP: Set final flags:

Got NTLMSSP neg_flags=0x60088215

NTLMSSP Sign/Seal – Initialising with flags:

Got NTLMSSP neg_flags=0x60088215

  pszZoneName                 : lab.codesa.co.cu

  dwZoneType                  : DNS_ZONE_TYPE_PRIMARY

  fReverse                    : FALSE

  fAllowUpdate                : DNS_ZONE_UPDATE_SECURE

  fPaused                     : FALSE

  fShutdown                   : FALSE

  fAutoCreated                : FALSE

  fUseDatabase                : TRUE

  pszDataFile                 : None

  aipMasters                  : []

  fSecureSecondaries          : DNS_ZONE_SECSECURE_NO_XFER

  fNotifyLevel                : DNS_ZONE_NOTIFY_LIST_ONLY

  aipSecondaries              : []

  aipNotify                   : []

  fUseWins                    : FALSE

  fUseNbstat                  : FALSE

  fAging                      : FALSE

  dwNoRefreshInterval         : 168

  dwRefreshInterval           : 168

  dwAvailForScavengeTime      : 0

  aipScavengeServers          : []

  dwRpcStructureVersion       : 0x2

  dwForwarderTimeout          : 0

  fForwarderSlave             : 0

  aipLocalMasters             : []

  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED

  pszDpFqdn                   : DomainDnsZones.lab.codesa.co.cu

  pwszZoneDn                  : DC=lab.codesa.co.cu,CN=MicrosoftDNS,DC=DomainDnsZones,DC=lab,DC=codesa,DC=co,DC=cu

  dwLastSuccessfulSoaCheck    : 0

  dwLastSuccessfulXfr         : 0

  fQueuedForBackgroundLoad    : FALSE

  fBackgroundLoadInProgress   : FALSE

  fReadOnlyZone               : FALSE

  dwLastXfrAttempt            : 0

  dwLastXfrResult             : 0

Ejemplo 2 (Zona Inversa):

root@pdc-master-1:~# samba-tool dns zoneinfo 10.0.1.130 1.0.10.in-addr.arpa

GENSEC backend ‘gssapi_spnego’ registered

GENSEC backend ‘gssapi_krb5’ registered

GENSEC backend ‘gssapi_krb5_sasl’ registered

GENSEC backend ‘sasl-DIGEST-MD5’ registered

GENSEC backend ‘schannel’ registered

GENSEC backend ‘spnego’ registered

GENSEC backend ‘ntlmssp’ registered

GENSEC backend ‘krb5’ registered

GENSEC backend ‘fake_gssapi_krb5’ registered

Using binding ncacn_ip_tcp:10.0.1.130[,sign]

Cannot do GSSAPI to an IP address

Got challenge flags:

Got NTLMSSP neg_flags=0x60898215

Password for [administrator@LAB.CODESA.CO.CU]: <Contraseña del Administrador>

NTLMSSP: Set final flags:

Got NTLMSSP neg_flags=0x60088215

NTLMSSP Sign/Seal – Initialising with flags:

Got NTLMSSP neg_flags=0x60088215

  pszZoneName                 : 1.0.10.in-addr.arpa

  dwZoneType                  : DNS_ZONE_TYPE_PRIMARY

  fReverse                    : TRUE

  fAllowUpdate                : DNS_ZONE_UPDATE_SECURE

  fPaused                     : FALSE

  fShutdown                   : FALSE

  fAutoCreated                : FALSE

  fUseDatabase                : TRUE

  pszDataFile                 : None

  aipMasters                  : []

  fSecureSecondaries          : DNS_ZONE_SECSECURE_NO_XFER

  fNotifyLevel                : DNS_ZONE_NOTIFY_LIST_ONLY

  aipSecondaries              : []

  aipNotify                   : []

  fUseWins                    : FALSE

  fUseNbstat                  : FALSE

  fAging                      : FALSE

  dwNoRefreshInterval         : 168

  dwRefreshInterval           : 168

  dwAvailForScavengeTime      : 0

  aipScavengeServers          : []

  dwRpcStructureVersion       : 0x2

  dwForwarderTimeout          : 0

  fForwarderSlave             : 0

  aipLocalMasters             : []

  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED

  pszDpFqdn                   : DomainDnsZones.lab.codesa.co.cu

  pwszZoneDn                  : DC=1.0.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,DC=lab,DC=codesa,DC=co,DC=cu

  dwLastSuccessfulSoaCheck    : 0

  dwLastSuccessfulXfr         : 0

  fQueuedForBackgroundLoad    : FALSE

  fBackgroundLoadInProgress   : FALSE

  fReadOnlyZone               : FALSE

  dwLastXfrAttempt            : 0

  dwLastXfrResult             : 0

  • Ver listado de las zonas definidas en un DNS:

root@pdc-master-1:~# samba-tool dns zonelist 10.0.1.130

GENSEC backend ‘gssapi_spnego’ registered

GENSEC backend ‘gssapi_krb5’ registered

GENSEC backend ‘gssapi_krb5_sasl’ registered

GENSEC backend ‘sasl-DIGEST-MD5’ registered

GENSEC backend ‘schannel’ registered

GENSEC backend ‘spnego’ registered

GENSEC backend ‘ntlmssp’ registered

GENSEC backend ‘krb5’ registered

GENSEC backend ‘fake_gssapi_krb5’ registered

Using binding ncacn_ip_tcp:10.0.1.130[,sign]

Cannot do GSSAPI to an IP address

Got challenge flags:

Got NTLMSSP neg_flags=0x60898215

Password for [administrator@LAB.CODESA.CO.CU]: <Contraseña del Administrador>

NTLMSSP: Set final flags:

Got NTLMSSP neg_flags=0x60088215

NTLMSSP Sign/Seal – Initialising with flags:

Got NTLMSSP neg_flags=0x60088215

  3 zone(s) found

  pszZoneName                 : 1.0.10.in-addr.arpa

  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE

  ZoneType                    : DNS_ZONE_TYPE_PRIMARY

  Version                     : 50

  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED

  pszDpFqdn                   : DomainDnsZones.lab.codesa.co.cu

  pszZoneName                 : test.lab.codesa.co.cu

  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE

  ZoneType                    : DNS_ZONE_TYPE_PRIMARY

  Version                     : 50

  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED

  pszDpFqdn                   : DomainDnsZones.lab.codesa.co.cu

  pszZoneName                 : _msdcs.lab.codesa.co.cu

  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE

  ZoneType                    : DNS_ZONE_TYPE_PRIMARY

  Version                     : 50

  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED

  pszDpFqdn                   : ForestDnsZones.lab.codesa.co.cu

  • Eliminar un registro del DNS:

Ejemplo 1 (Eliminando una entrada errónea):

root@pdc-master-1:~# samba-tool dns delete 10.0.1.130 lab.codesa.co.cu w7-test.lab.codesa.co.cu A ‘10.0.2.92’

GENSEC backend ‘gssapi_spnego’ registered

GENSEC backend ‘gssapi_krb5’ registered

GENSEC backend ‘gssapi_krb5_sasl’ registered

GENSEC backend ‘sasl-DIGEST-MD5’ registered

GENSEC backend ‘schannel’ registered

GENSEC backend ‘spnego’ registered

GENSEC backend ‘ntlmssp’ registered

GENSEC backend ‘krb5’ registered

GENSEC backend ‘fake_gssapi_krb5’ registered

Using binding ncacn_ip_tcp:10.0.1.130[,sign]

Cannot do GSSAPI to an IP address

Got challenge flags:

Got NTLMSSP neg_flags=0x60898215

Password for [administrator@LAB.CODESA.CO.CU]: <Contraseña del Administrador>

NTLMSSP: Set final flags:

Got NTLMSSP neg_flags=0x60088215

NTLMSSP Sign/Seal – Initialising with flags:

Got NTLMSSP neg_flags=0x60088215

Record deleted successfully

Ejemplo 2 (Eliminando una entrada que no pertenece a la base de datos de resolución directa):

root@pdc-master-1:~# samba-tool dns delete 10.0.1.130 lab.codesa.co.cu 92.2.0.10-in-addr.arpa. PTR ‘w7-test. lab.codesa.co.cu’

GENSEC backend ‘gssapi_spnego’ registered

GENSEC backend ‘gssapi_krb5’ registered

GENSEC backend ‘gssapi_krb5_sasl’ registered

GENSEC backend ‘sasl-DIGEST-MD5’ registered

GENSEC backend ‘schannel’ registered

GENSEC backend ‘spnego’ registered

GENSEC backend ‘ntlmssp’ registered

GENSEC backend ‘krb5’ registered

GENSEC backend ‘fake_gssapi_krb5’ registered

Using binding ncacn_ip_tcp:10.0.1.130[,sign]

Cannot do GSSAPI to an IP address

Got challenge flags:

Got NTLMSSP neg_flags=0x60898215

Password for [administrator@LAB.CODESA.CO.CU]: <Contraseña del Administrador>

NTLMSSP: Set final flags:

Got NTLMSSP neg_flags=0x60088215

NTLMSSP Sign/Seal – Initialising with flags:

Got NTLMSSP neg_flags=0x60088215

Record deleted successfully

  • Añadir un usuario en el dominio:

root@pdc-master-1:~# samba-tool user add bolodia

New Password: <Contraseña del Usuario>

Retype Password: <Confirmar Contraseña del Usuario>

User ‘bolodia’ created successfully

  • 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:~#

 

Acerca de Hector Suarez Planas

Es Licenciado en Ciencia de la Computación (3 de julio de 2002). Ha sido Administrador de Red en varias organizaciones, Programador y Analista de Sistemas. Actualmente se desempeña como Administrador de Red del Telecentro Tele Turquino de Santiago de Cuba. Tiene experiencia con sistemas Windows y GNU/Linux, Infraestructura de Redes (Cisco, AlliedTelesis, Netgear y HP ProCurve, Vyatta/VyOS), Servidores tanto físicos como virtuales (plataformas VMWare, Proxmox VE y Xen), Sistemas de Seguridad Informática (Snort/Suricata IDS, appliances AlienVault OSSIM), programador (Delphi, C++ Builder, Perl [poco], Python [algo]), entre otras cosas. Actualmente estoy incursionando en todo lo que tiene relación con Cloud Computing (OpenStack) y Centros de Datos. :-)
Esta entrada fue publicada en Debian, Directorio Activo, Linux, PDC, Samba 4, SERNET. Guarda el enlace permanente.

13 respuestas a Instalación de un Controlador de Dominio con Samba 4 de Sernet (Parte I)

  1. Ivan dijo:

    Esta bueno el articulo pero creo que seria bueno publicar uno con samba+ldap+bind9+ntp

    • Hector Suarez Planas dijo:

      Saludos.

      Primero que todo, Samba 4 está pensado para reemplazar un PDC con AD de Microsoft. Como dije en el post, aún no está completo, pero está siendo usado en muchos ambientes de producción, de hecho, en la lista de Samba se pueden encontrar varios ejemplos.

      Ah, un inconveniente que tiene el esquema del AD de Microsoft (a mi modo de ver), es que en muchos casos no utiliza una buena parte de los atributos que estamos acostumbrados a usar en OpenLDAP, dado que aparecen con otros nombres, aunque las RSAT de Windows permiten proporcionar una serie de datos.

      Ahora bien, el caso que pide (Samba + LDAP + Bind9 + NTP) tiene un inconveniente: está creando un PDC al estilo de NT 4.0, no como un AD. En otras palabras, adiós a los GPOs (a no ser que se utilice herramientas de terceros), al uso de las RSAT (utilizar un gestor de terceros que permita crear los usuarios, así como añadirles los atributos correspondientes), utilizar gestores para la configuración del DNS.

      Con esto no estoy diciendo que estoy en contra del uso de OpenLDAP, todo lo contrario, su uso encaja perfectamente en ambientes en los que hay que gestionar una cantidad enorme de usuarios.

      En cuanto a NTP, bueno, en mi caso que dispongo de una conexión directa a Internet, se puede configurar para que sincronice con Servidores de Hora mundiales (yo uso los de América del Sur).

  2. amelia dijo:

    hola, trabaajo en una empresa que tiene un directorio de archivos con permisos de usuarios muy especificos en el arbol de carpetas, donde un usuario puede tener acceso de lectura en una carpeta y dentro otra carpeta donde puede tener permiso de escritura, manteniendo el de lectura en otra carpeta dentro de la principal porque esta pertenece a otro usuario. esta seguridad la logre con Samba 3 y acl, pero no podia poner las pc en el dominio, por ser W7. Samba 4 me da esa opcion, lo que no se si me dejara personalizar los permisos de la manera que necesito.

    Usted cree que se puede lograr lo que necesito con Samba 4 sernet

    • Hector Suarez Planas dijo:

      Saludos, Amelia.

      Ajá, lo que usted tiene es un servidor de archivos donde provee carpetas para usuarios específicos y para eso usas Samba 3 + ACL. Bueno, tanto en la Wiki de Samba como en la lista de distribución recomiendan no usar los dos roles (ADDC y Servidor de Archivos) en un mismo servidor Samba 4, aunque hay algunos que sostienen que con la versión 4.2 y en un pequeño entorno sí podría funcionar perfectamente. No obstante, yo me sumo a la mayoría.

      Puede tener su servidor ADDC en Samba 4 normalmente y crear un servidor de archivos normal (Samba 3) que sea miembro de tu dominio. Así cuando lo configures lo puede poner a buscar las credenciales de usuario en el primero. Igual usando ACL para extender los permidos de archivo en sus directorios más allá de los clásicos de Linux.

      🙂

  3. gestor dijo:

    Hola,
    Muy bueno tu articulo. Tengo instalado Zentyal y estube buscando como tener un PDC por si me falla el primero, lo encontre en la Wiki de Zentyal..
    Ahora busco quitar mi primer Zentyal y convertir mi PDC en Primario. No encuentro nada de esto…
    Puedes ayudarme, publicando sobre este tema
    Gracias

    • Hector Suarez Planas dijo:

      Saludos, hermano.

      Gracias por su opinión. 🙂 Hum… Primero que todo le diré que Zentyal y yo como que no nos llevamos muy bien. Pero eso no quiere decir que le pueda decir algo sobre el tema. Si los paquetes de Samba que trae la versión que utiliza es de la 4.0 en adelante, puede que resuelva con las RSAT de Windows. Así fue como yo lo hice.

      Todo comenzó cuando en una inspección de la OSRI en julio del año pasado me detectaron una vulnerabilidad en mi PDC, claro era un w2k3-svr que no tenía muchas posibilidades de estar al día, 🙂 . Eso me incomodó tanto que no pude dormir ese día. Entonces al día siguiente me dispuse a desaparecerlo de la faz de la Tierra, monté un segundo DC en Samba 4 de Sernet, lo incluí en el dominio, luego usando las RSAT en mi PC le pasé los roles principales a él (Global Catalog y Master de Operaciones/Infraestructura). Seguidamente tumbé el w2k3-svr y monté otro Samba 4 con la dirección IP del difunto e hice nuevamente las mismas operaciones para devolver el entorno a su estado inicial (esto fue porque en todas las estaciones de trabajo el primer DNS que tienen es la IP del anterior servidor). Los usuarios ni notaron el cambio… inicialmente, porque hay algunos detalles que tengo que pulir aún.

      Con esto ya tengo dos PDCs funcionando perfectamente, con replicación multimaster y todas las demás características.

      Espero le ayude la sugerencia.

  4. Fernando dijo:

    Hola, quisiera saber que rol cumple el servicio ssh en la complementación del samba.

    • Hector Suarez Planas dijo:

      Saludos, Fernando.

      Bueno, ¿cómo vas a administrar el servidor remotamente? Para eso es SSH. Samba 4 contiene varios servicios (los típicos de un AD de Microsoft).

      🙂

  5. darkend dijo:

    Interesante artículo.

  6. fredy dijo:

    Buenos dias hector, estoy en proceso de migracion de los servidores que tengo a proxmox ve 4.3. Tengo un PDC en Samba 4, con su DNS interno, actualmente lo administro por una estacion con windows server 2008, todos mis servicios como el correo, jabber y proxy se autentican con el, y los cambios del DNS tambien los hago por windows, ahora me gustaria que me ayudaras a decidir cual seria la mejor opcion para poder migrar sin perder la informacion que tengo en samba 4(PDC+DNS).
    Tengo la situacion que quiero reinstalar PVE 4.3 en el server donde esta Samba4, pero primero tengo que garantizar que sigan autenticandose los usuarios.

    • Hector Suarez Planas dijo:

      Saludos, Fredy.

      Primero que todo, si lo que tienes en un Samba 4, es más fácil la migración, solamente tienes que salvar toda la estructura del servicio, así no perderás ni la configuración, ni las bases de datos que crea.

      Con respecto a lo de reinstalar el nodo, pues es hasta más fácil. Sólo tienes que hacerle un backup al EV (entorno virtual) y ya, luego copiar ese backup a un medio externo. Si los demás servidores son EVs, pues, el mismo procedimiento con ellos.

      Espero te sirva, hermano.

      🙂

  7. Norge Rodriguez dijo:

    Mano muy buen articulo debo harcerle una consulta yo tengo acltulamente montado samba4 con bind9 todo funcionando ok haciendo pruebas de test pero me ha frustrado el hecho de no poder validar squid3 con samba4 sin mencionar otros servicios necesarios en nuestra red si ha tenido alguna experiencia he buscado en los confines de la tierra y no e hallado respuesta que a este problema e probado una biblioteca de manuales pero la verdad hablan poco sobre validar usuarios con squid3 y samba4 una ayuda y un agradecimiento de antemano un defensor del Software Libre

    • Hector Suarez Planas dijo:

      Saludos, Norge.

      Primero que todo, gracias por su comentario.

      Bueno, le diré que este artículo está hecho sobre Samba 4.1/4.2, y actualmente ya está en la versión 4.6.0. Desgraciadamente, a partir de la versión 4.3, SerNet no publica sus paquetes en su repo, por lo que la recomendación es compilarlo a partir de sus paquetes fuente.

      En cuanto a su problema, sí se puede hacer. Si tiene acceso a Internet, le recomiendo baje el cliente de Telegram (o conectarse al sitio del mismo), regístrese, acceda al canal https://t.me/sysadmincuba, y póngase en contacto con Arian molina (alias @linuxcuba), que es uno de los que más a trabajando con Samba 4 y la integración de servicios.

      No obstante, también puede acceder al sitio siguiente:

      https://www.sysadminsdecuba.com

      donde podrá encontrar artículos muy interesantes.

      Espero le sirva. 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *