You are on page 1of 10

Unir cliente Linux a un Dominio Windows

Contenido

Descripción de paquetes de instalación............................................................................... 1


Kerberos ........................................................................................................................... 1
Como funciona ............................................................................................................. 2
Samba .............................................................................................................................. 3
Winbind ............................................................................................................................ 4
PAM.................................................................................................................................. 5
Escenario ............................................................................................................................. 5
Pre-requisitos ....................................................................................................................... 5
DNS - Domain Name System ........................................................................................... 5
NTP .................................................................................................................................. 5
Hostname ......................................................................................................................... 6
Configurar parámetros de red .......................................................................................... 6
Proceso de Instalación......................................................................................................... 6
Instalando Kerberos ......................................................................................................... 6
Configuración de Kerberos ........................................................................................... 7
Instalando Samba ............................................................................................................ 8
Resolver nombres de usuarios y grupos de dominio .................................................... 9
Pruebas ............................................................................................................................... 9
Verificar la integración del dominio ................................................................................... 9
Verificar winbind ............................................................................................................. 10
Referencias ........................................................................................................................ 10

Descripción de paquetes de instalación

Kerberos

Es un protocolo de autenticación de redes de ordenador que permite a dos computadores


en una red insegura demostrar su identidad mutuamente de manera segura. Sus
diseñadores se concentraron primeramente en un modelo de cliente-servidor, y brinda
autenticación mutua: tanto cliente como servidor verifican la identidad uno del otro. Los
mensajes de autenticación están protegidos para evitar eavesdropping y ataques de
Replay.

1
Kerberos es un protocolo de seguridad creado por MIT (Instituto Tecnológico de
Massachusetts) que usa una criptografía de claves simétricas para validar usuarios con
los servicios de red, evitando así tener que enviar contraseñas a través de la red. Al
validar los usuarios para los servicios de la red por medio de Kerberos, se frustran los
intentos de usuarios no autorizados que intentan interceptar contraseñas en la red.

Este se basa en el Protocolo de Needham-Schroeder. Usa un tercero de confianza,


denominado "centro de distribución de claves" (KDC, por sus siglas en inglés: Key
Distribution Center), el cual consiste de dos partes lógicas separadas: un "servidor de
autenticación" (AS o Authentication Server) y un "servidor emisor de tiquets" (TGS o Ticket
Granting Server). Kerberos trabaja sobre la base de "tickets", los cuales sirven para
demostrar la identidad de los usuarios.

Mantiene una base de datos de claves secretas; cada entidad en la red —sea cliente o
servidor— comparte una clave secreta conocida únicamente por él y Kerberos. El
conocimiento de esta clave sirve para probar la identidad de la entidad. Para una
comunicación entre dos entidades, Kerberos genera una clave de sesión, la cual pueden
usar para asegurar sus interacciones.

Como funciona

A continuación se describe someramente el protocolo. Se usaran las siguientes


abreviaturas:

 AS = Authentication Server
 TGS = Ticket Granting Server
 SS = Service Server.

En resumen el funcionamiento es
el siguiente: el cliente se
autentica a sí mismo contra el AS,
así demuestra al TGS que está
autorizado para recibir un ticket
de servicio (y lo recibe) y ya
puede demostrar al SS que ha
sido aprobado para hacer uso del
servicio kerberizado.

En más detalle:

1. Un usuario ingresa su nombre.


de usuario y password en el cliente.
2. El cliente genera una clave hash a partir del password y la usará como la clave secreta
del cliente.
3. El cliente envía un mensaje en texto plano al AS solicitando servicio en nombre del
usuario. Nota: ni la clave secreta ni el password son enviados, solo la petición del
servicio.
4. El AS comprueba si el cliente está en su base de datos. Si es así, el AS genera la
clave secreta utilizando la función hash con la password del cliente encontrada en su
base de datos. Entonces envía dos mensajes al cliente:
4.1. Mensaje A: Client/TGS session key cifrada usando la clave secreta del usuario
2
4.2. Mensaje B: Ticket-Granting Ticket (que incluye el ID de cliente, la dirección de red
del cliente, el período de validez y el Client/TGS session key) cifrado usando la
clave secreta del TGS.
5. Una vez que el cliente ha recibido los mensajes, descifra el mensaje A para obtener el
client/TGS session key. Esta session key se usa para las posteriores comunicaciones
con el TGS. (El cliente no puede descifrar el mensaje B pues para cifrar éste se ha
usado la clave del TGS). En este momento el cliente ya se puede autenticar contra el
TGS.
6. Entonces el cliente envía los siguientes mensajes al TGS:
6.1. Mensaje C: Compuesto del Ticket-Granting Ticket del mensaje B y el ID del
servicio solicitado.
6.2. Mensaje D: Autenticador (compuesto por el ID de cliente y una marca de tiempo),
cifrado usando el client/TGS session key.
7. Cuando recibe los mensajes anteriores, el TGS descifra el mensaje D (autenticador)
usando el client/TGS session key y envía los siguientes mensajes al cliente:
7.1. Mensaje E: Client-to-server ticket (que incluye el ID de cliente, la dirección de red
del cliente, el período de validez y una Client/Server session key) cifrado usando la
clave secreta del servicio.
7.2. Mensaje F: Client/server session key cifrada usando el client/TGS session key.
8. Cuando el cliente recibe los mensajes E y F, ya tiene suficiente información para
autenticarse contra el SS. El cliente se conecta al SS y envía los siguientes mensajes:
8.1. Mensaje E del paso anterior.
8.2. Mensaje G: un nuevo Autenticador que incluye el ID de cliente, una marca de
tiempo y que está cifrado usando el client/server session key.
9. El SS descifra el ticket usando su propia clave secreta y envía el siguiente mensaje al
cliente para confirmar su identidad:
9.1. Mensaje H: la marca de tiempo encontrada en el último Autenticador recibido del
cliente más uno, cifrado el client/server session key.
10. El cliente descifra la confirmación usando el client/server session key y chequea si la
marca de tiempo está correctamente actualizada. Si esto es así, el cliente confiará en
el servidor y podrá comenzar a usar el servicio que este ofrece.
11. El servidor provee del servicio al cliente.

Samba

Es una implementación libre del protocolo de archivos compartidos de Microsoft Windows


(antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo
UNIX. De esta forma, es posible que ordenadores con GNU/Linux, Mac OS X o Unix en
general se vean como servidores o actúen como clientes en redes de Windows. Samba
también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC),
como miembro de dominio e incluso como un dominio Active Directory para redes
basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios
compartidos y autentificar con su propio archivo de usuarios.

SAMBA nos ofrece múltiples posibilidades:

 Acceso a recursos de red (servidores de archivos, impresoras, etc.).


 Autenticación y Control de Accesos.
 Resolución de Nombres.
 Publicación de Servicios.

3
Winbind

Es un componente de la suite de programas Samba que resuelve los problemas de inicio


de sesión unificados. Winbind usa una implementación UNIX de las llamdas RPC de
Microsoft, PAM (Pluggable Authentication Modules), y el servicio de nombres (NSS, Name
Service Switch) para permitir a los usuarios de dominios NT aparecer y operar como
usuarios UNIX en una máquina UNIX.

Winbind proporciona tres funciones separadas:

 Autenticación para credenciales de usuario (vía PAM).


 Resolución de identidad (vía NSS).
 Winbind mantiene una base de datos llamada winbind_idmap.tdb en lacual guarda las
asociaciones entre UNIX UIDs / GIDs y NT SIDs. Esta asociación se usa sólo para
usuario y grupos que no tienen unos UID/GID locales.Guarda los UID/GID del rango
uid/gid de idmap que ha asociado al SID NT. Si se ha especificado el backend idmap
como ldapsam:url, entonces en lugar de usar de usar la asociación local Winbind la
obtendrá de la base de datos LDAP.

Si winbind no está en ejecución, smbd (que llama a winbind) tendrá que usar sólo la
información local de /etc/passwd y de /etc/group no podrá realizar asociaciones
dinámicas.

Winbind unifica la gestión de cuentas UNIX y Windows NT permitiendo a una máquina


Unix volverse un miembro completo de un dominio NT. Una vez hecho, la máquina Unix
verá a los usuarios y grupos NT como si fueran usuarios y grupos nativos permitiendo
usar el dominio NT usarse de la misma forma que se usa NIS+ en entorno exclusivos
UNIX.

El resultado final es que cuando cualquier programa en la máquina Unix solicita al sistema
operativo que busque un nombre usuario o un grupo, la consulta se resuelve preguntando
al controlador de dominio NT del dominio correspondiente. Como winbind enlaza con el
sistema operativo a bajo nivel (vía módulo de resolución NSS de la biblioteca C), la
redirección al controlador de dominio NT es completamente transparente.

Los usuarios de la máquina Unix pueden utilizar los nombres de usuarios y grupos NT
como si fueran nombres nativos. Se pueden cambiar propietarios de ficheros para que
sean propiedad de usuarios de usuarios del dominio NT o incluso iniciar una sesión en la
máquina Unix y lanzar una sesión X-Window como miembro del dominio.

La única indicación obvia de que se está usando Winbind que los nombres de usuarios y
grupos tienen la forma DOMAIN\user and DOMAIN\group. Esto es necesario para permitir
a Winbind determinar a qué controlador de dominio hay que redireccionar para la
búsqueda particular y qué dominios de confianza se están referenciando.

Adicionalmente, Winbind proporciona un servicio de autenticación que engancha con el


sistema PAM (Pluggable Authentication Modules) (PAM) para proporcionar autenticación
vía dominio NT a cualquier aplicación con soporte PAM. Esta capacidad resuelve el
problema de sincronizar las contraseñas entre sistema ya que todas las contraseñas se
almacenan en una sola ubicación, en el controlador de dominio.

4
PAM

PAM (Pluggable Authentication Module) no es un modelo de autenticación en sí, sino que


se trata de un mecanismo que proporciona una interfaz entre las aplicaciones de usuario y
diferentes métodos de autenticación, tratando de esta forma de solucionar uno de los
problemas clásicos de la autenticación de usuarios: el hecho de que una vez que se ha
definido e implantado cierto mecanismo en un entorno, es difícil cambiarlo. Mediante PAM
podemos comunicar a nuestra aplicaciones con los métodos de autenticación que
deseemos de una forma transparente, lo que permite integrar las utilidades de un sistema
Unix clásico (login, ftp, telnet...) con esquemas diferentes del habitual password: claves de
un solo uso, biométricos, tarjetas inteligentes y otros.

Escenario

Nombre del dominio MIDOMINIO.COM.VE


Nombre del server AD ad = miserver.midominio.com.ve
IP del server AD 192.168.0.1
Nombre del cliente Linux miequipo
IP del cliente Linux 192.168.0.50

Pre-requisitos

DNS - Domain Name System

Edite el archivo /etc/resolv.conf y verifique que su Sistemas de Nombres de Domino (DNS) son los
correctos.

NTP

Verificar configuración de hora (NTP - Network Time Protocol, puerto 123 udp y tcp). Son
muchos los problemas de seguridad relacionados con un tiempo correcto. La
sincronización es muy importante en modelos de autenticación como Kerberos, que utiliza
marcas de tiempo como pruebas de frescura para evitar ataques por reenvío.

1. Instale el servicio NTP.


# yum install ntp
2. Use el comando date para observar si la fecha y hora son correctas. En caso de que
no lo sea use el comando ntpdate ip_del_servidor_de_hora (Ej. ntpdate 192.168.0.1)
3. Edite el archivo /etc/ntp.conf y configure los servidores para la sincronización de hora.
server 0.centos.pool.ntp.org (colocar el nombre o ip de su servidor
de hora)
server 1.centos.pool.ntp.org
4. Edite el archivo /etc/ntp/step-tickers y coloque la ip del servidor de hora.
192.168.0.1
192.168.0.x
5. Inicie los servicios de hora.
# service ntpd restart
# chkconfig –level 345 ntpd on

5
Hostname

1. Verifique la configuración del hostname:


1.1. Edite el archivo /etc/sysconfig/network y verifique el hostname (nombre del
equipo).

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=miequipo.midominio.com.ve

1.2. Edite el archivo /etc/hosts y verifique el nombre del hostname.

127.0.0.1 miequipo.midominio.com.ve miequipo


localhost.localdomain localhost
192.168.0.50 miequipo.midominio.com.ve miequipo

Configurar parámetros de red


Antes de continuar asegúrese de que el equipo con Linux cuente con la
siguiente configuración:

 IP del mismo rango que el Server Active Directory


 DNS utilizado por el Server Active Directory
 Debe responder el ping a miserver.midominio.com.ve

Proceso de Instalación

Instalando Kerberos

# yum list | grep krb5


krb5-devel.i386 1.6.1-36.el5_5.6 installed
krb5-libs.i386 1.6.1-36.el5_5.6 installed
krb5-workstation.i386 1.6.1-36.el5_5.6 installed
pam_krb5.i386 2.2.14-15 installed
freeradius2-krb5.i386 2.1.7-7.el5 base
krb5-auth-dialog.i386 0.7-1 base
krb5-server.i386 6.1-36.el5_5.6 updates
root-net-krb5.i386 5.28.00-1.el5.1 epel

En el ejemplo anterior usted puede observar el krb5-workstation, lo cual puede ser una opción para
la autenticación.

En caso de no estar instalado el krb5, entonces:

# yum install krb5-libs pam

Para autentificar los clientes linux contra el dominio ocuparemos Kerberos, por lo que
iniciaremos configurándolo y obteniendo un ticket de seguridad.

6
Configuración de Kerberos

Modificar el archivo krb5.conf, ubicado en "/etc", adecuándolo al caso particular de


cada dominio, quedando con la siguiente configuración.

[libdefaults]
default_realm = MIDOMINIO.COM.VE
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = yes

[realms]
MIDOMINIO.COM.VE = {
kdc = miserver.midominio.com.ve:88
admin_server = miserver.midominio.com.ve:749
default_domain = midominio.com.ve
}

[domain_realm]
.midominio.com.ve = MIDOMINIO.COM.VE
midominio.com.ve = MIDOMINIO.COM.VE
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

Una vez modificado el archivo krb5.conf debemos obtener un ticket, con el comando kinit,
entonces ejecutamos el siguiente comando:

# kinit usuario@MIDOMINIO.COM.VE
password for usuario@MIDOMINIO.COM.VE:

Si todo a salido bien tendremos un ticket kerberos para verificar usamos el comando
klist, el cual muestra todos los ticket actuales almacenados en nuestra maquina linux.

Ticket cache: FILE:/tmp/krb5cc_0


Default principal: usuario@MIDOMINIO.COM.VE

Valid starting Expires Service principal


06/22/06 09:14:36 06/22/06 19:17:59 krbtgt/MIDOMINIO.COM.VE@MIDOMINIO.COM.VE
renew until 06/23/06 09:14:36

Kerberos 4 ticket cache: /tmp/tkt0


klist: You have no tickets cached

El paso siguiente es modificar algunos archivos del sistema. Dos de los problemas más
comunes por los que no se puede obtener un ticket son:

 Porque, en el archivo krb5.conf algo a quedado mal escrito (verificar muy bien
7
minúsculas y mayúsculas) o,
 Porque la diferencia de hora entre el servidor kerberos y nuestra maquina supera los 5
minutos (para solucionar esto puedes utilizar ntp), también puede suceder que cliente
linux no logra encontrar el servidor kerberos configurado.

Si todo está bien, simplemente debería aparecer el promt (#).

Instalando Samba

# yum install samba3x samba3x-client samba3x-winbind

Editar /etc/samba/smb.conf y cambiar las siguientes líneas:

[global]
workgroup = MIDOMINIO
server string = Samba Server Version %v

security = ads
passdb backend = tdbsam

realm = MIDOMINIO.COM.VE

idmap uid = 50001-550000


idmap gid = 50001-550000
winbind separator = +
winbind nested groups = Yes
winbind enum users = no
winbind enum groups = no
log level = 3

En security=ads le dice que va a ser miembro de un Active Directory, winbind es el


servicio que va a mapear (idmap uid y idmap gid) los usuarios y grupos del dominio a ID
de usuarios y grupos para que parezcan locales y que sean válidos para el nuestro Linux.

Cabe aclarar que La configuración del demonio winbindd se realiza mediante ciertos
parámetros en el fichero smb.conf. Todos los parámetros se deben especificar en la
sección [global] de smb.conf.

Iniciamos samba:

# service smb start


# chkconfig –level 345 smbd on
# service winbind start
# chkconfig --level 345 winbind on

0Unimos el cliente Linux al dominio Windows

# net ads join -S miserver.midominio.com.ve -U administrador

Nos deberá mostrar un mensaje como el siguiente:

Using short domain name -- MIDOMINIO


Joined 'MIEQUIPO' to realm 'MIDOMINIO.COM.VE'
8
Otra manera de realizar lo anterior es como sigue:

# net join -S PDC -U Administrador


El usuario tras el -U puede ser cualquier usuario del dominio que tenga privilegios
administrativos en la máquina. Sustituya el nombre o IP de su PDC por "PDC".

Resolver nombres de usuarios y grupos de dominio

Editar "/etc/nsswitch.conf" y modificar las siguientes líneas dejándolas de la siguiente


forma:

passwd: files winbind


group: files winbind
shadow: files winbind
hosts: files dns winbind

Reiniciamos winbind

# service winbind restart

Gracias a lo anterior los usuarios y grupos del dominio pueden ser resueltos.

Pruebas

Verificar la integración del dominio

# net rpc testjoin

Mostrará el siguiente resultado:

Join to 'MIDOMINIO' is OK

# net ads info (Muestra información del dominio)

LDAP server: 192.168.0.1


LDAP server name: miserver.midominio.com.ve
Realm: MIDOMINIO.COM.VE
Bind Path: dc=MIDOMINIO,dc=COM,dc=VE
LDAP port: 389
Server time: mar, 08 mar 2011 17:04:39 VET
KDC server: 192.168.0.1
Server time offset: 1

# net rpc info -U Usuario_de_dominio (Muestra el dominio al que


pertenece, número de usuarios, grupos, etc.)

Domain Name: MIDOMINIO


Domain SID: x-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx
Sequence number: xx
Num users: xx
9
Num domain groups: xx
Num local groups: xx

Verificar winbind

"wbinfo -u" lista usuarios del dominio.


"wbinfo -g" lista grupos del dominio.
"getent passwd" muestra usuarios locales y del dominio.
"getent group" muestra grupos locales y del dominio.

Referencias
http://www.lgs.com.ve/
http://www.bdat.com/documentos/samba/html/winbind.html
http://www.patricioleon.cl/articulos/53-unir-samba-a-un-dominio-de-windows
http://www.kerberos-walkthrough.de/
http://www.youtube.com/watch?v=b2BdTXb5nds
http://www.esdebian.org/articulos/24000/unir-debian-dominio-active-directory

10