Samba File Server dentro de un dominio Windows 2008 con Kerberos

  • 14 Abr 2010
  • Samba, Linux

Escenario

Tenemos un Linux Box que actua como PDC y File Server con Samba. Un paso atrás en tecnología nos obliga a migrar el Domain Controller a Windows 2003 Server (PDC) para contar con el soporte de Microsoft. Ahora, para no tener que mantener 2 bases de usuarios, hay que cambiar algunas cosas de Samba para agregarlo al dominio del W2003. De esta manera, cuando una PC cliente se logueé al dominio, y su usuario exista en Samba sin importar su password, podrá ver las carpetas a las que tenga permiso de acceso.

Red

Colocar como DNS la IP del PDC.

Editar el archivo /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=misamba.midominio.local

Instalar Kerberos

Para chequear si está instalado:

rpm -q krb5-libs
rpm -q krb5-workstation
rpm -q krb5-server

Para instalarlo:

yum install krb5-libs
yum install krb5-workstation
yum install krb5-server

Instalar Samba

A partir de CentOS 5.5 se agregó el paquete samba3x. Que arregla algunos problemas que había en autenticación con Windows 2008 R2 (ver bug)

# yum remove samba
# yum search samba3x
# yum install samba3x
# yum install samba3x-client
....
# rpm -qa samba*
samba3x-winbind-3.3.8-0.51.el5
samba3x-client-3.3.8-0.51.el5
samba3x-3.3.8-0.51.el5
samba3x-common-3.3.8-0.51.el5

Configurar samba

[global]
        workgroup = DOMINIO
        realm = DOMINIO.COM.AR
        preferred master = no
        server string = MANACOR (ex HOMERO)
        security = ADS
        encrypt passwords = yes
        log level = 10
        log file = /var/log/samba/%m
        max log size = 50
        winbind separator = +
        password server = 192.168.7.1
        ;printcap name = cups
        ;printing = cups
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        template homedir = /home/%D/%U
        obey pam restrictions = yes

[homes]
        comment = Home Directories
        valid users = DOMINIO+%S
        read only = No
        browseable = No

Configurar Kerberos

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = DOMINIO.COM.AR
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes

[realms]
 DOMINIO.COM.AR = {
  kdc = win2008.dominio.com.ar:88
  admin_server = win2008.dominio.com.ar:749
  default_domain = dominio.com.ar
 }

[domain_realm]
 .dominio.com.ar = DOMINIO.COM.AR
 dominio.com.ar = DOMINIO.COM.AR

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

Hablando con el AD de Windows 2008

# kinit administrator@MIDOMINIO.LOCAL
Password for administrator@MIDOMINIO.LOCAL: 
# klist 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@MIDOMINIO.LOCAL

Valid starting     Expires            Service principal
04/14/10 17:16:33  04/15/10 03:16:36  krbtgt/MIDOMINIO.LOCAL@MIDOMINIO.LOCAL
	renew until 04/15/10 17:16:33


Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

# net ads join -U Administrator
Password:
Joined domain MIDOMINIO.

Editar /etc/nsswitch.conf cambiando solo estas lineas.

passwd:     compat winbind  
shadow:     compat  
group:      compat winbind

Ver usuarios del Dominio

# wbinfo -u
DOMINIO+user1
DOMINIO+user2
DOMINIO+user3
...

Ver grupos del Dominio

# wbinfo -g
DOMINIO+group1
DOMINIO+group2
DOMINIO+group3
...

Probar la autenticacion de un usuario:

# wbinfo -a DOMINIO+usuario%lapassword
plaintext password authentication succeeded
challenge/response password authentication succeeded

Reiniciar servicios

/etc/init.d/winbind restart
/etc/init.d/smb restart

Flush Winbind IDMap Cache

# net cache flush

Para conocer el id de un usuario de winbind:

# id -u [username]

y para conocer su correspondiente Windows SID:

# wbinfo -n [username]

Migrar archivos de un servidor a otro

Primero copio con rsync y después arreglo en problema de los acentos.

rsync -av --progress root@192.168.10.1:/home/viejo/server/* /home/nuevo/server/
convmv -f CP850 -t UTF8 "canci�n de ?ieto.txt" --notest

Quotas

Este tutorial es perfecto. Las quotas de disco se aplican directamente a los usuarios y/o grupos de dominio.

edquota MIDOMINIO+usuario
edquota -g MIDOMINIO+grupo