lunes, 19 de agosto de 2013

Guía Samba4 como Controlador de Dominio y Directorio Activo [Actualización]

Esta es la versión más reciente de esta guía para configurar Samba como un Controlador de Dominio y Directotrio Activo y, de hecho, la que se utilizó en el Bootcamp en FCLD Santiago el fin de semana pasado. Entre las mejoras con respecto a versiones anteriores de esta guía, tenemos a Bind 9.9.3 con soporte DLZ, NTP 4.2.6 y por supuesto Samba 4.1.0rc2.

Para los fines de esta guía se asume que ya tienes experiencia manejando servidor y clientes en un entorno Windows. Así como también 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 próximo Samba se convertirá en una alternativa fiable, económica y robusta, que de la mano con GNU/Linux, encontrará su nicho las PyMES, y posiblemente empresas más grandes, para que las mismas puedan montar su estructura informática con Controlador de Dominio, Directorio Activo y los demás servicios que se pueden configurar en Linux como Proxy, Servidor Web, Base de Datos, etc.


Es un placer para mí ver cómo ha llegado a esta etapa luego de varios años recorridos. Pueden ver la lista de cambios y mejoras en el siguiente enlace.

SOTWARE QUE UTILIZAREMOS
Centos 6.4 32bits virtualizado en VirtualBox
Samba 4.1.0rc2
Bind 9.9.3
NTP 4.2.6p5
DHCP
Kerberos
Librerías 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 demás por defecto.
eth0 como NAT para tomar conexión a Internet (10.0.2.0/24)
eth1 Bridged a la LAN del Dominio (192.168.5.0/24)

Al finalizar la instalación 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 ~]# sed -i 's/HOSTNAME=localhost.local/HOSTNAME=sambapdc01.mydomain.local/g' /etc/sysconfig/network 
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# iptables -F
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:  [  OK  ]
[root@localhost ~]# service iptables restart
iptables: Flushing firewall rules:                           [  OK  ] 
iptables: Setting chains to policy ACCEPT: filter            [  OK  ] 
iptables: Unloading modules:                                 [  OK  ] 
iptables: Applying firewall rules:                           [  OK  ]
[root@localhost ~]# hostname sambapdc01.mydomain.local
[root@localhost ~]# service network restart
Shutting down interface eth0:                [ OK ]
Shutting down interface eth1:                [ OK ]
Shutting down interface loopback interface:  [ OK ]
Bringing up loopback interface:              [ OK ]
Bringing up interface eth0:                  [ OK ]
Bringing up interface eth1:                  [ OK ]
[root@localhost ~]# logout
Al regresar, configuramos la Interfaz de red para actualizar y descargar paquetes. Esta interfaz está NAT en la configuración de la máquina virtual, pero editaremos el script ya que no nos interesa que el dhclient nos genere el fichero resolv.conf.
[root@sambapdc01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
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/network-scripts/ifcfg-eth1 
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 
nameserver 8.8.8.8 
nameserver 8.8.4.4

[root@sambapdc01 ~]# service network restart 
Shutting down interface eth0:                [ OK ]
Shutting down interface eth1:                [ OK ]
Shutting down interface loopback interface:  [ OK ]
Bringing up loopback interface:              [ OK ]
Bringing up interface eth0:                  [ OK ]
Bringing up interface eth1:                  [ OK ]

[root@sambapdc01 ~]# reboot
ACTUALIZAR EL SISTEMA: Instalar dependencias, librerías de desarrollo y compilación, y otros servicios.
[root@sambapdc01 ~]# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt 
[root@sambapdc01 ~]# rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm 
[root@sambapdc01 ~]# yum update -y 
[root@sambapdc01 ~]# yum install -y man mlocate bash-completion nmap nano wget screen
[root@sambapdc01 ~]# yum install -y dhcp python-dns make gcc rpm-build libtool autoconf openssl-devel libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig gtkhtml2 setroubleshoot-server setroubleshoot-plugins policycoreutils-python libsemanage-python setools-libs-python setools-libs krb5-server krb5-libs krb5-workstation popt-devel libxml2-devel libattr-devel key-utils-devel cyrus-sasl-devel libidn-devel libsepol-devel 
[root@sambapdc01 ~]# reboot 
DESCARGAR, INSTALAR BIND9 Compilaremos una versión reciente y le podremos soporte DLZ (Dinamyc Loadable Zones) como requiere Samba 4
[root@sambapdc01 ~]# mkdir /usr/src/bind9 
[root@sambapdc01 ~]# cd /usr/src/bind9 
[root@sambapdc01 bind9]# wget ftp://ftp.ciril.fr/pub/isc/bind9/9.9.3/bind-9.9.3.tar.gz 
[root@sambapdc01 bind9]# tar zxvf bind-9.9.3.tar.gz 
[root@sambapdc01 bind9]# cd bind-9.9.3/ 
[root@sambapdc01 bind-9.9.3]# ./configure --sysconfdir=/etc/named --localstatedir=/var/named --with-gssapi=/usr/include/gssapi --with-dlopen=yes
[root@sambapdc01 bind-9.9.3]# make && make install
[root@sambapdc01 bind-9.9.3]# cd
[root@sambapdc01 ~]# groupadd -g 25 named
[root@sambapdc01 ~]# useradd -g named -u 25 -d /var/named -M -s /sbin/nologin named
DESCARGAR, INSTALAR NTP (MUY IMPORTANTE PARA QUE LOS SERVICIOS FUNCIONEN CORRECTAMENTE) Si no hay sincronización de tiempo entre servidor y clientes, muchos servicios no estarán disponibles para éstos últimos. Necesitamos una versión de NTP igual o superior a la 4.2.6 y con soporte signd. Lamentablemente la versión actual de CentOS no la provee, por lo que descargaremos el código fuente para compilarlo.
[root@sambapdc01 ~]# mkdir /usr/src/ntp4/
[root@sambapdc01 ~]# cd /usr/src/ntp4/
[root@sambapdc01 ntp4]# wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz
[root@sambapdc01 ntp4]# cd ntp-4.2.6p5/
[root@sambapdc01 ntp-4.2.6p5]# ./configure --enable-ntp-signd
[root@sambapdc01 ntp-4.2.6p5]# make && make install
DESCARGAR, INSTALAR SAMBA4
[root@sambapdc01 ~]# mkdir /usr/src/samba4 
[root@sambapdc01 ~]# cd /usr/src/samba4 
[root@sambapdc01 samba4]# wget https://download.samba.org/pub/samba/rc/samba-4.1.0rc2.tar.gz
[root@sambapdc01 samba4]# tar zxvf samba-4.1.0rc2.tar.gz 
[root@sambapdc01 samba4]# cd samba-4.1.0rc2/ 
[root@sambapdc01 samba-4.1.0rc2]# ./configure.developer && make && make install 
[root@sambapdc01 samba-4.1.0rc2]# cd 
Agregar la ruta de Samba4 al PATH
[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 ~]# samba -V 
Version 4.1.0rc2
HACER LA PROVISIÓN DEL DOMINIO CON SAMBA4
[root@sambapdc01 ~]# samba-tool domain provision --realm=mydomain.local --domain=MYDOMAIN --adminpass 'solucion.123' --server-role=dc --dns-backend=BIND9_DLZ 
Looking up IPv4 addresses 
More than one IPv4 address found. Using 192.168.5.1 
Looking up IPv6 addresses 
No IPv6 address will be assigned 
Setting up share.ldb 
Setting up secrets.ldb 
Setting up the registry 
Setting up the privileges database 
Setting up idmap db 
Setting up SAM db 
Setting up sam.ldb partitions and settings 
Setting up sam.ldb rootDSE 
Pre-loading the Samba 4 and AD schema 
Adding DomainDN: DC=mydomain,DC=local 
Adding configuration container 
Setting up sam.ldb schema 
Setting up sam.ldb configuration data 
Setting up display specifiers 
Modifying display specifiers 
Adding users container 
Modifying users container 
Adding computers container 
Modifying computers container 
Setting up sam.ldb data 
Setting up well known security principals 
Setting up sam.ldb users and groups 
Setting up self join 
Adding DNS accounts 
Creating CN=MicrosoftDNS,CN=System,DC=mydomain,DC=local 
Creating DomainDnsZones and ForestDnsZones partitions 
Populating DomainDnsZones and ForestDnsZones partitions 
See /usr/local/samba/private/named.conf for an example configuration include file for BIND 
and /usr/local/samba/private/named.txt for further documentation required for secure DNS updates 
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:              sambapdc01 
NetBIOS Domain:        MYDOMAIN 
DNS Domain:            mydomain.local 
DOMAIN SID:            S-1-5-21-4230643479-790999145-160529251 
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. Crear el fichero /etc/named/named.conf Quedando de la siguiente manera:
[root@sambapdc01 ~]# nano /etc/named/named.conf 
options { 
 allow-query { localhost; 192.168.5.1; }; 
 allow-update { localhost; 192.168.5.1; }; 
 allow-transfer { localhost; 192.168.5.1; }; 
 allow-recursion { localhost; 192.168.5.1; }; 
      forwarders { 10.0.2.2; 8.8.8.8; }; 
 tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab"; 
}; 
include "/usr/local/samba/private/named.conf";
Editar el fichero named.conf de Samba4 para que use dlopen para Bind 9.9.0 en adelante.
[root@sambapdc01 ~]# nano /usr/local/samba/private/named.conf
dlz "AD DNS Zone" {
    # For BIND 9.8.0
    # database "dlopen /usr/local/samba/lib/bind9/dlz_bind9.so";

    # For BIND 9.9.0
    database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
};
Debemos generar el fichero rndc.key que corresponde a Bind, ya que al ser compilado y no de repositorios, no lo genera automáticamente.
[root@sambapdc01 ~]# rndc-confgen -a -r /dev/urandom
wrote key file "/etc/named/rndc.key"
[root@sambapdc01 ~]# chmod 766 /etc/named/rndc.key
Editar el fichero resolv.conf
[root@sambapdc01 ~]# nano /etc/resolv.conf 
domain mydomain.local
nameserver 127.0.0.1
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 ~]# samba -i -M single & 
samba version 4.1.0rc2 started. 
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using 'single' process model
Attempting to autogenerate TLS self-signed keys for https for hostname 'SAMBAPDC01.mydomain.local'
TLS self-signed keys generated OK

[root@sambapdc01 ~]# killall samba
Iniciamos Bind
[root@sambapdc01 ~]# /usr/local/sbin/named -u named -d 3 &
CONFIGURAR KERBEROS Editamos el fichero de configuración 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 
CONFIGURAR DHCP
[root@sambapdc01 ~]# vi /etc/dhcp/dhcpd.conf 
option domain-name "mydomain.local"; 
option domain-name-servers  192.168.5.1, 8.8.8.8; 
option netbios-name-servers 192.168.5.1; 
option ntp-servers 192.168.5.1; 
authoritative; 
subnet 192.168.5.0 netmask 255.255.255.0 { 
 range 192.168.5.10 192.168.5.20; 
 option broadcast-address 192.168.5.255; 
 option routers 192.168.5.1; 
} 
CONFIGURAR NTP Creamos el fichero ntp.conf para el servicio NTP, con el siguiente contenido
[root@sambapdc01 ~]# nano /etc/ntp.conf 
server 127.127.1.1
fudge  127.127.1.1 stratum 12
server 0.pool.ntp.org  iburst prefer
server 1.pool.ntp.org  iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
CONFIGURAR SELINUX A continuación aplicamos los permisos necesarios para que los servicios tengan acceso a los ficheros de configuración y Selinux no nos de problemas si lo habilitamos luego y poder hacer las pruebas de lugar. Aplicar permisos y crear políticas de Selinux (por si lo habilitamos luego)
[root@sambapdc01 ~]# chgrp root /usr/local/samba/var/lib/ntp_signd/ 
[root@sambapdc01 ~]# chmod 750 /usr/local/samba/var/lib/ntp_signd/ 
[root@sambapdc01 ~]# chown named:named /usr/local/samba/private/dns.keytab 
[root@sambapdc01 ~]# chown named:named /usr/local/samba/private/named.conf 
[root@sambapdc01 ~]# chmod 644 /usr/local/samba/private/dns.keytab 
[root@sambapdc01 ~]# chmod 644 /usr/local/samba/private/named.conf 
[root@sambapdc01 ~]# chown named:named /usr/local/samba/private/dns 
[root@sambapdc01 ~]# chmod g+r /usr/local/samba/private/dns.keytab 
[root@sambapdc01 ~]# chmod 775 /usr/local/samba/private/dns 
[root@sambapdc01 ~]# chcon -t named_conf_t /usr/local/samba/private/dns.keytab 
[root@sambapdc01 ~]# chcon -t named_conf_t /usr/local/samba/private/named.conf 
[root@sambapdc01 ~]# chcon -t named_var_run_t /usr/local/samba/private/dns 
[root@sambapdc01 ~]# semanage fcontext -a -t named_conf_t /usr/local/samba/private/dns.keytab 
[root@sambapdc01 ~]# semanage fcontext -a -t named_conf_t /usr/local/samba/private/named.conf 
[root@sambapdc01 ~]# semanage fcontext -a -t named_conf_t /usr/local/samba/private/named.conf.update 
[root@sambapdc01 ~]# semanage fcontext -a -t named_var_run_t /usr/local/samba/private/dns 
[root@sambapdc01 ~]# semanage fcontext -a -t ntpd_t /usr/local/samba/var/lib/ntp_signd 
[root@sambapdc01 ~]# chcon -u system_u -t ntpd_t /usr/local/samba/var/lib/ntp_signd 
[root@sambapdc01 ~]# chcon -u system_u -t ntpd_t /usr/local/samba/var/lib/ 
[root@sambapdc01 ~]# chcon -t ntpd_t /usr/local/samba/var/lib/ntp_signd/socket 
Es posible que en los comandos chcon anteriores obtengamos una salida de error como esta: chcon: can't apply partial context to unlabeled file `/usr/local/samba/var/lib/ntp_signd' Por lo que crearemos una política para que nos permita el acceso.
[root@sambapdc01 ~]# nano samba4.te 
module samba4 1.0; 
require { 
   type ntpd_t; 
   type usr_t; 
   type initrc_t; 
   class sock_file write; 
   class unix_stream_socket connectto; 
} 
#============= ntpd_t ============== 
allow ntpd_t usr_t:sock_file write; 
  
#============= ntpd_t ============== 
allow ntpd_t initrc_t:unix_stream_socket connectto; 
La revisamos y cargamos.
[root@sambapdc01 ~]# checkmodule -M -m -o samba4.mod samba4.te 
checkmodule: loading policy configuration from samba4.te 
checkmodule: policy configuration loaded 
checkmodule: writing binary representation (version 10) to samba4.mod 
[root@sambapdc01 ~]# semodule_package -o samba4.pp -m samba4.mod 
[root@sambapdc01 ~]# semodule -i samba4.pp 
[root@sambapdc01 ~]# reboot 
AL REGRESAR PROBAMOS TODO PARA VERIFICAR QUE ESTAMOS BIEN
[root@sambapdc01 ~]# /usr/local/sbin/named -u named -d 3 &
[root@sambapdc01 ~]# /usr/local/bin/ntpd &
[root@sambapdc01 ~]# service dhcpd start 
Starting dhcpd:                                            [  OK  ]
[root@sambapdc01 ~]# samba -i -M single & 
[1] 1287 
samba version 4.1.0rc2 started. 
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using 'single' process model
Probando Kerberos
[root@sambapdc01 ~]# kinit administrator@MYDOMAIN.LOCAL 
Password for administrator@MYDOMAIN.LOCAL: 
Warning: Your password will expire in 41 days on Thu Sep  5 16:42:14 2013

[root@sambapdc01 ~]# klist 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@MYDOMAIN.LOCAL

Valid starting     Expires            Service principal
07/25/13 17:01:47  07/26/13 03:01:47  krbtgt/MYDOMAIN.LOCAL@MYDOMAIN.LOCAL
        renew until 07/26/13 17:01:41
Probando Samba4
[root@sambapdc01 ~]# smbclient -L localhost -U% 
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.0rc2]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba 4.1.0rc2)
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.0rc2]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

[root@sambapdc01 ~]# smbclient //localhost/netlogon -UAdministrator%'solucion.123' -c 'ls' 
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.0rc2]
  .                                   D        0  Thu Jul 25 16:41:45 2013
  ..                                  D        0  Thu Jul 25 16:42:22 2013

                52475 blocks of size 131072. 33551 blocks available
Podemos visualizar los usuarios y grupos:
[root@sambapdc0a1 ~]# wbinfo -u 
Administrator 
Guest 
krbtgt 
dns-sambapdc01 

[root@sambapdc01 ~]# wbinfo -g 
Enterprise Read-Only Domain Controllers 
Domain Admins 
Domain Users 
Domain Guests 
Domain Computers 
Domain Controllers 
Schema Admins 
Enterprise Admins 
Group Policy Creator Owners 
Read-Only Domain Controllers 
DnsUpdateProxy 

[root@sambapdc01 ~]# samba-tool dns query 127.0.0.1 mydomain.local @ ALL 
Password for [administrator@MYDOMAIN.LOCAL]:
  Name=, Records=3, Children=0
    SOA: serial=1, refresh=900, retry=600, expire=86400, minttl=0, ns=sambapdc01.mydomain.local., email=hostmaster.mydomain.local. (flags=600000f0, serial=1, ttl=3600)
    NS: sambapdc01.mydomain.local. (flags=600000f0, serial=1, ttl=900)
    A: 192.168.5.1 (flags=600000f0, serial=1, ttl=900)
  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=1, Children=0
    A: 192.168.5.1 (flags=f0, serial=1, ttl=900)
Probando DNS (BIND)
[root@sambapdc01 ~]# host -t SRV _ldap._tcp.mydomain.local. 
_ldap._tcp.mydomain.local has SRV record 0 100 389 sambapdc01.mydomain.local. 

[root@sambapdc01 ~]# host -t SRV _kerberos._udp.mydomain.local. 
_kerberos._udp.mydomain.local has SRV record 0 100 88 sambapdc01.mydomain.local. 

[root@sambapdc01 ~]# host -t A sambapdc01.mydomain.local. 
sambapdc01.mydomain.local has address 10.0.2.15 
sambapdc01.mydomain.local has address 192.168.5.1 
Probando el DNS Dinámico Editar el fichero smb.conf y agregar la siguiente línea en la sección [global]
[root@sambapdc01 ~]# nano /usr/local/samba/etc/smb.conf
nsupdate command = /usr/local/bin/nsupdate

[root@sambapdc01 ~]# samba_dnsupdate --verbose --all-names 
IPs: ['192.168.5.1', '10.0.2.15'] 
Calling nsupdate for A mydomain.local 192.168.5.1 
Outgoing update query: 
...
...
...
CREAR EL SCRIPT PARA EL DAEMON DE SAMBA4
[root@sambapdc01 ~]# nano /etc/rc.d/init.d/samba4 
 #! /bin/bash 
 # 
 # samba4       Bring up/down samba4 service 
 # 
 # chkconfig: - 90 10 
 # description: Activates/Deactivates all samba4 interfaces configured to \ 
 #              start at boot time. 
 # 
 ### BEGIN INIT INFO 
 # Provides: 
 # Should-Start: 
 # Short-Description: Bring up/down samba4 
 # Description: Bring up/down samba4 
 ### END INIT INFO 
 # Source function library. 
 . /etc/init.d/functions 
 
 if [ -f /etc/sysconfig/samba4 ]; then 
  . /etc/sysconfig/samba4 
 fi 
 
 CWD=$(pwd) 
 prog="samba4" 
 
 start() { 
       # Attach irda device 
       echo -n $"Starting $prog: " 
  /usr/local/samba/sbin/samba 
  sleep 4 
  if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi 
       echo 
 } 
 stop() { 
       # Stop service. 
       echo -n $"Shutting down $prog: " 
  killall samba 
  sleep 6 
  if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi 
       echo 
 } 
 status() { 
  /usr/local/samba/sbin/samba --show-build 
 } 
 
 # See how we were called. 
 case "$1" in 
 start) 
  start 
       ;; 
 stop) 
  stop 
       ;; 
 status) 
  status irattach 
  ;; 
 restart|reload) 
  stop 
  start 
  ;; 
 *) 
       echo $"Usage: $0 {start|stop|restart|status}" 
       exit 1 
 esac 
 
 exit 0 
CREAR EL SCRIPT PARA EL DAEMON DE BIND9
[root@sambapdc01 ~]# nano /etc/rc.d/init.d/named9 
 #! /bin/bash 
 # 
 # bind9       Bring up/down bind9 service 
 # 
 # chkconfig: - 90 10 
 # description: Activates/Deactivates all bind9 interfaces configured to \ 
 #              start at boot time. 
 # 
 ### BEGIN INIT INFO 
 # Provides: 
 # Should-Start: 
 # Short-Description: Bring up/down bind9 
 # Description: Bring up/down bind9 
 ### END INIT INFO 
 # Source function library. 
 . /etc/init.d/functions 
 
 if [ -f /etc/sysconfig/bind9 ]; then 
  . /etc/sysconfig/bind9 
 fi 
 
 CWD=$(pwd) 
 prog="bind9" 
 
 start() { 
       # Attach irda device 
       echo -n $"Starting $prog: " 
  /usr/local/sbin/named -u named
  sleep 6 
  if ps ax | grep -v "grep" | grep -q /sbin/named ; then success $"bind9 startup"; else failure $"bind9 startup"; fi 
       echo 
 } 
 stop() { 
       # Stop service. 
       echo -n $"Shutting down $prog: " 
  killall named 
  sleep 6 
  if ps ax | grep -v "grep" | grep -q /sbin/named ; then failure $"bind9 shutdown"; else success $"bind9 shutdown"; fi 
       echo 
 } 
 status() { 
  /usr/local/sbin/named -V 
 } 
 
 # See how we were called. 
 case "$1" in 
 start) 
  start 
       ;; 
 stop) 
  stop 
       ;; 
 status) 
  status irattach 
  ;; 
 restart|reload) 
  stop 
  start 
  ;; 
 *) 
       echo $"Usage: $0 {start|stop|restart|status}" 
       exit 1 
 esac 
 
 exit 0
CREAR EL SCRIPT PARA EL DAEMON DE NTP4
[root@sambapdc01 ~]# nano /etc/rc.d/init.d/ntpd4 
 #! /bin/bash 
 # 
 # ntp4       Bring up/down ntp4 service 
 # 
 # chkconfig: - 90 10 
 # description: Activates/Deactivates all ntp4 interfaces configured to \ 
 #              start at boot time. 
 # 
 ### BEGIN INIT INFO 
 # Provides: 
 # Should-Start: 
 # Short-Description: Bring up/down ntp4 
 # Description: Bring up/down ntp4 
 ### END INIT INFO 
 # Source function library. 
 . /etc/init.d/functions 
 
 if [ -f /etc/sysconfig/ntp4 ]; then 
  . /etc/sysconfig/ntp4 
 fi 
 
 CWD=$(pwd) 
 prog="ntp4" 
 
 start() { 
       # Attach irda device 
       echo -n $"Starting $prog: " 
  /usr/local/bin/ntpd
  sleep 2 
  if ps ax | grep -v "grep" | grep -q /bin/ntpd ; then success $"ntp4 startup"; else failure $"ntp4 startup"; fi 
       echo 
 } 
 stop() { 
       # Stop service. 
       echo -n $"Shutting down $prog: " 
  killall ntpd 
  sleep 2
  if ps ax | grep -v "grep" | grep -q /bin/ntpd ; then failure $"ntp4 shutdown"; else success $"ntp4 shutdown"; fi 
       echo 
 } 
 status() { 
  /usr/local/bin/ntpd --help 
 } 
 
 # See how we were called. 
 case "$1" in 
 start) 
  start 
       ;; 
 stop) 
  stop 
       ;; 
 status) 
  status irattach 
  ;; 
 restart|reload) 
  stop 
  start 
  ;; 
 *) 
       echo $"Usage: $0 {start|stop|restart|status}" 
       exit 1 
 esac 
 
 exit 0
Les damos los permisos necesarios
[root@sambapdc01 ~]# chmod 755 /etc/init.d/samba4 
[root@sambapdc01 ~]# chmod 755 /etc/init.d/named9
[root@sambapdc01 ~]# chmod 755 /etc/init.d/ntpd4
ACTIVAMOS LOS SERVICIOS PARA QUE INICIEN EN EL ARRANQUE DEL SISTEMA
[root@sambapdc01 ~]# chkconfig samba4 --level 345 on 
[root@sambapdc01 ~]# chkconfig dhcpd --level 345 on 
[root@sambapdc01 ~]# chkconfig named9 --level 345 on 
[root@sambapdc01 ~]# chkconfig ntpd4 --level 345 on 
CONFIGURAR EL SERVIDOR PARA COMPARTIR CONEXIÓN A INTERNET. Esta parte es opcional, pero muy importante, sobre todo si luego queremos configurar un proxy como Squid para filtrar el contenido de navegación en la red local y mantener un cache de los datos de navegación de los usuarios.
[root@sambapdc01 ~]# iptables -F 
[root@sambapdc01 ~]# iptables -P INPUT ACCEPT 
[root@sambapdc01 ~]# iptables -P FORWARD ACCEPT 
[root@sambapdc01 ~]# iptables -P OUTPUT ACCEPT 
[root@sambapdc01 ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
[root@sambapdc01 ~]# iptables -A INPUT -p icmp -j ACCEPT 
[root@sambapdc01 ~]# iptables -A INPUT -i lo -j ACCEPT 
[root@sambapdc01 ~]# iptables -A INPUT -i eth0 -j ACCEPT 
[root@sambapdc01 ~]# iptables -A INPUT -i eth1 -j ACCEPT 
[root@sambapdc01 ~]# iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited 
[root@sambapdc01 ~]# iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
[root@sambapdc01 ~]# iptables -A FORWARD -p icmp -j ACCEPT 
[root@sambapdc01 ~]# iptables -A FORWARD -i lo -j ACCEPT 
[root@sambapdc01 ~]# iptables -A FORWARD -i eth0 -j ACCEPT 
[root@sambapdc01 ~]# iptables -A FORWARD -i eth1 -j ACCEPT 
[root@sambapdc01 ~]# iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
[root@sambapdc01 ~]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
[root@sambapdc01 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:   [  OK  ] 
[root@sambapdc01 ~]# chkconfig iptables --level 345 on
[root@sambapdc01 ~]# service iptables restart 
iptables: Flushing firewall rules:                            [  OK  ] 
iptables: Setting chains to policy ACCEPT: nat filter         [  OK  ] 
iptables: Unloading modules:                                  [  OK  ]
iptables: Applying firewall rules:                            [  OK  ]
[root@sambapdc01 ~]# sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf 
[root@sambapdc01 ~]# sysctl -w && service network restart
COMPROBAR DESDE UN HOST DEL DOMINIO QUE EL SERVIDOR ESTA FUNCIONANDO
[root@rainbow ~]# nmap 192.168.5.1 

Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-24 08:57 AST 
Nmap scan report for 192.168.5.1 
Host is up (0.030s latency). 
Not shown: 987 closed ports 
PORT     STATE SERVICE 
22/tcp   open  ssh 
53/tcp   open  domain 
88/tcp   open  kerberos-sec 
111/tcp  open  rpcbind 
135/tcp  open  msrpc 
139/tcp  open  netbios-ssn 
389/tcp  open  ldap 
445/tcp  open  microsoft-ds 
464/tcp  open  kpasswd5 
636/tcp  open  ldapssl 
1024/tcp open  kdm 
3268/tcp open  globalcatLDAP 
3269/tcp open  globalcatLDAPssl 

Nmap done: 1 IP address (1 host up) scanned in 0.46 seconds
VISUALIZAR LOS ROLES DEL CONTROLADOR DE DOMINIO SAMBA4. Estos son:

  1. SchemaMasterRole: Es el único controlador de dominio encargado de las actualizaciones del Esquema del Active Directory 
  2. DomainNamingMasterRole: Es el controlador de dominio responsable de realizar los cambios al espacio de nombres del directorio de todo el bosque 
  3. RidAllocationMasterRole: Es el único responsable de procesar los requerimientos de identificadores relativos de todos los controladores de dominio dentro de un dominio dado. También es el responsable de quitar un objeto de su dominio y colocarlo en otro dominio durante la reubicación del objeto. 
  4. PdcEmulationMasterRole: Es necesario para actualizar la hora en la empresa. Windows 2000/XP/2003/Vista incluyen el servicio W32time que es requerido por el protocolo de autenticación Kerberos.
  5. InfrastructureMasterRole: Cuando un objeto en un dominio hace referencia a otro objeto en otro dominio, este lo hace mediante el GUID, el SID y el DN del objeto que esta siendo referenciado. El Infrastructure Master es el controlador de dominio responsable de actualizar el SID y el Distinguished Name de un objeto en una referencia de objeto entre dominios.

[root@sambapdc01 ~]# samba-tool fsmo show
InfrastructureMasterRole owner: CN=NTDS Settings,CN=SAMBAPDC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mydomain,DC=local
RidAllocationMasterRole owner: CN=NTDS Settings,CN=SAMBAPDC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mydomain,DC=local
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=SAMBAPDC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mydomain,DC=local
DomainNamingMasterRole owner: CN=NTDS Settings,CN=SAMBAPDC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mydomain,DC=local
SchemaMasterRole owner: CN=NTDS Settings,CN=SAMBAPDC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=mydomain,DC=local
AUNQUE FALTAN LAS CONFIGURACIONES SIGUIENTES 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 provisión creó el archivo de configuración 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's shared folder 
      read only = 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 vía sockets, no es necesario hacer configuración o dar permisos mas que escuchar la directiva del socket de CUPS.
[root@sambapdc01 ~]# mkdir /usr/local/samba/var/spool 
[root@sambapdc01 ~]# chmod 1777 /usr/local/samba/var/spool 
Editamos el fichero de configuración de Samba4 y agregamos lo siguiente.
[root@sambapdc01 ~]# nano /usr/local/samba/etc/smb.conf 
[printers] 
    path = /usr/local/samba/var/spool 
    comment = All Printers 
    browseable = Yes 
    read only = 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 ~]# mkdir -p /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 = Point and Print Printer Drivers 
    read only = 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 ~]# samba-tool user add fraterneo 
New Password: 
Retype Password: 
User 'fraterneo' created successfully 
Lo verificamos viendo su SID
[root@sambapdc01 ~]# wbinfo --name-to-sid fraterneo 
S-1-5-21-4036476082-4153129556-3089177936-1005 SID_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 
      read only = No 
En Windows usando RSAT vamos a Active Directory Users and Computers, seleccionamos todos lo usuarios, clic al botón derecho del mouse y abrimos Properties. Luego en la pestaña Profile, colocamos la siguiente ruta tal como está.
\\sambapdc01.mydomain.local\profiles\%USERNAME% 
También hay que darle los permisos desde Windows a la carpeta profiles. Entramos como usuario administrator en el cliente Windows y abrimos el servidor CentOS (sambapdc01) desde Inicio > Ejecutar > \\sambapdc01, luego vamos a Propiedades de la carpeta profiles y en la pestaña Seguridad aplicamos los permisos para que todos los usuarios puedan crear su profile en la forma típica 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 
Enviando comando Resync a local computer... 
El comando se ha completado correctamente.

50 comentarios:

  1. Estimados, quisiera compartir con ustedes mi desilusión, pues tras seguir al pie de la letra la presente guía, me encontré con que desde la mitad de ella en adelante, el sistema no responde de la manera en que la guía presume.
    Por ejemplo: en la línea en que se pretende iniciar Samba por primera vez :
    # samba -i -M single &
    El sistema devuelve : "../source4/dsdb/dns/dns_update.c:294: Failded DNS update -NT_STATUS_IO_TIMEOUT"

    Tras el anterior traspié, intenté seguir adelante con la guía, pero no avancé mucho más, ya que ni siquiera funcionó el paso de asignar los permisos para configurar SELinux:
    Dónde se aplicó el comando :
    chcon -t named_conf_t /usr/local/samba/private/dns.keytab
    El sistema devuelve : "chcon: can't apply partial context to unlabeled file "/usr/local/samba/private/dns.keytab"

    y así sucesivamente.
    Es lamentable, pues tenía fé en esta guía, se veía detallada y completa, pero el resultado fue el mismo que con otras guías en otras distros. Ninguna funciona ni aún siguiendo los pasos al pie de la letra.
    Perdí 1 semana probando con Ubuntu, Debian, CentOS y no conseguí llegar a buen puerto con ninguna.

    Por ahora creo que no me queda otra más que seguir con Windows y Active Directory, que por muy mala fama que tenga entre los pingüinos, al menos las guías de Microsoft son a prueba de novatos, como yo.
    Gracias por leerme

    ResponderEliminar
    Respuestas
    1. Saludos.

      Esos errores son normales, el primero porque el DNS no ha sido iniciado y el segundo se advierte en la misma guía que sucederá.

      Esta guía ha sido depurada durante más de un año y exitosa en sí misma, se ha usado en cursos y toda una comunidad lo confirma.

      Pero si usted ya se rindió, no hay nada que hacer.

      Eliminar
  2. Claudio, agradezco el ánimo de compartir tus conocimientos y el darte el tiempo para contestar mi posteo anterior. Tal vez tenía tono de reclamo, pero créeme que no lo postee con ese ánimo, sino más bien buscando un desahogo tras tanto intento fallido por levantar un controlador de dominio AD con Linux (pasé 6 días enteros, y algunas noches también, siguiendo distintas guías). Soy menos que novato en Linux, y la verdad es que el sentimiento de frustración es enorme, ya que veo que no soy capaz de llevar a buen puerto este proyecto ni aún siguiendo las recetas de otros que ya lo han conseguido, siguiendo los mismos pasos. Es realmente frustrante la situación.

    Respecto a tu respuesta anterior, dices que el primer error que mencioné, es normal pues no se ha iniciado el DNS. ¿Me faltó hacer algo para iniciar el DNS? creo haber seguido todos los pasos.

    Te comento, que además de esos errores, se produjeron otros, como por ejemplo, en el paso para probar kerberos, al ejecutar el comando "kinit administrator@MYDOMAIN.LOCAL" el sistema devuelve "kinit: Cannot resolve servers for KDC in realm "MYDOMAIN.LOCAL" while getting initial credentials"

    Y este último error fue mi piedra de tope en todas las guías que seguí. Nunca logré iniciar kerberos en forma exitosa.

    Una vez más, agradezco la gentileza y el tiempo que te das para manetener este sitio, y para responder los posteos.

    Te saluda un amigo desde Chile.

    ResponderEliminar
    Respuestas
    1. Esos errores son por el DNS. Debes ver /var/log/messages para estar pendiente de la causa por la cual Bind no inicia.

      Por el tiempo no se preocupe, pues una semana no es nada. Nunca me rendí durante los 8 meses que me tomó llevar esta guía hasta este punto.

      Saludos.

      Eliminar
  3. Estimado Claudio, buenas tardes, te agradezco por compartir tus conocimientos, me parece un excelente trabajo de tu parte.

    Mi pregunta es la siguiente, esta guía puede ser útil con la distro de Centos 64bist.

    Saludos.

    ResponderEliminar
  4. Estimado claudio te saludo nuevamente, sucede que estaba configurando AD en la distro Centos x86_64 y al lanzar el servicio de BIND9 mediante las líneas.

    [root@serverad ~]# /usr/local/sbin/named -u named -d 3 &

    Me aparece lo siguiente, quisiera saber si esto es normal.

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    [1] 1220

    [root@serverad ~]# named: user 'named' unknown

    [1]+ Salida 1 /usr/local/sbin/named -u named -d 3

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    Saludos.

    ResponderEliminar
    Respuestas
    1. Se saltó la creación del usuario y grupo named. Debe crearlos para poder iniciar named correctamente.

      Eliminar
  5. Hola estimado claudio, buenos días,

    estuve siguiendo tu guía desde el primer día de la publicación y he tratado de configura el controlador de dominio paso por paso, pero en los tres intentos no ejecuta la línea.

    kinit administrator@MYDOMAIN.LOCAL

    y tambien aparece el siguiente mensaje.
    "../source4/dsdb/dns/dns_update.c:294: Failded DNS update -NT_STATUS_IO_TIMEOUT"

    Por favor revisa el código quizás has obviado un paso en el tutorial.

    Mis más cordiales saludos.

    ResponderEliminar
    Respuestas
    1. Hola caparicio.

      Es evidente que no has iniciado el daemon de Bind. Verifica que esté arriba. Ese es el principal inconveniente por el cual la prueba con kinit no es exitosa.

      Saludos.

      Eliminar
  6. Buenas tardes Claudio, antes que nada agradecerte por este gran aporte y aprovecho para plantear mi problema, sabes de que instale todo segun la guia sin ningun problema e incluso realice las pruebas tambien sin ningun problema. Solo que al meter un cliente Windows XP al dominio me muestra el siguiente Error: No hay mas extremos disponibles desde el generador de extremos.

    Anteriormente habia configurado un dominio con samba y openldap y si pude agregar este mismo cliente de Windows XP sin ningun problema.

    Tendras alguna pista o recomendacion para mi problema?

    Saludos

    ResponderEliminar
    Respuestas
    1. Hola Antonio. Nunca había visto ese error, evíame carpturas de pantalla para verlo. Prueba con otras versiones de Windows a ver que tal.

      Eliminar
    2. A donde te puedo enviar las imagenes?

      Eliminar
  7. Estas son mis configuraciones y pruebas

    [root@servertest ~]# cat /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=servertest.jmasjrz.local
    GATEWAY=172.16.11.170
    [root@servertest ~]#

    [root@servertest ~]# cat /etc/selinux/config
    SELINUX=disabled
    SELINUXTYPE=targeted

    [root@servertest ~]# nmap 172.16.11.170

    Starting Nmap 5.51 ( http://nmap.org ) at 2013-10-10 08:21 MDT
    Nmap scan report for servertest.jmasjrz.local (172.16.11.170)
    Host is up (0.0000050s latency).
    Not shown: 987 closed ports
    PORT STATE SERVICE
    22/tcp open ssh
    53/tcp open domain
    88/tcp open kerberos-sec
    111/tcp open rpcbind
    135/tcp open msrpc
    139/tcp open netbios-ssn
    389/tcp open ldap
    445/tcp open microsoft-ds
    464/tcp open kpasswd5
    636/tcp open ldapssl
    1024/tcp open kdm
    3268/tcp open globalcatLDAP
    3269/tcp open globalcatLDAPssl

    Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

    [root@servertest ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE=eth1
    TYPE=Ethernet
    UUID=5f5aafdb-cb46-4c60-9a92-4dbcee9a9434
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=static
    HWADDR=F8:D1:11:04:1A:BF
    IPADDR=172.16.11.170
    PREFIX=24
    GATEWAY=172.16.11.1
    DNS1=172.16.11.170
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=yes
    IPV6INIT=no
    NAME="System eth1"
    PEERDNS=no
    USERCTL=no
    NETMASK=255.255.255.0


    [root@servertest ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    domain jmasjrz.local
    nameserver 172.16.11.170


    [root@servertest ~]# cat .bash_profile
    # .bash_profile

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi

    PATH=$PATH:$HOME/bin:/usr/local/samba/bin:/usr/local/samba/sbin
    export PATH


    [root@servertest ~]# samba -V
    Version 4.1.0rc4


    [root@servertest ~]# vim /etc/named.conf
    options {
    allow-query { localhost; 172.16.11.170; };
    allow-update { localhost; 172.16.11.170; };
    allow-transfer { localhost; 172.16.11.170; };
    allow-recursion { localhost; 172.16.11.170; };
    forwarders { 200.23.242.185; 200.23.242.177; };
    tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";
    };
    include "/usr/local/samba/private/named.conf";


    [root@servertest ~]# cat /usr/local/samba/private/named.conf

    dlz "AD DNS Zone" {
    # For BIND 9.8.0
    #database "dlopen /usr/local/samba/lib/bind9/dlz_bind9.so";

    # For BIND 9.9.0
    database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
    };

    ResponderEliminar
  8. [root@servertest ~]# cat /etc/krb5.conf
    [libdefaults]
    default_realm = JMASJRZ.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true

    [root@servertest ~]# service named9 status
    BIND 9.9.4 (Extended Support Version) built with '--sysconfdir=/etc/named' '--localstatedir=/var/named' '--with-gssapi=/usr/include/gssapi' '--with-dlopen=yes'
    using OpenSSL version: OpenSSL 1.0.0 29 Mar 2010
    using libxml2 version: 2.7.6

    [root@servertest ~]# service samba4 status
    Samba version: 4.1.0rc4
    Build environment:
    Build host: Linux servertest.jmasjrz.local 2.6.32-358.18.1.el6.x86_64 #1 SMP Wed Aug 28 17:19:38 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    Paths:
    BINDIR: /usr/local/samba/bin
    SBINDIR: /usr/local/samba/sbin
    CONFIGFILE: /usr/local/samba/etc/smb.conf
    NCALRPCDIR: /usr/local/samba/var/run/ncalrpc
    LOGFILEBASE: /usr/local/samba/var
    LMHOSTSFILE: /usr/local/samba/etc/lmhosts
    DATADIR: /usr/local/samba/share
    MODULESDIR: /usr/local/samba/lib
    LOCKDIR: /usr/local/samba/var/lock
    STATEDIR: /usr/local/samba/var/locks
    CACHEDIR: /usr/local/samba/var/cache
    PIDDIR: /usr/local/samba/var/run
    PRIVATE_DIR: /usr/local/samba/private
    CODEPAGEDIR: /usr/local/samba/share/codepages
    SETUPDIR: /usr/local/samba/share/setup
    WINBINDD_SOCKET_DIR: /usr/local/samba/var/run/winbindd
    WINBINDD_PRIVILEGED_SOCKET_DIR: /usr/local/samba/var/lib/winbindd_privileged
    NTP_SIGND_SOCKET_DIR: /usr/local/samba/var/lib/ntp_signd

    ResponderEliminar
  9. [root@servertest ~]# ps -fe|grep ntpd
    root 2261 1 0 Oct09 ? 00:00:01 /usr/local/bin/ntpd
    root 6923 6773 0 08:30 pts/0 00:00:00 grep ntpd

    [root@servertest ~]# ps -fe|grep samba
    root 2272 1 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2274 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2275 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2276 2274 0 Oct09 ? 00:00:01 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground
    root 2277 2272 0 Oct09 ? 00:00:05 /usr/local/samba/sbin/samba
    root 2278 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2279 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2280 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2281 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2282 2272 0 Oct09 ? 00:00:36 /usr/local/samba/sbin/samba
    root 2283 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2284 2272 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/samba
    root 2285 2272 0 Oct09 ? 00:00:11 /usr/local/samba/sbin/samba
    root 2286 2272 0 Oct09 ? 00:00:01 /usr/local/samba/sbin/samba
    root 2289 2276 0 Oct09 ? 00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground
    root 6925 6773 0 08:31 pts/0 00:00:00 grep samba

    [root@servertest ~]# ps -fe|grep named
    named 2250 1 0 Oct09 ? 00:00:11 /usr/local/sbin/named -u named
    root 6928 6773 0 08:31 pts/0 00:00:00 grep named
    [root@servertest ~]#


    [root@servertest ~]# cat /etc/ntp.conf
    server 127.127.1.1
    fudge 127.127.1.1 stratum 12
    server 0.pool.ntp.org iburst prefer
    server 1.pool.ntp.org iburst prefer
    driftfile /var/lib/ntp/ntp.drift
    logfile /var/log/ntp
    ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
    restrict default mssntp
    restrict 127.0.0.1
    restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
    restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
    [root@servertest ~]#


    [root@servertest ~]# service ntpd4 restart
    Shutting down ntp4: [ OK ]
    Starting ntp4: [ OK ]
    [root@servertest ~]# service named9 restart
    Shutting down bind9: [ OK ]
    Starting bind9: [ OK ]
    [root@servertest ~]# service samba4 restart
    Shutting down samba4: [ OK ]
    Starting samba4: [ OK ]

    ResponderEliminar
  10. [root@servertest ~]# kinit administrator@JMASJRZ.LOCAL
    Password for administrator@JMASJRZ.LOCAL:
    Warning: Your password will expire in 40 days on Tue Nov 19 12:46:57 2013
    [root@servertest ~]#

    [root@servertest ~]# klist
    Ticket cache: FILE:/tmp/krb5cc_0
    Default principal: administrator@JMASJRZ.LOCAL

    Valid starting Expires Service principal
    10/10/13 08:39:19 10/10/13 18:39:19 krbtgt/JMASJRZ.LOCAL@JMASJRZ.LOCAL
    renew until 10/11/13 08:39:15
    [root@servertest ~]# smbclient -L localhost -U%
    Domain=[JMASJRZ] OS=[Unix] Server=[Samba 4.1.0rc4]

    Sharename Type Comment
    --------- ---- -------
    netlogon Disk
    sysvol Disk
    IPC$ IPC IPC Service (Samba 4.1.0rc4)
    Domain=[JMASJRZ] OS=[Unix] Server=[Samba 4.1.0rc4]

    Server Comment
    --------- -------

    Workgroup Master
    --------- -------
    [root@servertest ~]#

    [root@servertest ~]# smbclient //localhost/netlogon -UAdministrator -c 'ls'
    Enter Administrator's password:
    Domain=[JMASJRZ] OS=[Unix] Server=[Samba 4.1.0rc4]
    . D 0 Tue Oct 8 13:46:51 2013
    .. D 0 Tue Oct 8 13:46:59 2013

    50396 blocks of size 2097152. 45880 blocks available
    [root@servertest ~]#

    [root@servertest ~]# wbinfo -u
    Administrator
    Guest
    krbtgt
    dns-servertest
    [root@servertest ~]#

    [root@servertest ~]# wbinfo -g
    Enterprise Read-Only Domain Controllers
    Domain Admins
    Domain Users
    Domain Guests
    Domain Computers
    Domain Controllers
    Schema Admins
    Enterprise Admins
    Group Policy Creator Owners
    Read-Only Domain Controllers
    DnsUpdateProxy

    ResponderEliminar
  11. [root@servertest ~]# samba-tool dns query 127.0.0.1 jmasjrz.local @ ALL
    Password for [administrator@JMASJRZ.LOCAL]:
    Name=, Records=3, Children=0
    SOA: serial=1, refresh=900, retry=600, expire=86400, minttl=0, ns=servertest.jmasjrz.local., email=hostmaster.jmasjrz.local. (flags=600000f0, serial=1, ttl=3600)
    NS: servertest.jmasjrz.local. (flags=600000f0, serial=1, ttl=900)
    A: 172.16.11.170 (flags=600000f0, serial=1, ttl=900)
    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=servertest, Records=1, Children=0
    A: 172.16.11.170 (flags=f0, serial=1, ttl=900)
    [root@servertest ~]#

    [root@servertest ~]# host -t SRV _ldap._tcp.jmasjrz.local.
    _ldap._tcp.jmasjrz.local has SRV record 0 100 389 servertest.jmasjrz.local.

    [root@servertest ~]# host -t SRV _kerberos._udp.jmasjrz.local.
    _kerberos._udp.jmasjrz.local has SRV record 0 100 88 servertest.jmasjrz.local.

    [root@servertest ~]# host -t A servertest.jmasjrz.local.
    servertest.jmasjrz.local has address 172.16.11.170
    [root@servertest ~]#

    [root@servertest ~]# cat /usr/local/samba/etc/smb.conf
    # Global parameters
    [global]
    workgroup = JMASJRZ
    realm = jmasjrz.local
    netbios name = SERVERTEST
    server role = active directory domain controller
    server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate
    nsupdate command = /usr/local/bin/nsupdate

    [netlogon]
    path = /usr/local/samba/var/locks/sysvol/jmasjrz.local/scripts
    read only = No

    [sysvol]
    path = /usr/local/samba/var/locks/sysvol
    read only = No
    [root@servertest ~]#

    [root@servertest ~]# samba-tool fsmo show
    InfrastructureMasterRole owner: CN=NTDS Settings,CN=SERVERTEST,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=jmasjrz,DC=local
    RidAllocationMasterRole owner: CN=NTDS Settings,CN=SERVERTEST,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=jmasjrz,DC=local
    PdcEmulationMasterRole owner: CN=NTDS Settings,CN=SERVERTEST,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=jmasjrz,DC=local
    DomainNamingMasterRole owner: CN=NTDS Settings,CN=SERVERTEST,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=jmasjrz,DC=local
    SchemaMasterRole owner: CN=NTDS Settings,CN=SERVERTEST,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=jmasjrz,DC=local

    ResponderEliminar
    Respuestas
    1. Todo se ve bien. Debe ser el Windows que tiene algun problema. Lamentablemente ahi no puedo ayudarle.

      Eliminar
  12. Buenas tardes Claudio

    Al parecer algo tiene la maquina virtual de XP. Realice pruebas con un equipo con windows 7 y entro al dominio sin ningun problema, solo que cuando te firmas tarda demasiado en entrar, voy a seguir haciendo pruebas haber si tiene algo que ver el AD de Samba o es el windows.

    Por otro lado, ahora que ya tengo el dominio, como puedo establecer y aplicar politicas a los usuarios y grupos. Por ejemplo que todos los usuarios tengan el mismo wallpaper que yo como administrador quiero establecer. O que la longitud minima del password sea de 6 caracteres, etc.

    De antemano gracias por tu apoyo y que estes bien.

    ResponderEliminar
  13. Buenos dias Claudio

    Aqui reportandome de nuevo y aprovecho para comentarte sobre el problema que tengo para loguear un usuario al dominio de samba. Despues de haber seguido esta guia todo funciona a la perfeccion, solo que al firmarme al dominio con cualquier usuario tarda hasta 5 minutos. He buscado informacion al respecto en internet y al parecer es un problema muy recurrente y las soluciones que presentan no me han funcionado. Mi pregunta es:

    Sabes algo al respecto para solucionar este problema?

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola.

      Nunca me ha pasado eso. Yo presumo que tu problema se debe a que solo configuraste una interfaz de red. En la guía claramente uso dos interfaces, una para conectarme a internet y otra para el domonio. Además debes poner a andar el servicio DHCP como está en la guía para que los clientes puedan encontrar el servidor y debe ser el unico host en la red con este servicio para que no haya conflictos.

      Saludos.

      Eliminar
    2. Buenas Tardes Claudio

      Aqui sigo buscando la solucion al problema de login, que tarda mucho en firmarse al dominio. Hice la prueba del dhcp pero siguio igual, aunque necesito configurarlo con ips estaticas.

      Por otro lado buscando en internet, mencionan que uno puede activar el log de login del cliente en cuestion. Realice las configuraciones para generar el log y me arroja la siguiente informacion:

      GPSVC(21c.a64) 15:44:28:245 UserPolicy: Waiting for machine policy wait for network event with timeout 0 ms
      GPSVC(21c.a64) 15:45:31:476 GetUserGuid: Failed to get user guid with 1722.
      GPSVC(21c.a64) 15:46:34:722 GetUserGuid: Failed to get user guid with 1722.
      GPSVC(21c.a64) 15:50:49:080 ProcessGPOs: MyGetUserName failed with 1722.
      GPSVC(21c.a64) 15:50:49:080 Opened query for NLA successfully
      GPSVC(21c.a64) 15:50:49:080 ProcessGPOs: No WMI logging done in this policy cycle.

      Como puedes observar, al momento de querer obtener el user guid es donde tarda, me hace suponer que es algo de configuracion de samba. Pero tu con tu experiencia que cres que pueda estar pasando?

      Saludos.

      Eliminar
    3. Ponga las IP manuales. Como segunda opción configura todo de nuevo desde cero.

      Eliminar
    4. Buenos dias Claudio

      Por fin encontre donde estaba el problema. Cambie la configuracion del firewall a como tu la planteas y ya funciono a la perfeccion. Ahora mi pregunta es en cuanto a mi configuracion de iptables original que es la siguiente y me gustaria saber que me falta configurar para que funciones bien el dominio ya que necesito dejar abiertos solo los puertos necesarios.

      iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
      Chain INPUT (policy DROP 1 packets, 78 bytes)
      num pkts bytes target prot opt in out source destination
      1 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:3128
      2 0 0 ACCEPT udp -- * * 172.16.11.0/24 0.0.0.0/0 udp dpt:684
      3 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:636
      4 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:464
      5 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:445
      6 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:389
      7 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:139
      8 0 0 ACCEPT udp -- * * 172.16.11.0/24 0.0.0.0/0 udp dpt:138
      9 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:138
      10 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:137
      11 0 0 ACCEPT udp -- * * 172.16.11.0/24 0.0.0.0/0 udp dpt:88
      12 0 0 ACCEPT tcp -- * * 172.16.11.0/24 0.0.0.0/0 tcp dpt:88
      13 4 160 ACCEPT tcp -- eth1 * 172.16.11.81 0.0.0.0/0 tcp dpt:22 state NEW,ESTABLISHED

      Eliminar
    5. 14 0 0 ACCEPT icmp -- * * 172.16.11.0/24 0.0.0.0/0
      15 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:53 state NEW,ESTABLISHED
      16 0 0 ACCEPT udp -- eth1 * 172.16.11.0/24 0.0.0.0/0 udp dpt:53 state NEW,ESTABLISHED
      17 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:953 state NEW,ESTABLISHED
      18 0 0 ACCEPT udp -- eth1 * 172.16.11.0/24 0.0.0.0/0 udp dpt:953 state NEW,ESTABLISHED
      19 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:25 state NEW,ESTABLISHED
      20 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:110 state NEW,ESTABLISHED
      21 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:143 state NEW,ESTABLISHED
      22 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:587 state NEW,ESTABLISHED
      23 0 0 ACCEPT udp -- eth1 * 172.16.11.0/24 0.0.0.0/0 udp dpt:123 state NEW,ESTABLISHED
      24 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:3268 state NEW,ESTABLISHED
      25 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:3269 state NEW,ESTABLISHED
      26 0 0 ACCEPT tcp -- eth1 * 172.16.11.0/24 0.0.0.0/0 tcp dpt:135 state NEW,ESTABLISHED
      27 0 0 ACCEPT udp -- eth1 * 172.16.11.0/24 0.0.0.0/0 udp dpt:135 state NEW,ESTABLISHED
      28 0 0 ACCEPT tcp -- eth1 * 172.16.11.81 0.0.0.0/0 tcp dpt:10000 state NEW,ESTABLISHED
      29 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW,ESTABLISHED
      30 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
      31 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
      32 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1521
      33 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
      34 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

      Chain FORWARD (policy DROP 0 packets, 0 bytes)
      num pkts bytes target prot opt in out source destination
      1 0 0 ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0

      Chain OUTPUT (policy ACCEPT 6 packets, 576 bytes)
      num pkts bytes target prot opt in out source destination

      De antemano agradezco tu valioso apoyo y espero que esto le sirva a laguien mas.

      Eliminar
    6. Ya encontre el problema, aqui te envio mi iptables, en el cual solo comente la linea #iptables -P INPUT DROP lo que soluciono el problema.
      Pero en teoria este comando me deberia eliminar todas las demas politicas que yo no implemente, o Cual seria la forma correcta de solo dejar la politicas que aplique?

      # Flush any existing rules, leaving just the defaults
      iptables -F
      iptables -X
      iptables -Z
      iptables -t nat -F

      # Set the default policies to allow everything while we set up new rules.
      iptables -P INPUT ACCEPT
      iptables -P FORWARD ACCEPT
      iptables -P OUTPUT ACCEPT
      iptables -t nat -P PREROUTING ACCEPT
      iptables -t nat -P POSTROUTING ACCEPT

      # Limit to eth0 from a specific IP subnet to access port 22 if required.
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.81 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

      iptables -A INPUT -p icmp -s 172.16.11.0/24 -j ACCEPT
      # Open port 53 for incoming DNS requests.
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
      iptables -A INPUT -i eth1 -p udp -s 172.16.11.0/24 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 953 -m state --state NEW,ESTABLISHED -j ACCEPT
      iptables -A INPUT -i eth1 -p udp -s 172.16.11.0/24 --dport 953 -m state --state NEW,ESTABLISHED -j ACCEPT

      # Open port 23 for incoming Telnet requests.
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 23 -m state --state NEW,ESTABLISHED -j ACCEPT

      # Open port 25 for incoming SMTP requests.
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
      iptables -A OUTPUT -i eth1 -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
      iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 587 -m state --state NEW,ESTABLISHED -j ACCEPT

      Eliminar
  14. # Open port for Samba requests.
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 88 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p udp --dport 88 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 137 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 138 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p udp --dport 138 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 139 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 389 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 445 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 464 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 636 -j ACCEPT
    iptables -I INPUT -s 172.16.11.0/24 -p udp --dport 684 -j ACCEPT

    iptables -A INPUT -i eth1 -p udp -s 172.16.11.0/24 --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT

    iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 3268 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 3269 -m state --state NEW,ESTABLISHED -j ACCEPT

    # Open port 135 for incoming RPC requests.
    iptables -A INPUT -i eth1 -p tcp -s 172.16.11.0/24 --dport 135 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth1 -p udp -s 172.16.11.0/24 --dport 135 -m state --state NEW,ESTABLISHED -j ACCEPT

    # Open port 10000 for incoming HTTP requests.
    iptables -A INPUT -i eth1 -p tcp -s 172.16.11.81 --dport 10000 -m state --state NEW,ESTABLISHED -j ACCEPT

    # Open port 443 for incoming HTTPS requests. (uncomment if required)
    iptables -A INPUT -i eth1 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

    # Accept any localhost (loopback) calls.
    iptables -A INPUT -i lo -j ACCEPT


    # Open port 3128 for incoming Proxy requests.
    iptables -I INPUT -s 172.16.11.0/24 -p tcp --dport 3128 -j ACCEPT
    iptables -t nat -A PREROUTING -i eth1 -s 172.16.11.0/24 -p tcp --dport 80 -j DNAT --to 172.16.11.170:3128
    iptables -t nat -A PREROUTING -i eth1 -s 172.16.11.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

    #Connection from Public IP
    iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

    # Connect to Oracle DB from local network
    iptables -t nat -A PREROUTING -i eth1 -s 172.16.11.0/24 -p tcp --dport 1521 -j DNAT --to 172.16.11.16:1521
    iptables -t filter -A INPUT -p tcp --dport 1521 -j ACCEPT

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A FORWARD -i eth1 -j ACCEPT
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

    # Allow any existing connection to remain.
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    #iptables -P INPUT DROP
    iptables -P FORWARD DROP

    # Accept any outbound requests from this server.
    iptables -P OUTPUT ACCEPT

    # Save the settings.
    service iptables save

    # Display the settings.
    iptables -nL -v --line-numbers

    Saludos

    ResponderEliminar
    Respuestas
    1. Que bueno que lo resolvió. Esto es una muestra de por qué las guías hay que seguirlas al pie de la letra para obtener los mismos resultados, estudiarla bien y luego hacer su propia implementación.

      Saludos.

      Eliminar
  15. Looking up IPv4 addresses
    More than one IPv4 address found. Using 172.16.0.1
    Looking up IPv6 addresses
    No IPv6 address will be assigned
    ldb: module schema_load initialization failed : No such object
    ldb: module rootdse initialization failed : No such object
    ldb: module samba_dsdb initialization failed : No such object
    ldb: Unable to load modules for /usr/local/samba/private/sam.ldb: (null)
    samdb_connect failed
    VFS connect failed!
    ERROR(): Provision failed - ProvisioningError: Your filesystem or build does not support posix ACLs, which s3fs requires. Try the mounting the filesystem with the 'acl' option.
    File "/usr/local/samba/lib64/python2.6/site-packages/samba/netcmd/domain.py", line 398, in run
    use_rfc2307=use_rfc2307, skip_sysvolacl=False)
    File "/usr/local/samba/lib64/python2.6/site-packages/samba/provision/__init__.py", line 2052, in provision
    raise ProvisioningError("Your filesystem or build does not support posix ACLs, which s3fs requires. Try the mounting the filesystem with the 'acl' option.")

    ResponderEliminar
  16. ya se actualizo y esta en centos 6.4

    ResponderEliminar
  17. Hola es un excelente tutorial pero te comento que tengo un inconveniente todo sale superbien hasta que se llega al punto de kerberos donde me sale el sgte error que me puedes sugerir al respecto:
     al ejecutar esto: kinit administrator@MYDOMAIN.LOCAL
    kinit: Cannot resolve servers for KDC in realm "MYDOMAIN.LOCAL" while getting initial credentials

    ResponderEliminar
  18. Hola,

    Lo que estoy haciendo es una migración de Samba_3.6.21 a Samba_4.1.2. El tutorial me ha sido de mucha ayuda, prácticamente la única diferencia al migrar ha sido a la hora de hacer la provisión, que he indicado los archivos de configuración y tdb que ya tenía. Una detalle que a alguien le puede ser útil es que si en el archivo smb de la versión 3 hay algo relativo aauditoría VFS es necesario comentar esas líneas y añadirlas a mano en el nuevo smb.conf porque en mi caso provocaba un segfault.

    Una cosa que no me está funcionando como en Samba3 es la compartición [homes], antes entraba en \\servidor\homes y accedía a la carpeta home del usuario, ahora me funciona con \\servidor\nombre_de_usuario pero con \\servidor\homes me da un error *Uno de los dispositivos vinculados al sistema no funciona* ¿A alguien le ha pasado? ¿Sabe como resolverlo?

    Gracias.

    ResponderEliminar
    Respuestas
    1. Saludos.

      Es curioso pero no he migrado de un samba 3.x hacia la versión 4. Sin embargo estoy preparando una migración de Windows a Samba 4.

      Trate de ver la lista de cambios desde la 3.6.21 hasta la 4.1.2 a ver si ajustaron algo respecto a eso. Verifique los permisos también.

      Más info puede encontrar aqui https://wiki.samba.org/index.php/Samba4/samba-tool/domain/classicupgrade/HOWTO

      Eliminar
    2. Hola,

      Gracias por tu respuesta. Ya he dado con ello, para que funcione la compartición [homes] hay que configurar Winbind y en smb.conf:

      [homes]
      path=/home/%U

      Saludos.

      Eliminar
  19. Hola a todos:

    Siguiendo el tutorial he avanzado mucho en la configuración de un AD con samba4, pero me ha surgido un problema. Con samba3 para autorizar el acceso a un grupo en una compartición añadía la línea valid users = @grupoaccede, con samba4 me deniega el acceso. Me funciona si pongo el SID (S-1-5-21-xxx-xxx) en lugar del nombre del grupo, pero resulta muy confuso a la hora de hacer cambios.

    ResponderEliminar
  20. Hola, muy interesante el articulo. Estoy probando samba y me da el siguiente error en bind al cargar en el log:

    Feb 26 16:27:03 pdcsamba4 named[1704]: zone 'version.bind' allows updates by IP address, which is insecure
    Feb 26 16:27:03 pdcsamba4 named[1704]: zone 'hostname.bind' allows updates by IP address, which is insecure
    Feb 26 16:27:03 pdcsamba4 named[1704]: zone 'authors.bind' allows updates by IP address, which is insecure
    Feb 26 16:27:03 pdcsamba4 named[1704]: zone 'id.server' allows updates by IP address, which is insecure
    Feb 26 16:27:03 pdcsamba4 named[1704]: command channel listening on 127.0.0.1#953
    Feb 26 16:27:03 pdcsamba4 named[1704]: command channel listening on ::1#953
    Feb 26 16:27:03 pdcsamba4 named[1704]: the working directory is not writable
    Feb 26 16:27:03 pdcsamba4 named[1704]: isc_log_open 'named.run' failed: permission denied
    Feb 26 16:27:03 pdcsamba4 named[1704]: managed-keys-zone: loading from master file managed-keys.bind failed: permission denied
    Feb 26 16:27:03 pdcsamba4 named[1704]: managed-keys.bind.jnl: open: permission denied
    Feb 26 16:27:03 pdcsamba4 named[1704]: managed-keys-zone: journal rollforward failed: unexpected error
    Feb 26 16:27:03 pdcsamba4 named[1704]: all zones loaded
    Feb 26 16:27:03 pdcsamba4 named[1704]: running

    Despues si intengo ejecutar:

    samba_dnsupdate --verbose --all-names

    me da este error el log:

    Feb 26 16:47:15 pdcsamba4 samba[1118]: /usr/local/samba/sbin/samba_dnsupdate: update failed: REFUSED
    Feb 26 16:47:15 pdcsamba4 named[1704]: samba_dlz: starting transaction on zone _msdcs.vesytech.local
    Feb 26 16:47:15 pdcsamba4 named[1704]: client 192.168.10.15#20614: update '_msdcs.vesytech.local/IN' denied
    Feb 26 16:47:15 pdcsamba4 named[1704]: samba_dlz: cancelling transaction on zone _msdcs.vesytech.local
    Feb 26 16:47:15 pdcsamba4 samba[1118]: [2014/02/26 16:47:15.753590, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)

    Sabes que puede ser??

    Muchas gracias por tu articulo y tu ayuda.

    Saludos

    ResponderEliminar
    Respuestas
    1. Hola David. Presumo que te has saltado sin querer algún paso de la guía. Verifica que Bind sea 9.9.3 o superior y que lo hayas compilado de sus fuentes.

      Saludos.

      Eliminar
    2. Hola Claudio, gracias por la rapida respuesta. No estoy ahora en la ofi y no te puedon enviar la version, pero te aseguro que si que compile el bind de las fuentes. En cuanto pueda lo reviso.

      Eliminar
    3. Te pongo la version de bind:

      [root@pdcsamba4 bind-9.9.3]# named -V
      BIND 9.9.3 (Extended Support Version) built with '--sysconfdir=/etc/named' '--localstatedir=/var/named' '--with-gssapi=/usr/include/gssapi' '--with-dlopen=yes'
      using OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
      using libxml2 version: 2.7.6


      Alguna otra cosa que pueda mirar??

      Eliminar
    4. Eso está bien. Revise el /usr/local/samba/private/named.conf para que esté como en la guía y que los permisos estén correctos como se indica también en la guía.

      Despues de eso todo estaría bien, porque el Bind está iniciando bien.

      Feb 26 16:27:03 pdcsamba4 named[1704]: all zones loaded
      Feb 26 16:27:03 pdcsamba4 named[1704]: running

      En el peor de los casos lo recomendable es empezar desde cero. Recuerde que esto es una guía para un escenario, si cambia un nombre o deja un paso sin hacer no funcionará como espera.

      Eliminar
    5. Parece que se ha arreglado añadiendo esto:

      directory "/var/named";

      al named.conf

      Aunque sigue sin funcionar el

      samba_dnsupdate --verbose --all-names

      que sigue dando error de refused.

      Gracias de todas formas por tus respuestas y por el blog en general.

      Saludos.

      Eliminar
  21. Felicitaciones, un excelente tutorial, solo un comentario el archivo named.conf debe ser creado en /etc/named/named.conf, de lo contrario el daemon de bind no lo encuentra.
    Saludos

    ResponderEliminar
  22. Problemas al momento de hacer la provision del dominiocon samba4
    Hola mi amigo Claudio, te comento que tuve problemas al momento de seguir tu guia especificamente en esta parte, yo ejecuto el siguiente comando con mis datos
    samba-tool domain provision --realm=mydomain.local --domain=MYDOMAIN --adminpass 'solucion.123' --server-role=dc --dns-backend=BIND9_DLZ
    y me da el siguiente error, no se si esto es normal o esta bien seguir asi:

    "/usr/local/samba/bin/samba-tool domain provision
    Realm [SHEKAPAN-COS.LOCAL]: shekapan-cos.local
    Domain [shekapan-cos]: shekapan-cos
    Server Role (dc, member, standalone) [dc]: dc
    DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
    Administrator password:
    Retype password:
    ERROR(): Provision failed - ProvisioningError: guess_names: 'realm =' was not specified in supplied /usr/local/samba/etc/smb.conf. Please remove the smb.conf file and let provision generate it
    File "/usr/local/samba/lib64/python2.6/site-packages/samba/netcmd/domain.py", line 398, in run
    use_rfc2307=use_rfc2307, skip_sysvolacl=False)
    File "/usr/local/samba/lib64/python2.6/site-packages/samba/provision/__init__.py", line 1988, in provision
    sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
    File "/usr/local/samba/lib64/python2.6/site-packages/samba/provision/__init__.py", line 595, in guess_names
    raise ProvisioningError("guess_names: 'realm =' was not specified in supplied %s. Please remove the smb.conf file and let provision generate it" % lp.configfile)"

    y bueno, pues no se como continuar con lo que nos muestras en tu cuadro de texto o no se si es esto lo que nos deberia de mostrar despues de ejecutar el comando correctamente

    Looking up IPv4 addresses
    More than one IPv4 address found. Using 192.168.5.1
    Looking up IPv6 addresses
    No IPv6 address will be assigned
    Setting up share.ldb
    Setting up secrets.ldb
    Setting up the registry
    Setting up the privileges database
    Setting up idmap db
    Setting up SAM db
    Setting up sam.ldb partitions and settings
    Setting up sam.ldb rootDSE
    Pre-loading the Samba 4 and AD schema
    Adding DomainDN: DC=mydomain,DC=local
    Adding configuration container
    Setting up sam.ldb schema
    Setting up sam.ldb configuration data
    Setting up display specifiers
    Modifying display specifiers
    Adding users container
    Modifying users container
    Adding computers container
    Modifying computers container
    Setting up sam.ldb data
    Setting up well known security principals
    Setting up sam.ldb users and groups
    Setting up self join
    Adding DNS accounts
    Creating CN=MicrosoftDNS,CN=System,DC=mydomain,DC=local
    Creating DomainDnsZones and ForestDnsZones partitions
    Populating DomainDnsZones and ForestDnsZones partitions
    See /usr/local/samba/private/named.conf for an example configuration include file for BIND
    and /usr/local/samba/private/named.txt for further documentation required for secure DNS updates
    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: sambapdc01
    NetBIOS Domain: MYDOMAIN
    DNS Domain: mydomain.local
    DOMAIN SID: S-1-5-21-4230643479-790999145-160529251

    Agradezco mucho tu ayuda, lo estoy haciendo ya que en el trabajo queremos migrar nuestro servidor windows a linux, estoy usando CentOS 6.5

    ResponderEliminar
    Respuestas
    1. Revise que la configuración de Kerberos esté correcta en el fichero /etc/krb5.conf

      Eliminar
  23. Hola Claudio!!

    Como puedo autenticarme con un usuario del Active Directory en el Servidor Centos 6.5. Me explico tengo los users en /etc/password y tambien los del Active directory, si quiero loguearme (autenticarme) en el mismo servidor donde esta el samba4 con los usuarios del active directory (jose,juan,maria) de manera grafica y a su vez poder loguearme con cualqueira de los usuarios locales (root,fermin), como puedo hacerlo??

    Me puedo autenticar con los usuarios del Active Directory desde las PC clientes, pero no puedo hacerlo en el mismo Servidor.

    ResponderEliminar
    Respuestas
    1. Hola.

      Los usuarios de Samba 4 no son parte del sistema Linux que hace de servidor de AD, por lo que no pueden loguarse en el mismo sistema donde samba está instalado.

      Presumo que agregando el propio servidor Linux al AD de Samba4 daría la posibilidad de hacer login con sus propios usuarios.

      Pero es solo una presunción.

      Haga las pruebas y nos cuenta a ver qué tal.

      Saludos....

      Eliminar
    2. Buenas noches Claudio!!

      He intentando de varias maneras de agregar el servidor al AD de Samba4, pero hasta el momento no me ha funcionado.

      Este es el mensaje de error que lanza al momento de intentar agregar Centos 6.5 al AD al servidor:

      [root@servidor ~]# net ads join -U Administrator -S servidor.dominio.local
      Enter Administrator's password:
      kinit succeeded but ads_sasl_spnego_krb5_bind failed: Invalid credentials
      Failed to join domain: failed to connect to AD: Invalid credentials

      El ultimo ejemplo que utilizo para agregar al AD es este:

      http://kb.brightcomputing.com/faq/index.php?action=artikel&cat=13&id=7&artlang=en

      He intentado buscar un buen manual para agregar Centos al AD, pero hasta ahora no lo he podido encontrar.

      Eliminar
  24. estimado Claudio, por favor ayudame es que tengo un impresora win compartida con linux mediante samba pero cuando manda a imprimir desde linux a la impresora el internet se cae y la impresion queda por la mitad
    Error writing spool: NT_STATUS_IO_TIMEOUT"
    agradeciendo tu ayuda
    whatsapp 3207913683
    mail rafaolivella@gmail.com

    ResponderEliminar