CentOS 7
CentOS (Community Enterprise Operating System) es una bifurcación a nivel binario de la distribución Linux Red Hat Enterprise Linux RHEL, compilado por voluntarios a partir del código fuente publicado por Red Hat, siendo la principal diferencia con este la eliminación de todas las referencias a las marcas y logos propiedad de Red Hat.
Es un sistema operativo de código abierto, basado en la distribución Red Hat Enterprise Linux, operándose de manera similar, y cuyo objetivo es ofrecer al usuario un software de «clase empresarial» gratuito. Se define como robusto, estable y fácil de instalar y utilizar. Desde la versión 5, cada lanzamiento recibe soporte durante diez años, por lo que la actual versión 7 recibirá actualizaciones de seguridad hasta el 30 de junio de 2024.
https://www.centos.org/download/
La versión de Kernel que utilizaremos es kernel-plus-3.10.0-862.el7.centos.plus.x86_64.rpm (11-May-2018) que viene con el ISO, pero recomendamos actualizar a la versión más actual en nuestro caso kernel-plus-3.10.0-862.6.3.el7.centos.plus.x86_64.rpm (03-Jul-2018). Para ver la lista oficial puedes visitar la siguiente dirección:
http://mirror.centos.org/centos/7/centosplus/x86_64/Packages/
Samba 4
Samba 4 Es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que computadoras con GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autentificar con su propio archivo de usuarios.
Samba 4 Soporta el directorio activo de windows a través de la combinación de varios elementos: Servidor de directorio LDAP, Servidor de autenticación Heimdal Kerberos, Servicio de DNS dinámico (a través de su propio servidor DNS o un plugin BIND)
Samba 4 puede proporcionar politicas de grupo, perfiles móviles y otras características para administrar sistemas en un dominio windows, además de integrarse con Servidores Exchange y alternativas compatibles Open Source. El soporte de Samba para Active Directory es totalmente transparente para los clientes, lo que significa que un Controlador de Dominio basado en Samba puede ser integrado en un dominio existente de Active Directory.
Samba AD es estable para entornos de producción y puede ejecutarse como un controlador de dominio (DC) de Active Directory (AD). Si está instalando Samba en un entorno de producción, se recomienda ejecutar dos o más DC por razones de conmutación por error (Eso lo veremos en un artículo posterior).
Instalando SAMBA 4
A partir de la versión 4.0, Samba puede ejecutarse como un controlador de dominio (DC) de Active Directory (AD). En este tutorial, le mostraré cómo configurar Samba 4 como un controlador de dominio compilando Samba 4 desde el código fuente dado que algunas características AD no vienen incluidas por defecto en los paquetes de instalación.
Recomendaciones
Seleccione un nombre de host para su AD DC.
No utilice términos de solo NT4 como nombre de host, como PDC o BDC. Estos modos no existen en una AD y causan confusión.
Seleccione un nombre de dominio DNS para su bosque AD. El nombre también se usará como el reino de AD Kerberos.
Asegúrese de aprovisionar la AD usando un dominio DNS que no necesite cambiarse. Samba no admite el cambio de nombre de la zona AD DNS y el reino Kerberos.
Use una dirección IP estática en el DC.
Preparando la instalación
Verifique que no se estén ejecutando los procesos de SAMBA si existieran proceda a desinstalarlos:
# sudo su
# ps ax | egrep "samba|smbd|nmbd|winbindd"
Verifique el estado del módulo de seguridad para el kernel Linux que proporciona el mecanismo para soportar políticas de seguridad para el control de acceso (SELinux)
# sestatus
Instale el repositorio EPEL CentOS, Red Hat Enterprise Linux 7 no incluye todos los paquetes necesarios para construir un Samba AD DC. Habilite el repositorio externo de paquetes extra para Enterprise Linux (EPEL) antes de instalar los paquetes. Para más detalles, consulte https://fedoraproject.org/wiki/EPEL . Aunque la habilitación del repositorio EPEL no se requiere en CentOS 7 lo haremos d todas formas por si nos falta algún paquete.
# yum install epel-release -y
Paquetes necesarios para construir SAMBA
La siguiente es una lista independiente de sistema operativo de bibliotecas y utilidades necesarias para compilar e instalar Samba
Obligatorio
Para instalar estas y otras dependencias ejecute
# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
python-crypto gnutls-devel libattr-devel keyutils-libs-devel \
libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
pam-devel pop-devel python-devel readline-devel zlib-devel systemd-devel
Obtener SAMBA
De acuerdo al “reléase planning” de samba la última versión estable y con soporte es la 4.8.3 (Actualizado el 26 de junio de 2018). En este punto es recomendable situarse en la raíz seguidamente la descargamos con la herramienta “wget”:
# cd ~
# wget https://download.samba.org/pub/samba/stable/samba-4.8.3.tar.gz
El siguiente paso es extraer el empaquetado del código fuente y luego ingresar a la carpeta generada
# tar -zxf samba-4.8.3.tar.gz
# cd samba-4.8.3/
Ahora debemos configurar el paquete de instalación que utilizaremos con el comando “make”. El configure script permite personalizar varias opciones, como rutas de instalación. Aunque varias de las opciones ya vienen habilitadas por defecto especificaremos las opciones para realizar depuración y test. Además, también especificaremos el soporte para ads, winbind e integración al sistema. Seguidamente hacemos la instalación con “make”. (Esto tardara varios minutos).
# ./configure --enable-debug --enable-selftest --with-ads --with-systemd --with-winbind
# make && make install
Hacemos un test (opcional esto tardara bastante así que solo lo recomiendo en entornos de producción, también puede usar make quicktest ) y agregamos los directorios que contienen los comandos al PATH
# make test
# export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH
Aprovisionamiento del Directorio Activo SAMBA 4
El proceso de aprovisionamiento de Samba AD crea las bases de datos de AD y agrega registros iniciales, como la cuenta de administrador de dominio y las entradas de DNS requeridas.
Agregar una entrada con el nombre “ip host.dominio host” en el /etc/hosts :
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.x.11 tu-server-01.tu-dominio.bo tu-server-01
En ambientes virtuales como en nuestro caso (vmware) es necesario deshabilitar la interfaz de red “virbr0”, caso contrario el aprovisionamiento no será el esperado. Recuerde tener solo una interfaz habilitada.
# systemctl stop libvirtd.service
# systemctl status libvirtd.service
# systemctl disable libvirtd.service
# reboot
Nosotros realizaremos el aprovisionamiento con rfc2307 habilitando varios niveles de compatibilidad y en modo interactivo.
# samba-tool domain provision --use-rfc2307 --interactive
Si percibe el siguiente mensaje “Unable to determine the DomainSID, can not enforce uniqueness constraint on local domainSIDs” paselo por alto, esto se debe a que este es el primer controlador de dominio instalado.
Configurando el servidor DNS
Los miembros de dominio en un AD usan DNS para localizar servicios, como LDAP y Kerberos. Para eso, necesitan usar un servidor DNS que sea capaz de resolver la zona AD DNS.
En el DC, configure el dominio AD DNS en el parámetro “search” y la IP de su DC en el parámetro “nameserver” del /etc/resolv.conf. Para esto puede usar el editor de red del administrador de red avanzado:
# nm-connection-editor
# cat /etc/resolv.conf
# Generated by NetworkManager
search tu-dominio.bo
nameserver 10.1.x.11
nameserver 8.8.8.8
nameserver 8.8.4.4
Configurando el firewall del S.O.
Agregaremos los puertos necesarios en el firewall del S.O. para resolver en especial DNS y permitir LDAP, asegúrese de que su firewall de red (si lo tiene) tenga también los permisos adecuados y evítese un dolor de cabeza.
# firewall-cmd --add-port=53/tcp --permanent
# firewall-cmd --add-port=53/udp --ermanent
# firewall-cmd --add-port=88/tcp --permanent
# firewall-cmd --add-port=88/udp --permanent
# firewall-cmd --add-port=135/tcp --permanent
# firewall-cmd --add-port=137-138/udp --permanent
# firewall-cmd --add-port=139/tcp --permanent
# firewall-cmd --add-port=389/tcp --permanent
# firewall-cmd --add-port=389/udp --permanent
# firewall-cmd --add-port=445/tcp --permanent
# firewall-cmd --add-port=464/tcp --permanent
# firewall-cmd --add-port=464/udp --permanent
# firewall-cmd --add-port=636/tcp --permanent
# firewall-cmd --add-port=1024-5000/tcp --permanent
# firewall-cmd --add-port=3268-3269/tcp --permanent
# firewall-cmd --reload
Comprobación de puertos
Para identificar los puertos y las interfaces de red en los que está escuchando el controlador de dominio (DC) de Active Directory (AD) de Samba, ejecute:
# netstat -plaunt | egrep "ntp|bind|named|samba|?mbd"
Para verificar puertos abiertos
# firewall-cmd --list-all
Además, el servicio AD DC requiere que se abran los siguientes puertos en el DC:
Service |
Port |
Protocol |
DNS * |
53 |
tcp/udp |
Kerberos |
88 |
tcp/udp |
ntp ** |
123 |
udp |
End Point Mapper (DCE/RPC Locator Service) |
135 |
tcp |
NetBIOS Name Service |
137 |
udp |
NetBIOS Datagram |
138 |
udp |
NetBIOS Session |
139 |
tcp |
LDAP |
389 |
tcp/udp |
SMB over TCP |
445 |
tcp |
Kerberos kpasswd |
464 |
tcp/udp |
LDAPS *** |
636 |
tcp |
Global Catalog |
3268 |
tcp |
Global Catalog SSL *** |
3269 |
tcp |
Dynamic RPC Ports **** |
49152-65535 |
tcp |
* Esto podría ser proporcionado por el servidor DNS interno de Samba, o el servidor DNS Bind9.
** Si ntp está configurado y ejecutándose en el DC.
*** Si tls enabled = yes (default) está establecido en su archivo smb.conf.
**** El rango coincide con el rango de puertos utilizado por Windows Server 2008 y posterior. Las versiones de Samba anteriores a 4.7 usaban los puertos TCP 1024 a 1300 en su lugar. Para configurar manualmente el rango de puertos en Samba 4.7 y posterior, configure el parámetro del puerto del servidor rpc en su archivo smb.conf.
Dependiendo de su instalación, los servicios que no sean samba pueden abrir puertos adicionales necesarios para su entorno de AD.
Para administrar vía RSAT (Windows 8.1 ingles, asegúrese de bajar el paquete adecuado) agregue
# firewall-cmd --permanent --zone=public --add-port=49152-65535/tcp
# firewall-cmd --reload
Configurando el inicio automático del servicio samba
Configuramos el daemon para el inicio automático del servicio, y habilitamos/levantamos el servicio.
# cat /etc/systemd/system/samba.service
[Unit]
Description= Samba 4 Active Directory
After=syslog.target
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba
[Install]
WantedBy=multi-user.target
# systemctl enable samba
# systemctl start samba
Verificando el DNS
Para verificar que su configuración AD DNS funciona correctamente, consulte los siguientes 3 registros DNS _ldap SRV, _kerberos SRV y el registro A del controlador de dominio:
# host -t SRV _ldap._tcp.tu-dominio.bo
# host -t SRV _kerberos._udp.tu-dominio.bo
# host -t A sin-ldap-01.tu-dominio.bo
Uniendo un equipo Windows al Dominio
Utilizare una estación Windows 8 para fines de prueba, el equipo debe estar en la misma red y debe tener el DNS apuntando al nuevo AD:
Actualizado: Si desean unir al dominio equipos Linux pueden utilizar herramientas como PBIS-OPEN, yo la he utilizado con distribuciones de escritorio Ubuntu y Kubuntu con muy buenos resultados ademas de facilitarme mucho la configuración. Claro que si deseas tener un mejor control de estas configuraciones recomiendo darle una vistazo a SSSD. Comparto una buena referencia sugerida por NATHAN a continuación:
https://www.sysadmit.com/2019/11/linux-anadir-equipo-al-dominio-windows.html
Suerte y feliz configuración 🙂 !
Referencias
https://es.wikipedia.org/wiki/CentOS
https://inspiretic.wordpress.com/2016/02/07/samba-4-vs-samba-3/
https://es.wikipedia.org/wiki/Samba_(software)
https://wiki.samba.org/index.php/Main_Page
https://www.centos.org/forums/viewtopic.php?t=63995
http://web.mit.edu/rhel-doc/3/rhel-sag-es-3/ch-lvm-intro.html
http://maslinux.es/5-formas-de-agregar-o-cambiar-el-nombre-de-host-en-rhelcentos-7/
https://www.linkedin.com/pulse/samba-4-active-directory-centos-7-aur%C3%A9lien-husson
https://sysarmy.com.ar/help/?qa=2496/samba-4-rsat-gpo
https://social.technet.microsoft.com/Forums/office/es-ES/1b2c261b-57c6-4e0a-9db2-717b6c3e7bdd/no-se-pudo-cambiar-el-nombre-dns-de-dominio-principal?forum=wsades
https://wiki.samba.org/index.php/Samba_AD_DC_Port_Usage
Extra
https://www.spinics.net/lists/samba/msg149792.html
https://askubuntu.com/questions/743819/connection-timed-out-no-servers-could-be-reached-error
https://www.putorius.net/2018/01/update-search-domains-on-red-hat-7.html
https://norfipc.com/redes/como-usar-comando-nslookup-windows.html
https://www.thegeekdiary.com/how-to-remove-virbr0-and-lxcbr0-interfaces-on-centos-rhel-5-and-rhel-7/
Oficial
http://mirror.centos.org/centos/7/centosplus/x86_64/Packages/
https://wiki.samba.org/index.php/Main_Page
https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller#Installing_Samba
https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller#Installing_Samba
https://wiki.samba.org/index.php/Build_Samba_from_Source
Guías
https://www.howtoforge.com/tutorial/samba-4-domain-controller-installation-on-centos/
https://www.linkedin.com/pulse/samba-4-active-directory-centos-7-aurélien-husson
http://www.mauriciomatamala.net/SO/sambadc.php