You are on page 1of 13

Cmo configurar un Controlador de Dominio y Directorio Activo GNU/Linux con Samba4

Samba es una suite libre que, desde 1992, ha provedo servicios de archivos e impresin a todo tipo de clientes SMB/CIFS, incluyendo muchas versiones de Microsoft Windows. Samba est disponible libremente bajo licencia GNU General Public License. Para los fines de esta gua se asume que ya tienes experiencia manejando servidor y clientes en un entorno Windows. As como tambin experiencia con GNU/Linux, ya que no me detendr a explicar como usar el editor vi o el comando sed y herramientas como iptables, Selinux y los initscripts del sistema. En el futuro prximo Samba se convertir en una alternativa fiable, econmica y robusta, que de la mano con GNU/Linux, encontrar su nicho las PyMES, y posiblemente empresas ms grandes, para que las mismas puedan montar su estructura informtica con Controlador de Dominio, Directorio Activo y los dems servicios que se pueden configurar en Linux como Proxy, Servidor Web, Base de Datos, etc. Es un placer para m ver cmo ha llegado a esta etapa luego de varios aos recorridos. SOTWARE QUE UTILIZAREMOS Centos 6.4 virtualizado en VirtualBox Samba 4.0.6 Bind NTP DHCP Kerberos Libreras de desarrollo (make, gcc, python, openssl, etc.) Manos a la obra... INSTALAR EL SISTEMA OPERATIVO CentOS 6.4 minimal en VirtualBox con dos interfaces de red y todo lo dems por defecto eth0 como NAT para tomar conexin a Internet (10.0.2.0/24) eth1 Bridged a la LAN del Dominio (192.168.5.0/24) Al finalizar la instalacin y loguearnos por primera vez en el servidor cambiamos el hostname del mismo, deshabilitamos iptables y selinux para evitar inconvenientes hasta nuevo aviso.
[root@localhost~]#sedi's/HOSTNAME=localhost.local/HOSTNAME=sambapdc01.mydomain.local/g'/etc/sysconfig/network [root@localhost~]#sedi's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config [root@localhost~]#serviceiptablesstop iptables:Flushingfirewallrules: [OK] iptables:SettingchainstopolicyACCEPT:filter [OK] iptables:Unloadingmodules: [OK] [root@localhost~]#chkconfingiptableslevel345off [root@localhost~]#reboot

Al regresar, configuramos la Interfaz de red para actualizar y descargar paquetes. Esta interfaz est NAT en la configuracin de la mquina virtual, pero editaremos el script ya que no nos interesa que el dhclient nos genere el fichero resolv.conf.

[root@sambapdc01~]#vi/etc/sysconfig/networkscripts/ifcfgeth0 DEVICE="eth0" BOOTPROTO="none" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" DEFROUTE="yes" IPADDR="10.0.2.15" NETMASK="255.255.255.0" GATEWAY="10.0.2.2"

Configurar la interfaz de red para el Dominio y red local, quedando de la siguiente manera.
[root@sambapdc01~]#vi/etc/sysconfig/networkscripts/ifcfgeth1 DEVICE="eth1" BOOTPROTO="none" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" USERCTL="no" IPV6INIT="no" PEERDNS="no" DEFROUTE="no" DNS1="127.0.0.1" IPADDR=192.168.5.1" NETMASK="255.255.255.0"

Editamos el fichero resolv.conf para resolver nombres de Internet.


[root@sambapdc01~]#vi/etc/resolv.conf nameserver10.0.2.2 nameserver8.8.8.8 [root@sambapdc01~]#servicenetworkrestart Shuttingdowninterfaceeth0: Shuttingdowninterfaceeth1: Shuttingdowninterfaceloopbackinterface: Bringinguploopbackinterface: Bringingupinterfaceeth0: Bringingupinterfaceeth1: [OK] [OK] [OK] [OK] [OK] [OK]

ACTUALIZAR EL SISTEMA: Instalar dependencias, libreras de desarrollo y compilacin, y otros servicios.


[root@sambapdc01~]#rpmimporthttp://apt.sw.be/RPMGPGKEY.dag.txt [root@sambapdc01~]#rpmihttp://packages.sw.be/rpmforgerelease/rpmforgerelease0.5.22.el6.rf.i686.rpm [root@sambapdc01~]#yumupdatey [root@sambapdc01~]#yuminstallybashcompletionnmapnanowgetscreendhcpbindbindlibsbindutilsbindsdbmake gccrpmbuildlibtoolautoconfopenssldevellibacldevellibblkiddevelgnutlsdevelreadlinedevelpythondevelgdb pkgconfiggtkhtml2setroubleshootserversetroubleshootpluginspolicycoreutilspythonlibsemanagepythonsetools libspythonsetoolslibskrb5serverkrb5libskrb5workstation [root@sambapdc01~]#reboot

DESCARGAR, INSTALAR SAMBA4


[root@sambapdc01~]#mkdir/usr/src/samba4 [root@sambapdc01~]#cd/usr/src/samba4 [root@sambapdc01samba4]#wgethttp://samba.org/samba/ftp/stable/samba4.0.6.tar.gz [root@sambapdc01samba4]#tarzxvfsamba4.0.6.tar.gz [root@sambapdc01samba4]#cdsamba4.0.6/ [root@sambapdc01samba4.0.6]#./configure.developer&&make&&makeinstall

Al final casi una hora despus, al menos en mi caso, tendremos estas lneas finales:
*installingbin/default/source3/eventlogadm.instas/usr/local/samba/bin/eventlogadm *installingbin/default/source3/sharesec.instas/usr/local/samba/bin/sharesec *installingbin/default/source3/ntlm_auth.instas/usr/local/samba/bin/ntlm_auth *installingbin/default/source3/dbwrap_tool.instas/usr/local/samba/bin/dbwrap_tool Waf:Leavingdirectory`/usr/src/samba4/samba4.0.6/bin' 'install'finishedsuccessfully(53m18.350s)

Agregar la ruta de Samba4 al PATH


[root@sambapdc01samba4.0.6]#cd [root@sambapdc01~]#nano.bash_profile PATH=$PATH:$HOME/bin:/usr/local/samba/bin:/usr/local/samba/sbin [root@sambapdc01~]#source.bash_profile

Verificamos que se instal correctamente.


[root@sambapdc01~]#sambaV Version4.0.6

HACER LA PROVISIN DEL DOMINIO CON SAMBA4


[root@sambapdc01~]#sambatooldomainprovisionrealm=mydomain.localdomain=MYDOMAINadminpass'solucion.123' serverrole=dcdnsbackend=BIND9_DLZ LookingupIPv4addresses MorethanoneIPv4addressfound.Using192.168.5.1 LookingupIPv6addresses NoIPv6addresswillbeassigned Settingupshare.ldb Settingupsecrets.ldb Settinguptheregistry Settinguptheprivilegesdatabase Settingupidmapdb SettingupSAMdb Settingupsam.ldbpartitionsandsettings Settingupsam.ldbrootDSE PreloadingtheSamba4andADschema AddingDomainDN:DC=mydomain,DC=local Addingconfigurationcontainer Settingupsam.ldbschema Settingupsam.ldbconfigurationdata Settingupdisplayspecifiers Modifyingdisplayspecifiers Addinguserscontainer Modifyinguserscontainer Addingcomputerscontainer Modifyingcomputerscontainer Settingupsam.ldbdata Settingupwellknownsecurityprincipals Settingupsam.ldbusersandgroups Settingupselfjoin AddingDNSaccounts CreatingCN=MicrosoftDNS,CN=System,DC=mydomain,DC=local CreatingDomainDnsZonesandForestDnsZonespartitions PopulatingDomainDnsZonesandForestDnsZonespartitions See/usr/local/samba/private/named.confforanexampleconfigurationincludefileforBIND and/usr/local/samba/private/named.txtforfurtherdocumentationrequiredforsecureDNSupdates Settingupsam.ldbrootDSEmarkingassynchronized FixingprovisionGUIDs AKerberosconfigurationsuitableforSamba4hasbeengeneratedat/usr/local/samba/private/krb5.conf Oncetheabovefilesareinstalled,yourSamba4serverwillbereadytouse ServerRole:activedirectorydomaincontroller Hostname:sambapdc01 NetBIOSDomain:MYDOMAIN DNSDomain:mydomain.local DOMAINSID:S15214230643479790999145160529251

Antes de iniciar Samba4 por primera vez, configuramos BIND y Kerberos, los cuales son imprescindibles para su correcto funcionamiento. CONFIGURAR DNS (BIND) Es importante perder todo el tiempo necesario para que este servicio est a punto, ya que el funcionamiento de Samba4 depende totalmente del mismo. Editar el fichero /etc/named.conf Borramos todo el contenido del mismo solo dejando lo siguiente: [root@sambapdc01~]#nano/etc/named.conf
options{ allowquery{localhost;192.168.5.1;}; allowtransfer{localhost;192.168.5.1;}; allowrecursion{localhost;192.168.5.1;}; forwarders{10.0.2.2;8.8.8.8;}; tkeygssapikeytab"/usr/local/samba/private/dns.keytab"; }; include"/usr/local/samba/private/named.conf";

Editar el fichero resolv.conf


[root@sambapdc01~]#nano/etc/resolv.conf domainmydomain.local nameserver127.0.0.1

Iniciamos Bind
[root@sambapdc01~]#servicenamedstart Generating/etc/rndc.key: [OK] Startingnamed:[OK]

Si nos devuelve un error en el comando anterior o dura mucho tiempo para iniciar, generamos los Keys (opcionalmente, si da error para iniciar por falta de las llaves).
[root@sambapdc01~]#rndcconfgenar/dev/urandom [root@sambapdc01~]#chmod766/etc/rndc.key [root@sambapdc01~]#lns/usr/local/samba/private/dns.keytab/etc/krb5.keytab

CONFIGURAR KERBEROS Editamos el fichero de configuracin borrando todo y dejando solo lo siguiente.
[root@sambapdc01~]#nano/etc/krb5.conf [libdefaults] default_realm=MYDOMAIN.LOCAL dns_lookup_realm=false dns_lookup_kdc=true

INICIAMOS SAMBA PARA QUE EL MISMO CREE LA ESTRUCTURA DE ARCHIVOS Y CARPETAS NECESARIAS PARA SU FUNCIONAMIENTO. ESTO OCURRE AL INICIARLO POR PRIMERA VEZ.
[root@sambapdc01~]#sambaiMsingle& sambaversion4.0.6started. CopyrightAndrewTridgellandtheSambaTeam19922012 samba:using'single'processmodel AttemptingtoautogenerateTLSselfsignedkeysforhttpsforhostname'SAMBAPDC01.mydomain.local' TLSselfsignedkeysgeneratedOK

[root@sambapdc01~]#kinitadministrator@MYDOMAIN.LOCAL Passwordforadministrator@MYDOMAIN.LOCAL: Warning:Yourpasswordwillexpirein41daysonMonAug507:39:512013

CONFIGURAR DHCP
[root@sambapdc01~]#vi/etc/dhcp/dhcpd.conf optiondomainname"mydomain.local"; optiondomainnameservers192.168.5.1,8.8.8.8; optionnetbiosnameservers192.168.5.1; optionntpservers192.168.5.1; authoritative; subnet192.168.5.0netmask255.255.255.0{ range192.168.5.10192.168.5.20; optionbroadcastaddress192.168.5.255; optionrouters192.168.5.1; }

DESCARGAR, INSTALAR Y CONFIGURAR NTP (OPCIONAL) Si no hay sincronizacin de tiempo entre servidor y clientes, muchos servicios no estarn disponibles para stos ltimos. Necesitamos una versin de NTP igual o superior a la 4.2.6. Lamentablemente la versin actual de CentOS no la provee, por lo que la descargaremos del sitio rpmfind.net.
[root@sambapdc01~]#wgetftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/14/i386/ntp4.2.6p3 0.1.rc10.fc14.i686.rpm [root@sambapdc01~]#wgetftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/14/i386/ntpdate4.2.6p3 0.1.rc10.fc14.i686.rpm [root@sambapdc01~]#rpmintpdate4.2.6p30.1.rc10.fc14.i686.rpm warning:ntpdate4.2.6p30.1.rc10.fc14.i686.rpm:HeaderV3RSA/SHA256Signature,keyID97a1071f:NOKEY [root@sambapdc01~]#rpmintp4.2.6p30.1.rc10.fc14.i686.rpm warning:ntp4.2.6p30.1.rc10.fc14.i686.rpm:HeaderV3RSA/SHA256Signature,keyID97a1071f:NOKEY

En el final del fichero ntp.conf agregamos estas dos lneas.


[root@sambapdc01~]#nano/etc/ntp.conf ntpsigndsocket/usr/local/samba/var/lib/ntp_signd/ restrictdefaultmssntp

Editamos las siguientes lneas, que ya existen, para que queden as:
server127.127.1.1 fudge127.127.1.1stratum12

Finalmente cambiamos los servidores pblicos por estos, sin opciones adicionales:
server0.centos.pool.ntp.org server1.centos.pool.ntp.org server2.centos.pool.ntp.org

A continuacin aplicamos los permisos necesarios para que los servicios tengan acceso a los ficheros de configuracin y Selinux no nos de problemas si lo habilitamos luego y poder hacer las pruebas de lugar. Agregamos la variable de entorno MYREALM
[root@sambapdc01~]#echo'MYREALM="mydomain.local"'>>.bash_profile [root@sambapdc01~]#echo'exportMYREALM'>>.bash_profile [root@sambapdc01~]#source.bash_profile [root@sambapdc01~]#echo$MYREALM mydomain.local

Aplicar permisos y crear polticas de Selinux (por si lo habilitamos luego)


[root@sambapdc01~]#chgrpntp/usr/local/samba/var/lib/ntp_signd/ [root@sambapdc01~]#chownnamed:named/usr/local/samba/private/dns.keytab [root@sambapdc01~]#chownnamed:named/usr/local/samba/private/named.conf [root@sambapdc01~]#chmod644/usr/local/samba/private/dns.keytab [root@sambapdc01~]#chmod644/usr/local/samba/private/named.conf [root@sambapdc01~]#chownnamed:named/usr/local/samba/private/dns [root@sambapdc01~]#chmodg+r/usr/local/samba/private/dns.keytab [root@sambapdc01~]#chmod775/usr/local/samba/private/dns [root@sambapdc01~]#chcontnamed_conf_t/usr/local/samba/private/dns.keytab [root@sambapdc01~]#chcontnamed_conf_t/usr/local/samba/private/named.conf [root@sambapdc01~]#chcontnamed_var_run_t/usr/local/samba/private/dns [root@sambapdc01~]#chcontnamed_var_run_t/usr/local/samba/private/dns/${MYREALM}.zone [root@sambapdc01~]#semanagefcontextatnamed_conf_t/usr/local/samba/private/dns.keytab [root@sambapdc01~]#semanagefcontextatnamed_conf_t/usr/local/samba/private/named.conf [root@sambapdc01~]#semanagefcontextatnamed_conf_t/usr/local/samba/private/named.conf.update [root@sambapdc01~]#semanagefcontextatnamed_var_run_t/usr/local/samba/private/dns [root@sambapdc01~]#semanagefcontextatnamed_var_run_t/usr/local/samba/private/dns/${MYREALM}.zone [root@sambapdc01~]#semanagefcontextatnamed_var_run_t/usr/local/samba/private/dns/${MYREALM}.zone.jnl [root@sambapdc01~]#semanagefcontextatntpd_t/usr/local/samba/var/run/ntp_signd [root@sambapdc01~]#chconusystem_utntpd_t/usr/local/samba/var/run/ntp_signd [root@sambapdc01~]#chconusystem_utntpd_t/usr/local/samba/var/run/ [root@sambapdc01~]#chcontntpd_t/usr/local/samba/var/run/ntp_signd/socket

Es posible que en los comandos chcon anteriores obtengamos una salida de error como esta:
chcon:can'tapplypartialcontexttounlabeledfile`/usr/local/samba/var/run/ntp_signd'

Por lo que crearemos una poltica para que nos permita el acceso.
[root@sambapdc01~]#nanosamba4.te modulesamba41.0; require{ typentpd_t; typeusr_t; typeinitrc_t; classsock_filewrite; classunix_stream_socketconnectto; } #=============ntpd_t============== allowntpd_tusr_t:sock_filewrite; #=============ntpd_t============== allowntpd_tinitrc_t:unix_stream_socketconnectto;

La revisamos y cargamos.
[root@sambapdc01~]#checkmoduleMmosamba4.modsamba4.te checkmodule: loadingpolicyconfigurationfromsamba4.te checkmodule: policyconfigurationloaded checkmodule: writingbinaryrepresentation(version10)tosamba4.mod [root@sambapdc01~]#semodule_packageosamba4.ppmsamba4.mod [root@sambapdc01~]#semoduleisamba4.pp [root@sambapdc01~]#reboot

AL REGRESAR PROBAMOS TODO PARA VERIFICAR QUE ESTAMOS BIEN


[root@sambapdc01~]#servicenamedstart Startingnamed:[OK] [root@sambapdc01~]#servicentpdstart Startingntpd:[OK] [root@sambapdc01~]#servicedhcpdstart Startingdhcpd:[OK] [root@sambapdc01~]#sambaiMsingle& [1]1287 sambaversion4.0.6started. CopyrightAndrewTridgellandtheSambaTeam19922012 samba:using'single'processmodel

Probando Kerberos
[root@sambapdc01~]#klist Ticketcache:FILE:/tmp/krb5cc_0 Defaultprincipal:administrator@MYDOMAIN.LOCAL ValidstartingExpiresServiceprincipal 06/24/1307:53:1406/24/1317:53:14krbtgt/MYDOMAIN.LOCAL@MYDOMAIN.LOCAL renewuntil06/25/1307:53:07

Probando Samba4
[root@sambapdc01~]#smbclientLlocalhostU% Domain=[MYDOMAIN]OS=[Unix]Server=[Samba4.0.6] SharenameTypeComment netlogonDisk sysvolDisk IPC$IPCIPCService(Samba4.0.6) Domain=[MYDOMAIN]OS=[Unix]Server=[Samba4.0.6] ServerComment WorkgroupMaster [root@sambapdc01~]#smbclient//localhost/netlogonUAdministrator%'solucion.123'c'ls' Domain=[MYDOMAIN]OS=[Unix]Server=[Samba4.0.6] .D0MonJun2407:38:572013 ..D0MonJun2407:40:052013 52475blocksofsize131072.35768blocksavailable

Podemos visualizar los usuarios y grupos:


[root@sambapdc0a1~]#wbinfou Administrator Guest krbtgt dnssambapdc01 [root@sambapdc01~]#wbinfog EnterpriseReadOnlyDomainControllers DomainAdmins DomainUsers DomainGuests DomainComputers DomainControllers SchemaAdmins EnterpriseAdmins GroupPolicyCreatorOwners ReadOnlyDomainControllers DnsUpdateProxy [root@sambapdc01~]#sambatooldnsquery127.0.0.1mydomain.local@ALL Passwordfor[administrator@MYDOMAIN.LOCAL]: Name=,Records=4,Children=0 NS:sambapdc01.mydomain.local.(flags=600000f0,serial=1,ttl=900) A:192.168.24.2(flags=600000f0,serial=1,ttl=900) A:10.0.2.15(flags=600000f0,serial=1,ttl=900) SOA:serial=3,refresh=900,retry=600,expire=86400,ns=sambapdc01.mydomain.local., email=hostmaster.mydomain.local.(flags=600000f0,serial=2,ttl=3600) Name=_msdcs,Records=0,Children=0 Name=_sites,Records=0,Children=1 Name=_tcp,Records=0,Children=4 Name=_udp,Records=0,Children=2

Name=DomainDnsZones,Records=0,Children=2 Name=ForestDnsZones,Records=0,Children=2 Name=sambapdc01,Records=2,Children=0 A:192.168.24.2(flags=f0,serial=1,ttl=900) A:10.0.2.15(flags=f0,serial=2,ttl=900)

Probando DNS (BIND)


[root@sambapdc01~]#hosttSRV_ldap._tcp.mydomain.local. _ldap._tcp.mydomain.localhasSRVrecord0100389sambapdc01.mydomain.local. [root@sambapdc01~]#hosttSRV_kerberos._udp.mydomain.local. _kerberos._udp.mydomain.localhasSRVrecord010088sambapdc01.mydomain.local. [root@sambapdc01~]#hosttAsambapdc01.mydomain.local. sambapdc01.mydomain.localhasaddress10.0.2.15 sambapdc01.mydomain.localhasaddress192.168.5.1

Probando el DNS Dinmico


[root@sambapdc01~]#samba_dnsupdateverboseallnames
IPs:['192.168.5.1','10.0.2.15'] CallingnsupdateforAmydomain.local192.168.5.1 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: mydomain.local. 900 IN A 192.168.5.1 CallingnsupdateforAsambapdc01.mydomain.local192.168.5.1 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: sambapdc01.mydomain.local.900 IN A 192.168.5.1 CallingnsupdateforAgc._msdcs.mydomain.local192.168.5.1 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: gc._msdcs.mydomain.local.900 IN A 192.168.5.1 CallingnsupdateforCNAMEe972dbabdc304867818cab4e0b1108fb._msdcs.mydomain.localsambapdc01.mydomain.local Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: e972dbabdc304867818cab4e0b1108fb._msdcs.mydomain.local.900 INCNAMEsambapdc01.mydomain.local. CallingnsupdateforSRV_kpasswd._tcp.mydomain.localsambapdc01.mydomain.local464 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _kpasswd._tcp.mydomain.local.900IN SRV 0100464sambapdc01.mydomain.local. CallingnsupdateforSRV_kpasswd._udp.mydomain.localsambapdc01.mydomain.local464 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _kpasswd._udp.mydomain.local.900IN SRV 0100464sambapdc01.mydomain.local. CallingnsupdateforSRV_kerberos._tcp.mydomain.localsambapdc01.mydomain.local88 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _kerberos._tcp.mydomain.local.900IN SRV 010088sambapdc01.mydomain.local. CallingnsupdateforSRV_kerberos._tcp.dc._msdcs.mydomain.localsambapdc01.mydomain.local88 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _kerberos._tcp.dc._msdcs.mydomain.local.900IN SRV010088sambapdc01.mydomain.local.

CallingnsupdateforSRV_kerberos._tcp.defaultfirstsitename._sites.mydomain.localsambapdc01.mydomain.local88 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _kerberos._tcp.defaultfirstsitename._sites.mydomain.local.900INSRV010088sambapdc01.mydomain.local. CallingnsupdateforSRV_kerberos._tcp.defaultfirstsitename._sites.dc._msdcs.mydomain.localsambapdc01.mydomain.local88 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _kerberos._tcp.defaultfirstsitename._sites.dc._msdcs.mydomain.local. 900INSRV010088sambapdc01.mydomain.local. CallingnsupdateforSRV_kerberos._udp.mydomain.localsambapdc01.mydomain.local88 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _kerberos._udp.mydomain.local.900IN SRV 010088sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.mydomain.localsambapdc01.mydomain.local389 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.mydomain.local.900 IN SRV 0100389sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.dc._msdcs.mydomain.localsambapdc01.mydomain.local389 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.dc._msdcs.mydomain.local.900INSRV 0100389sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.gc._msdcs.mydomain.localsambapdc01.mydomain.local3268 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.gc._msdcs.mydomain.local.900INSRV 01003268sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.pdc._msdcs.mydomain.localsambapdc01.mydomain.local389 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.pdc._msdcs.mydomain.local.900INSRV0100389sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.defaultfirstsitename._sites.mydomain.localsambapdc01.mydomain.local389 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.defaultfirstsitename._sites.mydomain.local.900INSRV0100389sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.defaultfirstsitename._sites.dc._msdcs.mydomain.localsambapdc01.mydomain.local389 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.defaultfirstsitename._sites.dc._msdcs.mydomain.local.900 INSRV0100389sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.defaultfirstsitename._sites.gc._msdcs.mydomain.localsambapdc01.mydomain.local3268 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.defaultfirstsitename._sites.gc._msdcs.mydomain.local.900 INSRV01003268sambapdc01.mydomain.local. CallingnsupdateforSRV_ldap._tcp.9140f25a20c649a4ac2c1e1e10c73153.domains._msdcs.mydomain.localsambapdc01.mydomain.local389 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _ldap._tcp.9140f25a20c649a4ac2c1e1e10c73153.domains._msdcs.mydomain.local.900INSRV0100389sambapdc01.mydomain.local. CallingnsupdateforSRV_gc._tcp.mydomain.localsambapdc01.mydomain.local3268 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION:

_gc._tcp.mydomain.local.900

IN

SRV

01003268sambapdc01.mydomain.local.

CallingnsupdateforSRV_gc._tcp.defaultfirstsitename._sites.mydomain.localsambapdc01.mydomain.local3268 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: _gc._tcp.defaultfirstsitename._sites.mydomain.local. 900INSRV01003268sambapdc01.mydomain.local. CallingnsupdateforAmydomain.local10.0.2.15 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: mydomain.local. 900 IN A 10.0.2.15 CallingnsupdateforAsambapdc01.mydomain.local10.0.2.15 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: sambapdc01.mydomain.local.900 IN A 10.0.2.15 CallingnsupdateforAgc._msdcs.mydomain.local10.0.2.15 Outgoingupdatequery: ;;>>HEADER<<opcode:UPDATE,status:NOERROR,id:0 ;;flags:;ZONE:0,PREREQ:0,UPDATE:0,ADDITIONAL:0 ;;UPDATESECTION: gc._msdcs.mydomain.local.900 IN A 10.0.2.15

CREAR EL SCRIPT PARA EL DAEMON DE SAMBA4


[root@sambapdc01~]#nano/etc/rc.d/init.d/samba4
#!/bin/bash # #samba4Bringup/downsamba4service # #chkconfig:9010 #description:Activates/Deactivatesallsamba4interfacesconfiguredto\ #startatboottime. # ###BEGININITINFO #Provides: #ShouldStart: #ShortDescription:Bringup/downsamba4 #Description:Bringup/downsamba4 ###ENDINITINFO #Sourcefunctionlibrary. ./etc/init.d/functions if[f/etc/sysconfig/samba4];then ./etc/sysconfig/samba4 fi CWD=$(pwd) prog="samba4" start(){ #Attachirdadevice echon$"Starting$prog:" /usr/local/samba/sbin/samba sleep2 ifpsax|grepv"grep"|grepq/samba/sbin/samba;thensuccess$"samba4startup";elsefailure$"samba4startup";fi echo } stop(){ #Stopservice. echon$"Shuttingdown$prog:" killallsamba sleep2 ifpsax|grepv"grep"|grepq/samba/sbin/samba;thenfailure$"samba4shutdown";elsesuccess$"samba4shutdown";fi echo } status(){ /usr/local/samba/sbin/sambashowbuild } #Seehowwewerecalled. case"$1"in start) start ;;

stop) stop ;; status) statusirattach ;; restart|reload) stop start ;; *) echo$"Usage:$0{start|stop|restart|status}" exit1 esac exit0

Le damos los permisos necesarios


[root@sambapdc01~]#chmod755/etc/init.d/samba4

ACTIVAMOS LOS SERVICIOS PARA QUE INICIEN EN EL ARRANQUE DEL SISTEMA


[root@sambapdc01~]#chkconfigsamba4level345on [root@sambapdc01~]#chkconfigdhcpdlevel345on [root@sambapdc01~]#chkconfignamedlevel345on [root@sambapdc01~]#chkconfigntpdlevel345on

CONFIGURAR EL SERVIDOR PARA COMPARTIR CONEXIN A INTERNET. Esta parte es opcional, pero muy importante, sobre todo si luego queremos configurar un proxy como Squid para filtrar el contenido de navegacin en la red local y mantener un cache de los datos de navegacin de los usuarios.
[root@sambapdc01~]#iptablesF [root@sambapdc01~]#iptablesPINPUTACCEPT [root@sambapdc01~]#iptablesPFORWARDACCEPT [root@sambapdc01~]#iptablesPOUTPUTACCEPT [root@sambapdc01~]#iptablesAINPUTmstatestateRELATED,ESTABLISHEDjACCEPT [root@sambapdc01~]#iptablesAINPUTpicmpjACCEPT [root@sambapdc01~]#iptablesAINPUTilojACCEPT [root@sambapdc01~]#iptablesAINPUTieth0jACCEPT [root@sambapdc01~]#iptablesAINPUTieth1jACCEPT [root@sambapdc01~]#iptablesAINPUTjREJECTrejectwithicmphostprohibited [root@sambapdc01~]#iptablesAFORWARDmstatestateRELATED,ESTABLISHEDjACCEPT [root@sambapdc01~]#iptablesAFORWARDpicmpjACCEPT [root@sambapdc01~]#iptablesAFORWARDilojACCEPT [root@sambapdc01~]#iptablesAFORWARDieth0jACCEPT [root@sambapdc01~]#iptablesAFORWARDieth1jACCEPT [root@sambapdc01~]#iptablesAFORWARDjREJECTrejectwithicmphostprohibited [root@sambapdc01~]#iptablestnatAPOSTROUTINGoeth0jMASQUERADE [root@sambapdc01~]#serviceiptablessave iptables:Savingfirewallrulesto/etc/sysconfig/iptables: [OK] [root@sambapdc01~]#chkconfigiptableslevel345on [root@sambapdc01~]#serviceiptablesrestart iptables:Flushingfirewallrules: [OK] iptables:SettingchainstopolicyACCEPT:natfilter [OK] iptables:Unloadingmodules: [OK] iptables:Applyingfirewallrules: [OK] [root@sambapdc01~]#sedi's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g'/etc/sysctl.conf [root@sambapdc01~]#sysctlw &&servicenetworkrestart

COMPROBAR DESDE UN HOST DEL DOMINIO QUE EL SERVIDOR ESTA FUNCIONANDO


[root@rainbow~]#nmap192.168.5.1 StartingNmap6.25(http://nmap.org)at2013062408:57AST Nmapscanreportfor192.168.5.1 Hostisup(0.030slatency). Notshown:987closedports

PORTSTATESERVICE 22/tcpopenssh 53/tcpopendomain 88/tcpopenkerberossec 111/tcpopenrpcbind 135/tcpopenmsrpc 139/tcpopennetbiosssn 389/tcpopenldap 445/tcpopenmicrosoftds 464/tcpopenkpasswd5 636/tcpopenldapssl 1024/tcpopenkdm 3268/tcpopenglobalcatLDAP 3269/tcpopenglobalcatLDAPssl Nmapdone:1IPaddress(1hostup)scannedin0.46seconds

AUNQUE FALTAN ALGUNAS CONFIGURACIONES ADICIONALES PARA SU CORRECTO FUNCIONAMIENTO, YA NUESTRO CONTROLADOR DE DOMINIO ESTA LISTO PARA USARSE, POR LO QUE PODEMOS AGREGAR AL DOMINIO CLIENTES WINDOWS EN LA MISMA FORMA TRADICIONAL CON SERVIDORES WINDOWS. CONFIGURAR UNA CARPETA COMPARTIDA El proceso de provisin cre el archivo de configuracin de Samba4 ubicado en /usr/local/samba/etc/smb.conf el cual no tiene recursos compartidos configurados. As que agregaremos un recurso compartido a modo de prueba.
[root@sambapdc01~]#mkdir/root/Shared [root@sambapdc01~]#nano/usr/local/samba/etc/smb.conf [Shared] path=/root/Shared comment=Root'ssharedfolder readonly=yes

En las versiones anteriores de Samba4 es necesario reiniciar el servicio para que los compartidos se hagan visibles. AGREGAR IMPRESORAS COMPARTIDAS Podemos compartir las impresoras conectadas al servidor usando CUPS, y ya que Samba4 se comunica con CUPS va sockets, no es necesario hacer configuracin o dar permisos mas que escuchar la directiva del socket de CUPS.
[root@sambapdc01~]#mkdir/usr/local/samba/var/spool [root@sambapdc01~]#chmod1777/usr/local/samba/var/spool

Editamos el fichero de configuracin de Samba4 y agregamos lo siguiente.


[root@sambapdc01~]#nano/usr/local/samba/etc/smb.conf [printers] path=/usr/local/samba/var/spool comment=AllPrinters browseable=Yes readonly=No printable=Yes

Por conveniencia los clientes Windows pueden consultar el servidor que sirve las impresoras en busca de controladores. Para habilitar esta funcionalidad en Samba4 debemos crear el compartido especial print$.
[root@sambapdc01~]#mkdirp/usr/local/samba/var/print/{COLOR,IA64,W32ALPHA,W32MIPS,W32PPC,W32X86,WIN40,x64} [root@sambapdc01~]#nano/usr/local/samba/etc/smb.conf

[print$] path=/usr/local/samba/var/print comment=PointandPrintPrinterDrivers readonly=No

Nota: No es necesario reiniciar el daemon de Samba4 AGREGAR MAS USUARIOS AL ACTIVE DIRECTORY DE SAMBA4. Al contrario que en versiones anteriores, Samba4 no requiere un usuario local por cada usuario que creamos en Samba.
[root@sambapdc01~]#sambatooluseraddfraterneo NewPassword: RetypePassword: User'fraterneo'createdsuccessfully

Lo verificamos viendo su SID


[root@sambapdc01~]#wbinfonametosidfraterneo S15214036476082415312955630891779361005SID_USER(1)

CONFIGURANDO ROAMING PROFILES


[root@sambapdc01~]#mkdir/usr/local/samba/var/profiles

Editamos el fichero de configuracion de Samba4 y agregamos lo siguiente.


[root@sambapdc01~]#nano/usr/local/samba/etc/smb.conf [profiles] path=/usr/local/samba/var/profiles readonly=No

En Windows usando RSAT vamos a Active Directory Users and Computers, seleccionamos todos lo usuarios, clic al botn derecho del mouse y abrimos Properties. Luego en la pestaa Profile, colocamos la siguiente ruta tal como est.
\\sambapdc01.mydomain.local\profiles\%USERNAME%

Tambin hay que darle los permisos desde Windows a la carpeta profiles. Entramos como usuario administrator y aplicamos los permisos para que todos los usuarios puedan crear su profile en la forma tpica como se hace en un servidor Windows. PROBANDO SINCRONIZACION DEL TIEMPO. Desde un cliente Windows probamos que nuestro servidor est sincronizando el tiempo.
C:\>w32tm/resync/rediscover EnviandocomandoResyncalocalcomputer... Elcomandosehacompletadocorrectamente. Ms recursos, herramientas y fuentes: Samba4 Howto Samba4 InitScript Directorio Activo en Linux Configuration of NTP for Samba4 Windows Support Tools Windows Administration Tools Pack Group Policy Management Console Group Policy Central Cmo configurar un Controlador de Dominio y Directorio Activo GNU/Linux con Samba4 by Claudio Concepcin Certad is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.

You might also like