Los administradores de sistemas utilizan Samba para superar el problema de la interoperabilidad en un entorno mixto en el que tiene tanto Linux como Windows. Proporciona una plataforma común para que tanto Windows como Linux tengan un espacio compartido común.
El controlador de dominio es un servicio que se utiliza para la administración centralizada de usuarios, grupos o cualquier objeto en la red. Este servicio nos permite administrar, autenticar y proteger el inicio de sesión de los usuarios y los datos relacionados.
Este tutorial explica cómo podemos configurar Samba en Linux como un controlador de dominio principal.
1. Configurar el nombre de host adecuado
Asegúrese de haber configurado el nombre de host y la IP estática adecuados. Si está utilizando una dirección IP interna y desea acceder a ella desde Internet, configure las reglas NAT adecuadas en su firewall.
En este tutorial usaremos tgs.example.com como nombre de host.
# vi /etc/sysconfig/network HOSTNAME=tgs.example.com
Asegúrese de que tenga una configuración de dirección IP estática adecuada en el archivo ifcfg-eth0.
# vi /etc/sysconfig/network-script/ifcfg-eth0 IPADDR=192.168.101.1 NETMASK=255.255.255.0
Además, asigne la puerta de enlace y dns en consecuencia en su archivo /etc/sysconfig/network y /etc/resolv.conf.
Verifique que su archivo /etc/hosts tenga una entrada similar a la siguiente.
# vi /etc/hosts 192.168.101.1 tgs.example.com tgs
Además, asegúrese de que el servicio NTP esté configurado y funcionando correctamente en este servidor.
2. Instalar Samba desde la fuente
En CentOS, de forma predeterminada, los paquetes de samba no se instalarán para el tipo de instalación mínima.
Primero, instale los siguientes paquetes dependientes.
# yum install glibc glibc-devel gcc python* libacl-devel krb5-workstation krb5-libs pam_krb5 git-core openldap-devel
A continuación, descargue la fuente de samba como se muestra a continuación.
# git clone git://git.samba.org/samba.git sambaserver
Los archivos se descargarán en el directorio sambaserver. Instale el servidor samba como se muestra a continuación.
cd sambaserver ./configure --enable-debug --enable-selftest make make install
Samba se instalará en la ubicación predeterminada /usr/local/samba/bin. Verá varias utilidades de cliente Samba instaladas en este directorio.
# cd /usr/local/samba/bin/ # ls cifsdd ldbsearch ntdbrestore regshell smbcquotas tdbbackup dbwrap_tool locktest ntdbtool regtree smbget tdbdump eventlogadm masktest ntlm_auth rpcclient smbpasswd tdbrestore gentest ndrdump oLschema2ldif samba-tool smbspool tdbtool ldbadd net pdbedit sharesec smbstatus testparm ldbdel nmblookup pidl smbcacls smbtar wbinfo ldbedit nmblookup4 profiles smbclient smbta-util ldbmodify ntdbbackup regdiff smbclient4 smbtorture ldbrename ntdbdump regpatch smbcontrol smbtree
3. Configurar provisión de dominio
Para iniciar la provisión del dominio, ejecute la herramienta samba como se muestra a continuación. Esto recogerá el nombre de host y el nombre de dominio predeterminados de los archivos de configuración.
# /usr/local/samba/bin/samba-tool domain provision Realm [EXAMPLE.COM]: Domain [EXAMPLE]: 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) [125.22.47.125]: 8.8.8.8 Administrator password: Retype password: ... ... Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=example,DC=com Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: tgs NetBIOS Domain: EXAMPLE DNS Domain: example.com DOMAIN SID: S-1-5-21-2869186506-3515775153-2841826798
4. Iniciar el servicio Samba
Inicie el servicio samba, como se muestra a continuación.
/usr/local/samba/sbin/samba
Agregue la siguiente entrada al archivo rc.local para asegurarse de que el servicio samba se inicie automáticamente durante el inicio del sistema.
# echo /usr/local/samba/sbin/samba >> /etc/rc.d/rc.local # cat /etc/rc.d/rc.local touch /var/lock/subsys/local /usr/local/samba/sbin/samba
5. Comprobar la versión de Samba
Puede verificar la versión de samba usando el comando samba o smbclient como se muestra a continuación.
# /usr/local/samba/sbin/samba -V Version 4.2.0pre1-GIT-913b2a1 # /usr/local/samba/bin/smbclient -V Version 4.2.0pre1-GIT-913b2a1
El siguiente comando mostrará todos los recursos compartidos de Samba que están actualmente disponibles.
# /usr/local/samba/bin/smbclient -L localhost -U% Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.2.0pre1-GIT-913b2a1) Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Server Comment --------- ------- Workgroup Master --------- -------
Verifique que pueda iniciar sesión con el nombre de usuario y la contraseña del administrador.
# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator -c 'ls' Enter administrator's password: Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] . D 0 Fri Feb 21 15:06:15 2014 .. D 0 Fri Feb 21 15:06:28 2014 57901 blocks of size 8388608. 54372 blocks available
6. Verificar dominios
Ahora verifiquemos si el dominio funciona como se esperaba. Verifique el SRV y el registro A como se muestra a continuación.
# host -t SRV _ldap._tcp.example.com _ldap._tcp.example.com has SRV record 0 100 389 tgs.example.com. # host -t SRV _kerberos._udp.example.com _kerberos._udp.example.com has SRV record 0 100 88 tgs.example.com. # host -t A tgs.example.com tgs.example.com has address 192.168.101.1
Use el comando samba-tool para verificar el nombre del reino como se muestra a continuación.
# /usr/local/samba/bin/samba-tool testparm --suppress-prompt | grep realm realm = EXAMPLE.COM
7. Configurar Kerberos
Copie el archivo de muestra krb5.conf en el directorio /etc.
cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf
Establezca default_realm en su nombre de dominio. En este caso, lo estableceremos en example.com
# cat /etc/krb5.conf [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = true
Use el comando kinit para asegurarse de que Kerberos esté configurado correctamente como se muestra a continuación.
# kinit [email protected] Password for [email protected]: Warning: Your password will expire in 41 days on Fri Apr 4 15:06:25 2014
Finalmente, puede usar la herramienta de administración remota de Windows para conectarse al servidor Samba y usarlo como controlador de dominio.
Si tiene algún problema durante el proceso anterior, asegúrese de actualizar el sistema actualizando todos los paquetes. También puede deshabilitar SELinux temporalmente y revisar audit.log en busca de mensajes de error relacionados con SELinux. Además, asegúrese de que sus reglas de IPTables no estén bloqueando los puertos que Samba requiere para comunicarse entre los servidores.