1.1K
Te equivocas si piensas que Active Directory y Domain Controller son palabras asociadas exclusivamente a Windows. Puede ser sorprendente para algunos, pero es posible configurar un controlador de dominio de Linux con Samba Active Directory.
La mejor oferta es que Samba Active Directory es gratis. Repasemos el proceso de instalación y configuración de un controlador de dominio de Active Directory de Samba en esta publicación.
Requisitos
Antes de instalar Samba, hay algunos requisitos que debe cumplir.
- Un servidor Linux, como RHEL, Debian, Ubuntu y sus derivados. Esta publicación usará Ubuntu Server 20.04.
- El servidor debe tener una dirección IP estática. El servidor en esta publicación tendrá una dirección IP de 10.0.0.6.
- Un dominio DNS. Esta publicación utiliza un nombre de dominio que no está orientado a Internet demo.int.
Configure el nombre de host del servidor y el FQDN
Como parte de la preparación para la instalación de Samba Active Directory, configuremos la identidad del servidor en la red configurando su nombre y FQDN.
En su terminal, ejecute el siguiente comando para cambiar el nombre del servidor. En este ejemplo, el nombre del servidor es dc1.
sudo hostnamectl set-hostname dc1
A continuación, abra el archivo /etc/hosts en un editor de texto como nano.
sudo nano /etc/hosts
Agregue la entrada de host a continuación. Asegúrese de reemplazar la dirección IP, el dominio y el nombre de host.
# IP, FQDN, and hostname 10.0.0.6 dc1.demo.int dc1
El archivo se vería similar a la captura de pantalla a continuación. Guarde el archivo y salga del editor.
Confirme que los cambios de nombre abreviado y FQDN se realizaron correctamente ejecutando este comando:
# Get the short name hostname # Get the FQDN hostname -f
Deshabilitar el solucionador de DNS predeterminado
En Ubuntu, el servicio resuelto por systemd administra la resolución de DNS en el sistema. Antes de instalar Samba Active Directory, queremos deshabilitar el administrador de DNS predeterminado para que podamos apuntar la resolución de DNS al servidor mismo.
Primero, deshabilite el servicio resuelto por systemd.
sudo systemctl disable --now systemd-resolved
A continuación, elimine el enlace del archivo /etc/resolv.conf a /run/systemd/resolve/stub-resolv.conf para que podamos reemplazarlo.
sudo unlink /etc/resolv.conf
Ahora creemos un nuevo archivo /etc/resolv.conf usando el editor de texto.
sudo nano /etc/resolv.conf
Rellene el archivo con los siguientes valores. Asegúrese de reemplazar la primera dirección IP del servidor de nombres con la dirección IP de su servidor y el dominio de búsqueda con su dominio DNS. Puede dejar la dirección IP del segundo servidor de nombres en 1.1.1.1, que es el sistema de resolución de DNS público de Cloudflare.
# The Samba server's static IP address nameserver 10.0.0.6 # The fallback DNS resolver IP address nameserver 1.1.1.1 # The Samba DNS domain search demo.int
Guarde el archivo y salga del editor de texto.
Haga que /etc/resolv.conf sea inmutable. Esto es para evitar que Ubuntu lo sobrescriba durante un reinicio del sistema y cualquier cambio que se escriba en él.
sudo chattr +i /etc/resolv.conf
Finalmente, reinicie el servidor.
sudo reboot
Instalar Samba
Después de reiniciar, inicie sesión en su servidor nuevamente y siga estos pasos para instalar Samba.
Actualice la memoria caché del índice de paquetes local.
sudo apt-get update
Instale Samba y sus paquetes necesarios.
sudo apt-get install -y acl attr samba samba-dsdb-modules samba-vfs-modules smbclient winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools
La configuración del paquete se inicia automáticamente. La primera página le pide que especifique el dominio Kerberos predeterminado, que es el dominio DNS. Si seguiste los pasos de preparación, el dominio ya debería estar indicado. De lo contrario, escriba el dominio y presione Entrar.
En la página siguiente, ingrese el nombre de host del servidor Kerberos y presione Entrar. En este caso, solo tenemos un servidor.
Escriba el nombre de su servidor cuando se le solicite el nombre del servidor administrativo y presione Entrar. Espera a que termine la instalación.
Ejecute el siguiente comando para deshabilitar los servicios innecesarios para el servidor del controlador de dominio de Active Directory de Samba.
sudo systemctl stop --now smbd nmbd winbind sudo systemctl disable --now smbd nmbd winbind
El proceso de instalación crea una configuración de marcador de posición que puede interrumpir el proceso de aprovisionamiento del controlador de dominio de Active Directory de Samba. Este archivo está en /etc/samba/smb.conf. Entonces, antes de continuar, primero cambiemos el nombre de este archivo.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Por último, habilite el servicio samba-ad-dc, que es fundamental para ejecutar un controlador de dominio de Active Directory de Samba.
sudo systemctl unmask samba-ad-dc sudo systemctl enable samba-ad-dc
Configurar el controlador de dominio de Active Directory de Samba
La instalación de Samba no lo hace automáticamente utilizable como controlador de dominio. Hay algunos pasos más antes de que el controlador de dominio de Active Directory de Samba sea completamente funcional.
El aprovisionamiento de dominios se realiza mediante el comando samba-tool, y puede hacerlo de forma interactiva y no interactiva. Pero por el bien de esta demostración, realicemos un aprovisionamiento interactivo.
Ejecute el siguiente comando en la terminal. El parámetro –use-rfc2307 permite que las extensiones NIS manejen correctamente los atributos de usuario de Unix.
sudo samba-tool domain provision --use-rfc2307 --interactive
La herramienta le pedirá que ingrese/confirme información, como:
- Realm — Tu dominio completo. Pulse Intro para aceptar el valor predeterminado.
- Demostración: el nombre base del dominio. Probablemente sea mejor que conozca esto como NetBIOS. Pulse Intro para aceptar el valor predeterminado.
- Función del servidor: la función del servidor Samba. La selección predeterminada es CC. Presione Entrar para aceptar.
- Servidor DNS: la opción predeterminada es SAMBA_INTERNAL, lo que significa que utilizará Samba como servidor DNS. Presione Entrar.
- Dirección IP del reenviador de DNS: por defecto, es la dirección IP interna del servidor. En este caso, ingrese una resolución de DNS pública a donde Samba reenviará las consultas que no puede manejar internamente. Por ejemplo, escriba 1.1.1.1 y presione Entrar.
- Contraseña del administrador: la contraseña predeterminada de la cuenta del administrador de Samba. La contraseña debe tener al menos 7 caracteres.
- Al final del aprovisionamiento, verá un resultado similar a la siguiente captura de pantalla.
Entonces, ¿qué ha sucedido en este punto? La herramienta samba creó el archivo de configuración de Samba en /etc/samba/smb.conf. Puede inspeccionar su contenido así.
cat /etc/samba/smb.conf
Además, el archivo de configuración de Kerberos en /var/lib/samba/private/krb5.conf.
cat /var/lib/samba/private/krb5.conf
Pero el archivo krb5.conf debe estar en /etc/krb5.conf para que Kerberos funcione correctamente, ¡así que vamos a moverlo!
sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
Inicie el servicio samba-ad-dc y confirme que se está ejecutando.
sudo systemctl start samba-ad-dc
sudo systemctl status samba-ad-dc
Debería ver que el estado de Samba AD Daemon está activo (en ejecución).
Por último, confirme el nivel de dominio del controlador de dominio de Active Directory de Samba. Debería ver que el nivel más bajo es equivalente a Windows 2008 R2.
Verificar el directorio activo de Samba
Ahora, realicemos algunos pasos de verificación para confirmar que Samba Active Directory es completamente funcional.
Probar los recursos compartidos predeterminados
Ejecute el siguiente comando para probar si puede enumerar los recursos compartidos. Reemplace dc1.demo.int con el FQDN de su servidor Samba.
smbclient -L dc1.demo.int -N
Como puede ver a continuación, el comando enumeró los recursos compartidos predeterminados.
A continuación, pruebe si la cuenta de administrador puede autenticarse y enumerar el contenido del recurso compartido sysvol. Escriba la contraseña de la cuenta de administrador cuando se le solicite.
smbclient //dc1.demo.int/sysvol -U Administrator -c 'ls'
Verifique los registros DNS del servidor Samba
Ejecute estos comandos para confirmar que la resolución de nombres DNS funciona como se esperaba.
# Lookup the Samba Server A record host -t A dc1.demo.int. # Lookup the Kerberos service record host -t SRV _kerberos._udp.demo.int. # Lookup the LDAP service record host -t SRV _ldap._tcp.demo.int.
Probar la autenticación de Kerberos
Pruebe el inicio de sesión de la cuenta de administrador.
kinit administrator
Si se aprueba la autenticación, verá un mensaje similar al siguiente.
Enumere los vales de Kerberos almacenados en caché.
klist
Crear un nuevo usuario
Ahora, vamos a crear un nuevo usuario en Samba Active Directory llamado devuser1 con Polyester@Left2@Stimuli como contraseña.
sudo samba-tool user create devuser1 Polyester@Left2@Stimuli
Enumere todos los usuarios y confirme que devuser1 está en la lista.
sudo samba-tool user list
Unir una computadora con Windows al dominio
Si tiene una PC con Windows que desea unir al dominio de Active Directory de Samba, siga estos pasos.
Abra el administrador de PowerShell en la computadora con Windows y ejecute este comando para encontrar el nombre y el índice del adaptador de red.
Get-NetAdapter -Name "*"
Una vez que conozca el índice del adaptador de red, ejecute este comando para cambiar la dirección IP del servidor DNS y señalarlos al servidor Samba. Asegúrese de reemplazar los valores -InterfaceIndex y -ServerAddresses según corresponda.
Set-DNSClientServerAddress ` -InterfaceIndex 6 ` -ServerAddresses '10.0.0.6','1.1.1.1'
Confirme que la computadora puede resolver el nombre y la dirección IP del servidor Samba.
Resolve-DnsName -Type A -Name dc1.demo.int
Ahora que la computadora sabe cómo ubicar el servidor Samba Active Directory, agreguemos la computadora como miembro del dominio.
Add-Computer -DomainName 'demo.int' -Restart
Escriba el nombre y la contraseña de la cuenta de administrador y haga clic en Aceptar. Si el proceso de unión al dominio es exitoso, la computadora se reiniciará automáticamente.
Mientras espera que la computadora arranque en Windows, ejecute el siguiente comando en la terminal de Ubuntu.
sudo samba-tool computer list
Este comando mostrará una lista de todas las computadoras miembro, y debería ver la PC con Windows a la que se unió recientemente.
Ahora, inicie sesión en Windows con la cuenta de usuario del dominio (devuser1@demo.int).
Una vez que haya iniciado sesión, abra PowerShell y ejecute los siguientes comandos para confirmar el contexto de inicio de sesión del usuario.
$env:USERDNSDOMAIN whoami query user
¡Eso es todo! Se unió con éxito a una computadora con Windows al dominio de Samba Active Directory e inició sesión como usuario del dominio.