Академический Документы
Профессиональный Документы
Культура Документы
TUTORIAL
AUTENTIFICACIÓN LDAP
CONTRA SAMBA
ANTONIO JESÚS
DUEÑAS QUESADA
Pág. - 2 -
CURSO 2006/07
INDICE DE CONTENIDOS
1. INTRODUCCIÓN…………………………………………………………………... 4
5. TUTORIAL………………………………………………………………………… 17
5.1. LDAP…………………………………………………………………………. 17
5.1.1. Conceptos teóricos………………………………………………………. 17
5.1.2. Instalación…………………………………………………...................... 18
5.1.3. Configuración……………………………………………………………. 26
5.2. PHPLDAPADMIN……………………………………………………………. 26
5.2.1. Conceptos teóricos………………………………………………………. 26
5.2.2. Instalación……………………………………………………………….. 26
5.2.3. Configuración……………………………………………………………. 27
5.3. AUTENTIFICACIÓN DE USUARIOS A TRAVÉS DE OpenLDAP……….. 31
5.3.1. Instalación del software necesario………………………………………. 31
5.3.1.1. Instalación pam_ldap……………………………………………… 31
5.3.2.3. /etc/pam.d/common-account……………………………………… 43
5.3.2.4. /etc/pam.d/common-auth………………………………………….. 43
5.3.2.5. /etc/pam.d/common-session………………………………………. 43
Pág. - 3 -
5.3.2.6. /etc/pam.d/common-passwd………………………………………. 44
5.3.2.7. Comprobando que todo funciona…………………………………. 44
5.4. SAMBA……………………………………………………………………….. 45
5.4.1. Conceptos teóricos………………………………………………………. 45
5.4.2. Instalación……………………………………………………………….. 49
5.4.3. Configuración SAMBA…………………………………………………. 51
7. CONCEPTOS FINALES…………………………………………………………… 59
7.1. Concepto de recursos utilizados……………………………………………….. 59
7.2. Conclusión…………………………………………………………………….. 60
8. ANEXOS……………………………………………………………………………. 60
9. RESULTADOS……………………………………………………………………... 60
Pág. - 4 -
1. INTRODUCCIÓN.
Si alguna vez ha tenido que realizar labores de administración en redes heterogéneas, en las
cuales existan múltiples clientes, y cada uno de ellos pueda tener un sistema operativo distinto,
sobre el cual puedan operar una infinidad de usuarios; se habrá dado cuenta de la complejidad que
esto conlleva. Por poner un simple ejemplo, si no posee una base de datos de usuarios común a
todos los clientes, tendría que dar de alta a cada nuevo cliente en cada una de las máquinas que
quisiese utilizar. Piense ahora que ocurriría si, por un cambio de política de su empresa, se tenga
que modificar cierto aspecto en todas las cuentas de los usuarios existentes...
Este proyecto intenta presentar un método para facilitar la integración de este tipo de redes. La
idea es utilizar un directorio LDAP como base de datos común para almacenar la información
relativa a los usuarios (bien sea la información personal, la relativa a las cuentas Unix, la relativa a
las cuentas Samba/Windows o bien las cuotas de impresión asociadas a un usuario o grupo de
usuarios).
2. HARDWARE
Para montar estos servicios, necesitamos una maquina mínima citada en el apartado 1.4., estas
características son las mínimas recomendadas por el Sistema Operativo que vamos a utilizar
Ubuntu 7.04 Server.
La parte hardware es muy importante a tener en cuenta, debido que según sus características
pueden ir bien o ralentizar nuestros servicios.
1. Reciben entradas. La entrada son los datos que se capturan en un sistema de computación
para su procesamiento.
2. Producen salidas. La salida es la presentación de los resultados del procesamiento.
3. Procesan información
4. Almacenan información
1. Dispositivos de entrada
2. Dispositivos de salida
Pág. - 6 -
Cada dispositivo de entrada es sólo otra fuente de señales eléctricas; cada dispositivo de salida
no es más que otro lugar al cual enviar señales; cada dispositivo de almacenamiento es lo uno o lo
otro, dependiendo de lo que requiera el programa; no importa cuáles sean los dispositivos de
entrada y salida si son compatibles. Los elementos fundamentales que justifican el uso de las
computadoras, radican en que las computadoras son:
Útiles.
Baratas: tanto con respecto a sí mismas como con respecto al costo de la mano de obra.
Fáciles de utilizar.
Tecnologías y avances
1ª generación: Con tubos de vacío, tubos de vidrio del tamaño de una bombilla que
albergaban circuitos eléctricos. Estas máquinas eran muy grandes caras y de difícil
operación.
2ª generación: con transistores. Máquinas más pequeñas, confiables y económicas.
3ª generación: Con la tecnología que permitió empaquetar cientos de transistores en un
circuito integrado de un chip de silicio.
4ª generación: con el microprocesador, que es una computadora completa empaquetada
en un solo chip de silicio.
3. SOFTWARE
El término «software» fue usado por primera vez en este sentido por John W. Tukey en 1957.
En las ciencias de la computación y la ingeniería de software, el software es toda la información
procesada por los sistemas informáticos: programas y datos. El concepto de leer diferentes
secuencias de instrucciones de la memoria de un dispositivo para controlar cálculos fue inventado
por Charles Babbage como parte de su máquina diferencial. La teoría que forma la base de la
mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de
1936, Los números computables, con una aplicación al problema de decisión.
o Sistemas de ventanas
o Utilidades
Software de aplicación, que permite a los usuarios llevar a cabo una o varias tareas más
específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido,
con especial énfasis en los negocios. Incluye entre otros:
o Aplicaciones de automatización industrial
o Aplicaciones ofimáticas
o Software educativo
o Software médico
o Bases de datos
o Videojuegos
Las funciones básicas que tiene un S.O., es la de Gestionar los recursos del equipo ejecutando
servicios para los procesos (programas), y brindar una interfaz al usuario, ejecutando una serie de
instrucciones o comandos.
- La CPU
- Los memoria
- Los dispositivos de E/S
- Las colas de procesos
- Administrar los recursos
Un S.O. está considerado como un programa, que ha alcanzado un tamaño muy grande,
debido a que tiene que ser capaz de realizar muchas tareas. Por esta razón el construir un S.O. es
debido dividirlo en componentes mas pequeños para que sea de capaz de organizarse para poder
realizar todas estas tareas, y podemos dividir estos componentes en,
Pág. - 8 -
- Gestión de procesos
- Gestión de memoria
- Gestión de archivos y directorios
- Gestión de la E/S
- Seguridad y protección
- Comunicación y sincronización entre procesos
- Intérprete de ordenes
Aparte de gestionar sus recursos y tener unos componentes, debe de tener unas características
que se pueden agrupar de las siguientes,
Administración de tareas:
o Monotarea: Si solamente puede ejecutar un proceso (aparte de los procesos del
propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso,
continuará haciéndolo hasta su finalización o interrupción.
o Multitarea: Si es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de
S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos)
de forma alternada a los procesos que los solicitan, de manera que el usuario
percibe que todos funcionan a la vez, de forma concurrente.
Administración de usuarios:
o Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo
tiempo.
o Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus
programas, accediendo a la vez a los recursos de la computadora. Normalmente
estos SS.OO. utilizan métodos de protección de datos, de manera que un
programa no pueda usar o cambiar los datos de otro usuario.
Manejo de recursos:
o Centralizado: Si permite utilizar los recursos de una sola computadora.
o Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos...
) de más de una computadora al mismo tiempo.
1. cuotas
2. cifrado y compresión de archivos, carpetas y no unidades completas.
3. permite montar dispositivos de almacenamiento sobre sistemas de archivos de otros
dispositivos al estilo unix
Actualmente existen cuatro versiones de Windows 2003, aunque todas ellas cuentan a su vez
con versiones de 32 y 64 bits (excepto Web Edition). Las versiones son:
Las diferencias entre las versiones, explicadas en mayor detalle, pueden encontrarse en la Web de
Microsoft
http://www.microsoft.com/spain/windowsserver2003/evaluation/choosing/default.aspx
Para este proyecto necesitaríamos la versión del 2003 Server la Standard Edition, y al ser
un software de pago tiene un coste que expongo en el presupuesto desde la web de Dynos
(www.dynos.es).
Pág. - 10 -
Historia
De acuerdo con sus fundadores, Debian era un proyecto demasiado burocrático donde no
existían responsabilidades definidas y donde cualquier propuesta interesante se ahogaba en un mar
de discusiones. Asimismo, Debian no ponía énfasis en estabilizar el desarrollo de sus versiones de
prueba y sólo proporcionaba auditorías de seguridad a su versión estable, la cual era utilizada sólo
por una minoría debido a la poca o nula vigencia que poseía en términos de la tecnología Linux
actual.
Tras varios meses de trabajo y un breve período de pruebas, la primera versión de Ubuntu
(Warty Warthog) fue lanzada el 20 de octubre de 2004.
Características
Pág. - 11 -
No sólo tiene como lazo a Debian el uso del mismo formato de paquetes deb, Ubuntu
tiene uniones muy fuertes con esa comunidad, contribuyendo cualquier cambio
directamente e inmediatamente, más que anunciándolos. Esto sucede en los tiempos de
lanzamiento. Muchos de los desarrolladores de Ubuntu son también responsables de los
paquetes importantes dentro de la distribución de Debian.
Todos los lanzamientos de Ubuntu se proporcionan sin costo alguno. Los CDs de la
distribución se envían de forma gratuita a cualquier persona que los solicite mediante el
servicio ShipIt (la versión 6.10 no se llegó a distribuir de forma gratuita en CD's, pero la
versión 7.04 si se distribuye). También es posible descargar las imágenes ISO de los
discos por transferencia directa o bajo la tecnología Bittorrent.
Ubuntu no cobra honorarios por la suscripción de las mejoras de la "Edición Enterprise".
Ubuntu al ser un Software Libre es gratuito, y como antes he mencionado se puede descargar
desde distintos sitios de la red, e incluso pedir los CDs y que los traigan a casa.
Nuestra base es un sistema operativo libre basado en el proyecto GNU, dicho proyecto fue
iniciado por Richard Stallman, cuyo objetivo era crear un sistema operativo completamente libre,
que en el año 1985 Stallman creó la Free Software Foundation (FSF o Fundación para el Software
Libre) para proveer soportes logísticos, legales y financieros al proyecto GNU. La FSF también
contrató programadores para contribuir a GNU, aunque una porción sustancial del desarrollo fue
(y continúa siendo) producida por voluntarios. A medida que GNU ganaba renombre, negocios
interesados comenzaron a contribuir al desarrollo o comercialización de productos GNU y el
correspondiente soporte técnico. El más prominente y exitoso de ellos fue Cygnus Solutions, ahora
parte de Red Hat.
En 1991, Linus Torvalds empezó a escribir el núcleo Linux y decidió distribuirlo bajo la GPL.
Rápidamente, múltiples programadores se unieron a Linus en el desarrollo, colaborando a través
de Internet y consiguiendo paulatinamente que Linux llegase a ser un núcleo compatible con
UNIX. En 1992, el núcleo Linux fue combinado con el sistema GNU, resultando en un sistema
operativo libre y completamente funcional. El sistema operativo formado por esta combinación es
usualmente conocido como "GNU/Linux" o como una "distribución Linux" y existen diversas
variantes.
A raíz de este hecho empezó a desarrollarse las primeras distribuciones Linux. Y una vez
comentado la base, tenemos que especificar que la distribución de Linux que vamos a usar es
la Ubuntu 7.04 Server.
Estas son algunas de las razones que he elegido este S.O., pero sobre todo porque es gratuito y
estoy a favor del Software Libre, creo que debería de ser todo el software así para poder crecer y
mejorar los programas.
Además Ubuntu 7.04 necesita menos requisitos que Windows 2003 Server, y al necesitar
menos requisitos implica que la maquina no debe de ser tan potente y tan cara para montar el S.O.
y sus recursos. De esta manera ahorramos costes en nuestro proyecto.
Pág. - 13 -
4. COSTES DE PROYECTO
En nuestro proyecto debemos de tener mínimo 2 ordenadores, uno para que actúe de
Servidor y otro de Cliente. A continuación presento 2 Presupuestos de una maquina servidor y otra
maquina genérica.
PRESUPUESTO SERVIDOR
Poweredge SC440 (SC064401)
299,00 €
Precio sin IVA, gastos de envío excluidos (99 € sin IVA) (salvo disposición
contraria)
Base:
Dual Core Intel® Xeon® 3040 Processor at 73347 [210-16898] 1
1.86GHz, 2MB L2 cache, 1066MHz FSB
Enhanced Service Packs:
9812 [680-11460] 30
Sin ampliación de garantía
Memory:
512MB DDR2 SDRAM 667MHz Memory 73362 [370-12593] 3
(1x512MB single ranked DIMMs)
Raid Connectivity:
C1 - SATA de placa base con cable, 1 disco
73373 [780-10796] 35
duro conectado a un controlador SATA
integrado, sin RAID
1st Hard Drive:
160GB, SATA, 3.5-inch, 7.200 rpm Hard 73370 [400-12937] 668
Drive
Shipping Documents:
73351 [340-14001] 21
Spanish Documentation, Euro Power Cord
Elija su chasis:
Chasis de torre del servidor PE SC440 (Nivel 73365 [350-10188] 116
5)
Monitor:No se necesita monitor 6040 [480-11024] 5
Mouse:
71303 [570-10291] 12
Sin ratón instalado de fábrica
Keyboard:
7328 [580-11029] 4
No se necesita teclado
Pág. - 14 -
Administración de sistemas:
73378 [631-10117] 49
CD de Open Manage con drivers
[688-
Standard Warranty:
75269 10587][688- 29
Garantía base
10588]
Order Information:
97485 [800-11310] 111
Petición de PowerEdge - España
Optical Devices:
71267 [429-12298] 16
Unidad combo de DVD/CDRW 48X
Floppy Drives and Additional Storage
Devices: 38498 [385-10321] 10
No se necesita disquetera
Factory Installed Operating System:
8014 [611-10037] 285
SC - Sin sistema operativo
Installation Services:
Ha optado por no elegir el servicio de 75313 [683-11870] 32
instalación de PowerEdge de Dell
Este es el presupuesto de la maquina que hará de servidor su precio es de 299€ sin IVA,
incluyendo el IVA que sería de un 16 % con un coste total de 346.84 €
Componentes
PROCESADOR Intel® Core™ 2 Duo E6320 Processor (1.86GHz, 1066MHz, 4MB)
SISTEMA OPERATIVO Windows Vista™ Ultimate original (32 bits) - Español
SERVICIO DE Paquete básico, 3 años de servicio a domicilio
ASISTENCIA
MONITOR Pantalla plana panorámica de Dell™ de 20" en negro (E207WFP) - Europeo
MEMORIA Memoria de 2048 MB de canal dual con DDR2 de 533 MHz (2x1024)
UNIDAD DE DISCO Unidad de disco duro no RAID de 500 GB (2x250 GB- 7200 rpm)
DURO
TARJETA GRÁFICA Tarjeta gráfica PCI Express Pro X1300; ATI® Radeon® de 256 MB
UNIDAD(ES) ÓPTICA(S) Unidad de DVD+/-RW 16 X
TECLADO Teclado Quietkey USB básico de Dell - Español (QWERTY)
RATÓN Ratón óptico USB de Dell con 2 botones de desplazamiento - negro
Pág. - 15 -
Accesorios
TARJETAS DE SONIDO Audio integrado con función Dolby Digital 7.1
ALTAVOCES Sin altavoces
DISQUETERA/UNIDADES Lector interno de tarjetas de medios 13 en 1
EXTERNAS
MÓDEMS Sin módem
SOFTWARE DE Sin protección de seguridad/Anti-Virus - Español
SEGURIDAD
SOFTWARE DE Microsoft® Works 8.0 - Español
MICROSOFT
Este Ordenador tiene un coste de 783.99 € Sin IVA, sumándole el IVA del 16 % hace un
total de 909,43 €
69,90 €
Descripción
Especificaciones Generales:
Switch que soporta hasta 1Gb de transferencia de datos, y a continuación los latiguillos
de categoría 5e y UTP para que pueda soportar dicha transferencia de datos.
STEY
1,00 €
Ref: D45498G
Descripción
Como necesitamos 2 latiguillos 1 para el servidor y otro para el ordenador, hace un total
de 2 € IVA incluido, este pedido de Switch + 2 Latiguillos lo pediríamos en Dynos.es, haciendo un
total con IVA INCLUIDO de 71.90 €.
Ambos pedidos de las maquinas como de Dynos tienen un plazo de entrega de 5 días, a
partir de la fecha de pedido.
Aparte necesitamos una conexión a Internet para poder descargar de los repositorios de
Ubuntu los paquetes que vamos a necesitar, estudiando las ofertas del mercado:
ONO
Telefónica
TELE2
Estudiando la oferta, escogeremos TELE2 que tiene más Mbs de Bajada y su cuota es la mas
barata al mes.
5. TUTORIAL
5.1. LDAP
5.1.1. Conceptos teóricos
¿Qué es LDAP?
LDAP son las siglas de Lightweight Directory Access Protocol. Como su propio nombre
indica, es un protocolo ligero para acceder al servicio de directorio, especialmente al basado en
X.500. LDAP se ejecuta sobre TCP/IP o sobre otros servicios de transferencia orientado a
conexión. La definición detallada de LDAP está disponible en el RFC2251 “The Lightweight
Directory Access Protocol (v3)” y en otro documento que comprende las especificaciones técnicas,
RFC3377
El modelo de información de LDAP está basado en entradas. Una entrada es una colección de
atributos que tienen un único y global Nombre Distinguido (DN). El DN se utiliza para referirse a
una entrada sin ambigüedades. Cada atributo de una entrada posee un tipo y uno o más valores.
Los tipos son normalmente palabras nemotécnicas, como “cn” para common name, o “mail” para
una dirección de correo. La sintaxis de los atributos depende del tipo de atributo. Por ejemplo, un
atributo cn puede contener el valor “Antonio J. Dueñas”. Un atributo email puede contener un
valor “ajduenas@iesvirgendelcarmen.com”.
ARBOL DE DIRECTORIO
DAP define operaciones para interrogar y actualizar el directorio. Provee operaciones para
añadir y borrar entradas del directorio, modificar una entrada existente y cambiar el nombre de una
Pág. - 18 -
entrada. La mayor parte del tiempo, sin embargo, LDAP se utiliza para buscar información
almacenada en el directorio. Las operaciones de búsqueda de LDAP permiten buscar entradas que
concuerdan con algún criterio especificado por un filtro de búsqueda. La información puede ser
solicitada desde cada entrada que concuerda con dicho criterio.
Ejemplo:
Nosotros queremos acceder a la información de una persona, pongamos Antonio, pues
bien, debemos de introducir, dn=iesvirgendelcarmen,dc=com,ou=alumnos,cn=antonio
El primer paso para instalar OpenLDAP, es instalar los paquetes slapd y ldap-utils.
Veamos el procedimiento,
1. Abrimos la consola
2. Nos identificamos como root, e introducimos la contraseña.
# sudo su
3. Procedemos a la instalación,
Si se quiere configurar algunos aspectos de slapd a través de debconf, responda No, en esta
pantalla.
Esta pantalla se pide el dominio sobre el cual se va a ejecutar el servidor slapd, en este caso será el
dominio iesvirgendelcarmen.com.
Solicitud del nombre de la organización que está instalando el servidor OpenLDAP. En este
ejemplo se dejará el nombre del dominio anteriormente tecleado:
iesvirgendelcarmen.com.
Pantalla de solicitud de la clave para el administrador del servicio LDAP. Este usuario es el
superusuario (root) de OpenLDAP, por lo que se debería elegir una buena clave.
Recomendación
Elección del backend de la base de datos que utilizará OpenLDAP. En este ejemplo se elegirá
BDB.
Tenga cuidado con la elección de esta pantalla, puede perder los datos almacenados en la
base de datos de OpenLDAP si "accidentalmente" se desinstala slapd.
Observaciones a la instalación
- Una vez más, dependiendo de cómo se encuentre su sistema y los paquetes que tenga
instalados en el mismo, se instalarán y sugerirán más o menos dependencias a la hora de
instalar OpenLDAP.
- La siguiente captura muestra la información relativa a los paquetes que se acaban de
instalar (dependencias, sugerencias de instalación, etc).
- # apt-cache show slapd ldap-utils
- Package: slapd
- Priority: optional
- Section: net
- Installed-Size: 2516
- Maintainer: Torsten Landschoff <torsten@debian.org>
- Architecture: i386
- Source: openldap2
- Version: 2.1.30-1
- Provides: ldap-server
- Depends: libc6 (>= 2.3.2.ds1-4), libdb4.2, libgcrypt7,
- libgnutls10 (>= 1.0.0-0), libgpg-error0 (>= 0.7),
- libiodbc2 (>= 3.51.2-2), libldap2 (>= 2.1.17-1),
- libltdl3 (>= 1.5.2-2), libsasl2 (>= 2.1.18), libslp1,
- libtasn1-2 (>= 0.2.7), libwrap0, zlib1g (>= 1:1.2.1),
- debconf (>= 0.5), coreutils (>= 4.5.1-1) | fileutils (>= 4.0i-1),
- psmisc, libldap2 (= 2.1.30-1), perl (>> 5.8.0) | libmime-base64-perl
- Recommends: db4.2-util, libsasl2-modules
- Suggests: ldap-utils
- Conflicts: umich-ldapd, ldap-server, libbind-dev, bind-dev,
- libltdl3 (= 1.5.4-1)
- Filename: pool/main/o/openldap2/slapd_2.1.30-1_i386.deb
- Size: 940506
- MD5sum: 3cc284bf5c0bc8da52a5aabc61c56ca7
- Description: OpenLDAP server (slapd)
- This is the OpenLDAP (Lightweight Directory Access Protocol) standalone
- server (slapd). The server can be used to provide a standalone directory
- service and also includes the slurpd replication server.
-
- Package: ldap-utils
- Priority: optional
- Section: net
- Installed-Size: 328
- Maintainer: Torsten Landschoff <torsten@debian.org>
- Architecture: i386
- Source: openldap2
- Version: 2.1.30-1
- Replaces: openldap-utils, slapd (<< 2.1.25), openldapd
- Provides: ldap-client, openldap-utils
- Depends: libc6 (>= 2.3.2.ds1-4), libdb4.2, libgcrypt7,
- libgnutls10 (>= 1.0.0-0), libgpg-error0 (>= 0.7),
- libiodbc2 (>= 3.51.2-2), libldap2 (>= 2.1.17-1),
- libltdl3 (>= 1.5.2-2), libsasl2 (>= 2.1.18), libslp1,
- libtasn1-2 (>= 0.2.7), zlib1g (>= 1:1.2.1), libldap2 (= 2.1.30-1)
- Recommends: libsasl2-modules
- Conflicts: umich-ldap-utils, openldap-utils, ldap-client
- Filename: pool/main/o/openldap2/ldap-utils_2.1.30-1_i386.deb
- Size: 113996
- MD5sum: 2842fec02d967bbf70943def051d9f58
- Description: OpenLDAP utilities
- Utilities from the OpenLDAP (Lightweight Directory Access Protocol)
Pág. - 26 -
# cd /usr/share/doc/samba-doc/examples/LDAP
# gunzip samba.schema.gz
# cp samba.schema /etc/ldap/schema/
Y relanzamos el LDAP
# /etc/init.d/slapd restart
5.2. PHPLDAPADMIN
5.2.1. Conceptos teóricos
PHPLDAPADMIN no es más que un interfaz de configuración del LDAP, del que
controla el acceso de los usuarios y directivas. Esta interfaz está realizada con PHP, para poder ser
ejecutada en el navegador de internet. (Internet Explorer, Mozilla, Firefox).
- Instalamos MySQL
# apt-get install mysql-server-5.0 mysql-common mysql-client-5.0
Una vez instalados los paquetes del PHP5, debemos de descomentar estas líneas en el
siguiente archivo.
/etc/apache2/apache.conf
AddType application/x-httpd-php .php .php3 .php4
AddType application/x-httpd-php-source .phps
#samba3_domains[] =
array( 'name' => 'IESvirgendelcarmen.com',
'sid' => 'S-1-5-21-4147564533-719371898-3834029857' );
#samba3_domains[] =
array( 'name' => 'iesvirgendelcarmen',
'sid' => 'S-1-5-21-2620819820-906013693-4274777306' );
Phpldapadmin requiere una utilidad llamada mkntpwd para crear las contraseñas Samba
hashes. esta incluida en smbldap-tools pero esta no parece estar incluida para Debian así que se
requiere descargarla.
# cd /opt/
# wget http://www.iesvirgendelcarmen.com.pe/soft/mkntpwd.tar.gz
# tar -zxf mkntpwd.tar.gz
# cd mkntpwd
# make
# cp mkntpwd /usr/local/bin
# mkntpwd
ENTORNO GRÁFICO
Después de esto, debemos de ingresar grupos por defecto, una vez dentro de
http://192.168.1.20/phpldapadmin/ (en nuestro caso) nos identificamos y creamos algunos
grupo por defecto, para crearlos debemos usar Samba 3 Grpup Mapping sobre ou=grupos
o Unix name Samba Name gid Samba gid
Pág. - 29 -
Señalamos Create next entry here, señalamos Samba Group Mapping y le damos a Proceed.
Una vez creado el objeto, introducimos en Group el nombre del grupo, en este caso GROUPS, y
en users, los usuarios que queramos crear en dicho grupo, yo he creado Antonio y manolo.
Pág. - 30 -
Esta página nos indica el resumen de lo que vamos a crear, si estamos conformes pulsamos en
Create Object y ya estará creado nuestro primer grupo SAMBA.
Como vemos a la izquierda viene ya creado el grupo como, cn=groups y a la derecha vemos la
información de dicho grupo.
Una vez explicado como se crea los grupos ahora debemos de crear, el grupo machines, users,
pudiéndolos cambiar por grupos, profesores, usuarios. A continuación veremos una captura de
cómo quedaría estructurado. También decir que esta captura no corresponde a nuestro datos,
porque estos datos están alterados bajo otro dominio, en este caso silcom.com.pe pero en este
tutorial nos basamos en iesvirgendelcarmen.com
Pág. - 31 -
Introducción
En este apartado se verá como configurar una máquina para que sus usuarios se autentifiquen
a través de un servidor LDAP. Para ello se han de modificar dos aspectos del comportamiento del
sistema:
El mapeado entre los números de identificación de los usuarios y sus nombres (utilizados,
por ejemplo, por /bin/ls -l) o la localización del directorio home. La búsqueda de este tipo
de información es responsabilidad del servicio de nombres, cuyo archivo de
configuración es: /etc/nsswitch.conf.
La autentificación (comprobación de claves), que es responsabilidad del subsistema
PAM, cuya configuración se hace a través del directorio /etc/pam.d/
Ambos subsistemas se han de configurar separadamente, pero en este caso, ambos se van a
configurar de tal forma que hagan uso de LDAP.
En este apartado sólo se trata la instalación y configuración de los dos aspectos arriba
expuestos, de todas formas, hay un tercer punto que, en sistemas en producción, sería interesante
abordar: la caché del servicio de nombres.
En Debian GNU/Linux el paquete libpam-ldap provee esta funcionalidad, por lo que será
instalado en la máquina, como muestra el Ejemplo 5-2
Instalación de libpam-ldap
Antes de continuar se van a configurar algunos aspectos del paquete libpam-ldap. Para
ello es necesario ejecutar el siguiente comando:
En este ejemplo no se necesita autentificarse para acceder a la base de datos LDAP, por lo
que se responde que NO.
Administrador de LDAP
El método de encriptación elegido para almacenar las claves ha sido "exop", de esta
forma pam-ldap utilizará el algoritmo de hash especificado en el archivo /etc/ldap/slapd.conf, en
lugar de realizar la operación hash localmente y escribir el resultado en la base de datos
directamente.
El archivo /etc/pam_ldap.conf se ha de poder leer por todos los usuarios del sistema,
para asegurarse de que es legible por todo el mundo, puede ejecutar: /bin/chmod 644
/etc/pam_ldap.conf.
En estos momentos el sistema ya está listo para la configuración de los distintos servicios
que utilizan PAM, de forma que estos utilicen LDAP para la comprobación de la clave. Cada
servicio que hace uso de PAM para la autentificación, posee su propio archivo bajo el directorio
/etc/pam.d/. Para que dicho servicio utilice LDAP en la comprobación de claves, se ha de
modificar su archivo de configuración. Esto se verá en la Sección 5.3.2.
nss-ldap permite a un servidor LDAP actuar como un servidor de nombres. Esto significa
que provee la información de las cuentas de usuario, los IDs de los grupos, la información de la
máquina, los alias, los grupos de red y básicamente cualquier cosa que normalmente se obtiene
desde los archivos almacenados bajo /etc o desde un servidor NIS.
Pág. - 37 -
En Debian GNU/Linux el paquete libnss-ldap provee esta funcionalidad, por lo que será
instalado en la máquina, como muestra el Ejemplo 5-5
Instalación de libnss-ldap
Version: 211-4
Depends: libc6 (>= 2.3.2-1), libdb4.1, libldap2 (>= 2.1.17-1), debconf
Recommends: nscd, libpam-ldap
Filename: pool/main/libn/libnss-ldap/libnss-ldap_211-4_i386.deb
Size: 68052
MD5sum: c7fbc3504f8429655742e6a8cc7ec54c
Description: NSS module for using LDAP as a naming service
This package provides a Name Service Switch that allows your LDAP server
act as a name service. This means providing user account information,
group id's, host information, aliases, netgroups, and basically anything
else that you would normally get from /etc flat files or NIS.
.
If used with glibc 2.1's nscd (Name Service Cache Daemon) it will help
reduce your network traffic and speed up lookups for entries.
En este ejemplo no se necesita autentificarse para acceder a la base de datos LDAP, por lo que se
responde: NO.
Es buena idea que sólo el propietario del archivo pueda leer su información, máxime
cuando este puede tener claves. Por este motivo se responde que Sí a esta pregunta.
Pág. - 41 -
Cuenta para hacer consultas con privilegios de root y e introducimos la clave para la
cuenta admin
5.3.2.1. /etc/nsswitch.conf
La forma de configurar este archivo es muy simple: primero se especifica la base de datos
sujeta a la búsqueda (primera columna) seguida del procedimiento que se va a emplear para
realizar una búsqueda sobre la misma (columnas siguientes).
De esta forma, basta con configurar el procedimiento de búsqueda para que haga uso de
LDAP en algún momento.
Una vez realizada la configuración, se puede comprobar que todo funciona bien con el
comando getent seguido de la base de datos de búsqueda deseada (por ejemplo: #getent hosts).
Como resultado se mostrará la base de datos consultada por pantalla.
Pág. - 43 -
PAM permite configurar el método de autentificación que van a utilizar las aplicaciones
que hagan uso de él. Gracias a esto, se pueden añadir fácilmente distintas opciones de
autentificación, como el uso de una base de datos LDAP.
En las siguientes secciones se mostrarán los archivos que se han de modificar para lograr
la autentificación a través de LDAP.
Un buen punto de partida, sería ojear los archivos almacenados bajo /etc/pam.d/ y
comprobar las diferencias entre los archivos con extensión .dpkg-dist y los que no la tienen.
pam-ldap asume que las cuentas del sistema son objetos con los siguientes atributos: uid y
userPassword. Los atributos están permitidos por la clase objeto (objectClass) posixAccount.
5.3.2.3. /etc/pam.d/common-account
5.3.2.4. /etc/pam.d/common-auth
5.3.2.5. /etc/pam.d/common-session
Si desea que el sistema sea capaz de crear directorios home "al vuelo" (piense en el
siguiente caso: acaba de añadir un usuario en la base de datos LDAP, pero no ha creado un
directorio home para este usuario en el sistema), puede utilizar el módulo pam_mkhomedir para
este propósito. Para ello añada la siguiente línea al principio del archivo common-session:
5.3.2.6. /etc/pam.d/common-passwd
Ahora que ya está el sistema preparado para hacer uso de LDAP en la autentificación de
los usuarios, sería recomendable hacer algunas pruebas con la nueva configuración para ver si todo
funciona correctamente.
El comando pamtest puede ayudar a realizar estas pruebas. pamtest acepta dos
parámetros: el primero es el nombre del servicio al cual se va a conectar para realizar la
autentificación, el segundo es el nombre del usuario que se va a autentificar sobre dicho servicio.
Veamos unos ejemplos:
Una vez se ha llegado a este punto, el sistema ya está preparado para autentificar a los usuarios a
través de LDAP.
5.4. SAMBA
5.4.1. Conceptos Teóricos
Introducción
Samba es una herramienta de red extremadamente útil para cualquier persona que posea
en su red sistemas Unix y Windows. Samba se ejecuta en un sistema Unix, permitiendo a los
sistemas Windows compartir archivos e impresoras en la máquina Unix, a la vez que los usuarios
de Unix tienen acceso a los recursos compartidos en los sistemas Windows.
Aunque parece natural hacer uso de servidores Windows para servir archivos e
impresoras en una red donde haya clientes Windows, hay buenas razones para elegir un servidor
Samba para estos servicios. Samba es un software confiable que corre en un sistema operativo
confiable como Unix, dando como resultado la obtención de menos problemas y bajo coste de
mantenimiento. A parte de esto, Samba ofrece mejor rendimiento ante cargas de trabajo
extremadamente duras, sobrepasando a un servidor Windows 2000 en un factor de 2 a 1 en un PC
con la misma configuración de hardware, de acuerdo con unos benchmarks publicados por
terceros. Cuando un PC ya no pueda acometer las peticiones de los clientes, debido a la alta carga,
el servidor Samba se puede trasladar fácilmente a un mainframe Unix propietario, el cual puede
sobrepasar en mucho a un PC corriendo Windows. Si todo esto no fuese suficiente, Samba posee
una ventaja muy buena en relación al coste: es libre. No sólo el software está a su disposición
libremente, sino que no necesita ningún tipo de licencia para los clientes, ejecutándose en sistemas
operativos de gran calidad y libres, como GNU/Linux y FreeBSD.
¿Qué es SAMBA?
Samba es una suite de aplicaciones Unix que habla el protocolo SMB (Server Message
Block). Los sistemas operativos Microsoft Windows y OS/2 utilizan SMB para compartir por red
archivos e impresoras y para realizar tareas asociadas. Gracias al soporte de este protocolo, Samba
permite a las máquinas Unix entrar en el juego, comunicándose con el mismo protocolo de red que
Microsoft Windows y aparecer como otro sistema Windows en la red (desde la perspectiva de un
cliente Windows). El servidor Samba ofrece los siguientes servicios:
La suite Samba también incluye herramientas para los clientes, que permiten a los usuarios de
un sistema Unix acceder a los directorios e impresoras que los sistemas Windows y servidores
Samba comparten en la red.
Pág. - 46 -
salmonberry
samba
sawtimber
scramble
Hoy en día, la suite Samba gira alrededor de un par de demonios Unix que permiten la
compartición de recursos entre los clientes SMB de una red. Estos demonios son:
smbd
Demonio que permite la compartición de archivos e impresoras sobre una red SMB y
proporciona autentificación y autorización de acceso para clientes SMB.
nmbd
Una de las cosas más importantes de samba es poder compartir un disco, que a través de
Windows se vería por el entorno de red, de echo en nuestro proyecto vamos a establecer un
recurso para poder entrar a Windows con un gestor de dominios con samba. Samba también
comparte impresoras e componentes que se puedan compartir. Pero básicamente hace los
siguientes ROL:
Pág. - 47 -
Ahora vamos a mostrar lo que Samba puede hacer con sus demonios y sus
responsabilidades.
nmbd
smbd
El demonio smbd maneja los recursos compartidos entre el servidor Samba y sus
clientes. Provee los servicios de servidor de archivos, impresión y búsqueda a los clientes
SMB a través de una o más redes y maneja todas las notificaciones entre el servidor
Samba y la red de clientes. A parte de esto, es el responsable de la autentificación de
usuarios, bloqueo de recursos y compartición de datos a través del protocolo SMB.
winbind
Este demonio se utiliza junto con el servicio de nombres para obtener la información de
los usuarios y grupos desde un servidor Windows NT y permitir a Samba autorizar a los
usuarios dentro de un servidor Windows NT/2000.
findsmb
Pág. - 48 -
make_smbcodepage
make_unicodemap
net
Un nuevo programa distribuido con Samba 3.0 que puede ser utilizado para realizar una
administración remota de los servidores.
nmblookup
Un programa que realiza búsquedas de nombres sobre NBT para encontrar direcciones IP
de ordenadores cuando se da su nombre de máquina.
pdbedit
Nuevo programa distribuido con la versión 3.0 de Samba que ayuda en el manejo de las
cuentas de usuario almacenadas en las bases de datos SAM.
rpcclient
Un programa que se puede utilizar para ejecutar las funciones MS-RPC en los clientes
Windows.
smbcacls
smbclient
Un cliente Unix similar a un cliente ftp, que se puede utilizar para conectarse a los
recursos compartidos SMB y operar con ellos.
smbcontrol
smbgroupedit
Un comando que se puede utilizar para definir mapeos entre los grupos de Windows NT y
los de Unix. Esta es una funcionalidad nueva en Samba 3.0.
smbmnt
Pág. - 49 -
smbmount
Un programa que monta un sistema de archivos smbfs, permitiendo que recursos remotos
SMB sean montados en el sistema de archivos local de la máquina Samba.
smbpasswd
smbsh
Una herramienta que funciona de manera similar a una shell, permitiendo el acceso a
sistemas de archivos SMB remotos, y permite a las herramientas de Unix operar con
ellos.
smbspool
smbstatus
Un programa que reporta las conexiones de red realizadas a los recursos compartidos en
el servidor Samba actualmente.
smbtar
Un programa similar al comando tar de Unix, que permite archivar datos en los recursos
compartidos de SMB.
smbumount
Un programa que trabaja junto con smbmount para desmontar los sistemas de archivos
smbfs.
testparm
testprns
wbinfo
Momento para la elección sobre como se quiere ejecutar Samba, ya sea utilizando el
superservidor inetd o mediante demonios.
include /etc/ldap/schema/samba.schema
Y reiniciamos slapd:
# /etc/init.d/slapd restart
# para PDC
domain logons = yes
# testparm
3.- le enviamos a samba la contraseña del admin de LDAP del siguiente modo:
# smbpasswd -w password
# /etc/init.d/samba restart
5.- Ahora mire en phpldapadmin, y cerciórese que se ha creado una nueva entrada como esta :
sambaDomainName=IESVIRGENDELCARMEN
copiar el valor de sambaSID (eg S-1-5-21-2620819820-906013693-4274777306 ), ya que sera
necesaria mas adelante.
Pág. - 52 -
/usr/bin
/usr/bin/smbclient
/usr/bin/smbtar
/usr/bin/rpcclient
/usr/bin/smbspool
/usr/bin/smbtree
/usr/bin/smbcacls
/usr/bin/smbcquotas
/sbin
/usr/bin
/usr/bin/smbmount
/usr/bin/smbumount
/usr/bin/smbmnt
/sbin/mount.smbfs
/sbin/mount.smb
1.- Ahora se podrá agregar algunos usuario. Se necesita un Administrator (uid=0) y otro usuario
para realizar las pruebas.
crear un nuevo : Samba 3 User(s) sobre ou=users de la siguiente forma:
Uid First Name User Name User Password Encryption Windows Group
0 Admin Administrator password MD5 Domain Admins
10000 Antonio antonio ******** MD5 Domain Admins
2.- Verificamos con getent que nss está funcionando correctamente sobre el servidor linux.
# getent passwd
ajduenas:x:10000:20000:Antonio Newton:/home/ajduenas:/bin/bash
Administrator:x:0:20000:admin :/home/administrator:/bin/bash
Pág. - 53 -
# mkdir /home/ajduenas
# cp /etc/skel/.* /home/ajduenas/
# chown -R ajduenas /home/ajduenas
# chgrp -R users /home/ajduenas
# mkdir /usr/local/smbldaptools
# cd /usr/share/doc/samba-doc/examples/LDAP/smbldap-tools-0.8.7
# cp smbldap_bind.conf smbldap_tools.pm.gz smbldap.conf.gz smbldap-useradd.gz
/usr/local/smbldaptools/
# gunzip /usr/local/smbldaptools/*.gz
# cd /usr/local/smbldaptools
# chmod go-r *
# chmod u+x smbldap-useradd
SID=”S-1-5-21-3131077580-1338128831-1697195685″
suffix=”dc=iesvirgendelcarmen,dc=com”
usersdn=”ou=alumnos,#{suffix}”
computersdn=”ou=profesores,#{suffix}”
groupsdn=”ou=grupos,#{suffix}”
sambaUnixIdPooldn=”sambaDomainName=IESvirgendelcarmen,#{suffix}”
hash_encrypt=”MD5″
slaveDN=”cn=admin,dc=iesvirgendelcarmen,dc=com”
slavePw=”password”
masterDN=”cn=admin,dc=iesvirgendelcarmen,dc=com”
masterPw=”password”
my #smbldap_conf=”/usr/local/smbldaptools/smbldap.conf”;
my #smbldap_bind_conf=”/usr/local/smbldaptools/smbldap_bind.conf”;
#./smbldap-useradd -w “manolo”
Pág. - 54 -
si no emitió algún error todo esta correcto, se creara un nuevo objeto uid=manolo# en el
ou machines.
Nos daremos cuenta que el uidNumber en el objeto sambaDomainName=IESvirgendelcarmen se
habrá actualizado a 30001 ahora.
Este objeto solo sirve para verificar que todo esta trabajando bien, procederemos a
eliminarlo del arbol
6.- Si deseamos que un usuario normal agregue las maquinas al dominio. podemos
conceder al usuario derechos para agregar las maquinas al dominio usando lo siguiente:
# cd /opt/
# wget http://www.kixtart.org/binary/distrib/KiX2010_453.zip
# apt-get install unzip
# unzip /opt/KiX2010_453.zip
1.- crear el netlogon, y hacer que el grupo administrador tenga a acceso a escribir
# mkdir -p /data/samba/netlogon
# chgrp admins /data/samba/netlogon
2.- Para el inicio de sesion de una maquina Windows a un usuario en el grupos Domain
Admins.Se tiene que tener aceso a escritura sobre la capeta netlogon
Download KiXstart, extract, and put the following files into the netlogon share:
KIX32.EXE
KX32.dll
# cp /opt/KiX2010.453/KIX32.EXE /data/samba/netlogon/
# cp /opt/KiX2010.453/KX32.dll /data/samba/netlogon/
\\pdc\netlogon\kix32 \\debian\netlogon\logon.kix /f
; logon script
setconsole(’hide’)
; sync time
#timeserver = “\\pdc”
Settime #timeserver
IF INGROUP(”SILCOM\Domain Admins”)
use n: \\pdc\netlogon
ENDIF
; map homedirectory
use u: @HOMEDIR
Hasta aquí se debía poder configurar una estación de trabajo que se autentifique contra el
dominio
mkdir /data/samba/profiles
[profiles]
path = /data/samba/profiles
comment = Profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700
Por defecto cuando se registra un usuario en ldap no crea el home respectivo para corregir
esto utilizamos lo siguiente:
cd /usr/share/doc/samba-doc/examples/LDAP/smbldap-tools-0.8.7
cp smbldap-passwd.gz /usr/local/smbldaptools/
cd /usr/local/smbldaptools/
Pág. - 56 -
gunzip smbldap-passwd.gz
chmod u+x smbldap-passwd
por estas :
6. AUTENTIFICACIÓN EN WINDOWS XP
Acceda a la opción “Conexiones de Red e Internet” del Panel de Control (Inicio ->
Configuración -> Panel de Control -> Conexiones de Red e Internet).
Conexión de red
Pág. - 57 -
Identificación de Red
Bienvenida al dominio
7. CONCEPTOS FINALES
7.1. Concepto de recursos
El recurso NETLOGON
Recurso PROFILES
Este recurso se usa para guardar los perfiles del escritorio. Cada usuario tiene que tener
un directorio en la raíz de este recurso. Este directorio tiene que tener permiso de escritura para el
usuario y tiene que tener permiso de lectura global.
Pág. - 60 -
7.2. Conclusión
El proyecto LDAP es muy complejo, pero a la vez muy potente junto a SAMBA, una
vez realizado este proyecto podremos autentificar todos los servicios que deseemos contra LDAP.
Además de ser un proyecto barato, porque te ahorras costes de Sistemas Operativos es además un
recurso muy útil para aquellas empresas que deseen centralizar toda la información en un solo
sistema.
Para montar estos servicios hemos puesto de base el Sistema Ubuntu 7.04 que es el mas
actual de esta distribución, además de tener un potente control y unos buenos repositorios es una
de las mejores distribuciones Linux y es más, es de las mas punteras.
8. ANEXOS
Voy a adjuntar el Sistema Base, Ubuntu 7.04 Server, como ANEXO I, y el tutorial en
formato digital como ANEXO II, como PDF, ya que todo lo que se ha necesitado ha sido expuesto
en el documento.
9. RESULTADOS
Todo este proyecto he tardado el total de 30 Horas para buscar información, 25 Horas
en montar los servicios mencionados en el proyecto y 15 Horas en redactar la parte teórica. He
tenido complicaciones al autentificar el PHPLDAPADMIN contra Samba, pero mirando por foros
logré encontrar una solución. Y también he tenido unos problemas al autentificar el dominio en
Windows, me entraba en el dominio pero no me reconocía al usuario root, ni cualquier otro del
sistema.