53
Administración de Sistemas con GOsa Alejandro Escanero Blanco 28-03-05

Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

  • Upload
    voquynh

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Administración de Sistemas con GOsa

Alejandro Escanero Blanco

28-03-05

Page 2: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2

Page 3: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Índice General

1. Introducción 111.1. Copyright and Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

2. openLDAP 132.1. Introducción,¿Que es LDAP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

2.1.1. Servicios de Directorios, X.500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132.1.2. Conceptos Básicos de LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142.1.3. Servidores de LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15

2.2. Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152.2.1. Descargando openLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152.2.2. Opciones de instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

2.3. Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172.3.1. Básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172.3.2. Específica para GOsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

2.4. Utilización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222.4.1. Configuración PAM/NSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222.4.2. Replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252.4.3. Carga de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26

3. Apache y PHP 333.1. Introducción a Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333.2. Introducción a PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333.3. Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

3.3.1. Descargando e Instalando Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .353.3.2. Instalando PHP sobre Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37

3.4. Configuración Apache2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .393.4.1. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40

3.5. Configuración Php4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433.5.1. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463.5.2. Configurando safe php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46

3.6. Módulos de PHP necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473.6.1. ldap.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473.6.2. mysql.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473.6.3. imap.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473.6.4. gd.so . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473.6.5. cups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483.6.6. krb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48

4. GOsa 49

3

Page 4: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

4 ÍNDICE GENERAL

5. Los Servidores 515.1. Postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515.2. Cyrus-IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515.3. Samba 2/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515.4. Pure-Ftpd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515.5. Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515.6. Egroupware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

Page 5: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Lista de Figuras

5

Page 6: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

6 LISTA DE FIGURAS

Page 7: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Lista de Tablas

2.1. Configuración Básica de openLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172.2. Configuración Específica para GOsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192.3. Configuración NSSWITCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222.4. Configuración NSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232.5. Configuración PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232.6. Configuración PAM common-account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242.7. Configuración PAM common-auth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242.8. Configuración PAM common-session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242.9. Configuración Replicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252.10. Configuración Carga de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272.11. Configuración Crea Base Maestro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302.12. Configuración Usuario Réplica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

3.2. PHP4 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44

7

Page 8: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

8 LISTA DE TABLAS

Page 9: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Preámbulo

GOsa, es un proyecto creado en el año 2001 por Cajus Pollmeier Cajus PollmeierEn su versión 1.0 era un proyecto ambicioso, pero mal enfocado. Entre como desarrollador del proyecto en

Junio del 2003 en las primeras versiones de la versión 1.99.xx. El código fue rehecho completamente y se creo unanueva versión modular y extensible (basada en plugins) y se optimizo enormemente su funcionamiento.

La versión actual de GOsa (a la fecha de la versión de este documento) es la 2.3. Es capaz de gestionar grancantidad de servicios como samba2/3, pureftpd, postfix, cyrus-imap, posix, etc. Y cuenta con un pequeño, peromuy activo grupo de desarrolladores dirigido por Cajus.

9

Page 10: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

10 LISTA DE TABLAS

Page 11: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Capítulo 1

Introducción

La administración de sistemas puede llegar a ser una tarea realmente complicada, demasiados usuarios conservicios y permisos diferentes.

1.1. Copyright and Disclaimer

Copyright (c) 2005 Alejandro Escanero Blanco. Permission is granted to copy, distribute and/or modify thisdocument under the terms of the GNU Free Documentation License, Version 1.2 or any later version publishedby the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-CoverTexts. A copy of the license is included in the section entitled "GNU Free Documentation License".

If you have questions, please visit the following url: http://www.gnu.org/licenses/fdl.txtAnd contact at: [email protected]

11

Page 12: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

12 CAPÍTULO 1. INTRODUCCIÓN

Page 13: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Capítulo 2

openLDAP

2.1. Introducción,¿Que es LDAP?

2.1.1. Servicios de Directorios, X.500

Un directorio es una base de datos especializada en busqueda de información basada en atributos.

X.500|ISO 9594[1] es un estándar de ITU-S(International Telecommunication Union - TelecommunicationStandardisation Burean), anteriormente conocido como CCITT, para solucionar el problema de directorios. Basa-do en los trabajos realizados con X.400 (un directorio para correo electrónico) y los trabajos de ISO ( InternationalStandards Organisation) y ECMA (European Computer Manufacturers Association).

El X.501|ISO 9594 parte 2. define los modelos de como debe estar organizada la información, el modelo deinformación de usuario, el modelo de información administrativa y el servicio de directorio, que define como debeestar distribuida la información entre varios sistemas.

En X.509|ISO 9594 parte 8. el estándar de autentificación y seguridad usado para SSL.

X.525|ISO 9594 parte 9. indica como debe ser la replicación entre sistemas.

En X.519|ISO 9594 parte 5. se definen los protocolos de comunicaciones, entre ellos el que mas nos importaque es DAP - El protocolo de acceso a directorios - que define que operaciones se pueden hacer con la conexión:bind, unbind, los objetos (entradas) y sus operaciones: añadir, eliminar, modificar, buscar, listar, comparar, etc.

DAP es un protocolo demasiado complejo para que se puedan hacer servidores y clientes para su uso paraInternet, así que se crea un protocolo mas cómodo de manejar estos directorios: LDAP.

LDAP (Lightweight Directory Access Protocol / Protocolo de acceso a directorios ligero) es un protocolo pen-sado para actualización y busquedas de directorios orientados a Internet (TCP/IP).

La ultima versión de LDAP es la 3 y es cubierta por los RFCs: 2251[2], 2252[3], 2253[4], 2254[5], 2255[6],2256[7] y 3377[8].

13

Page 14: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

14 CAPÍTULO 2. OPENLDAP

2.1.2. Conceptos Básicos de LDAP

Entrada(Entry)Una entrada es una colección de atributos a los que se identifica por su DN (nombre distinguido / distin-guished name). Un DN es único en todo el árbol y por lo tanto identifica claramente la entrada a la querefiere. Como ejemplo: CN=Alex O=CHAOSDIMENSION C=ES identificaría al objeto de nombre comúnAlex que esta en la organización CHAOSDIMENSION y en país ES (España).

Un RDN( nombre distinguido relativo / relative distinguished name) es parte del DN, de tal manera queconcatenando los RDN dan como resultado el DN. Del ejemplo anterior CN=Alex seria un RDN.

Clase de objeto(Object Class)Una clase es un atributo especial (ObjectClass) que define que atributos son requeridos y permitidos en unaentrada. Los valores de las clases objetos están definidos en el esquema. Todas las entradas deben tener unatributo ObjectClass. No se permite añadir atributos a las entradas que no permitidos por las definiciones delas clases de objetos de la entrada.

Atributo(Attrib)Un atributo es un tipo con uno o mas valores asociados. Se identifica por su OID ( identificador de objeto /object identifier). El tipo de atributo indica si puede haber mas de un valor de este atributo en una entrada,los valores que pueden tener y como se los puede buscar.

Esquema(Schema)Un esquema es una colección de definiciones de tipos de atributos, clases de objetos e información que elservidor usa para realizar las busquedas, introducir valores en un atributo, y permitir operaciones de añadiro modificar.

Filtro(Filter)Para realizar una busqueda debemos tener en cuenta varios parámetros importantes:

Base (baseObject)Un DN que sera a partir del cual realizaremos la busqueda.

Alcance (scope)Puede tener varios valores.- base: solo buscara en ese nivel base.- sub: hará busqueda recursiva por todo el árbol a partir del nivel base.- one: descenderá solo un nivel por debajo del nivel base.

Tamaño limite(sizelimit)Restringe el numero de entradas devueltas como resultado de una busqueda.

Tiempo limite (timelimit)Restringe el tiempo máximo de ejecución de una busqueda.

filtro (filter)Es una cadena que defina las condiciones que deben ser completadas para encontrar una entrada.

Los filtros se pueden concatenar con ’and’, ’or’ y ’not’ para crear filtros mas complejos.Por ejemplo un filtro con base O=CHAOSDIMENSION, C=ES, alcance base y filtro (CN=Alex) encontraríala entrada CN=Alex, O=CHAOSDIMENSION, C=ES.

Page 15: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.2. INSTALACIÓN 15

2.1.3. Servidores de LDAP

LDAP esta soportado por numerosos servidores siendo los mas conocidos Active Directory de Microsoft,eDirectory de Novell, Oracle Internet Directory de Oracle, iPlanet directory server de SUN y por último pero nomenos importante openLDAP.

En este manual se tratara el uso e instalación de openLDAP, ya que esta soportado por prácticamente todas lasdistribuciones de linux y su licencia cumple el estándar openSource.

Para mas información véase LDAP Linux HowTo[9], Using LDAP[10], openLDAP administrator Guide[11] yen español la parte relativa a LDAP del magnifico manual Ldap+Samba+Cups+Pykota[12].

2.2. Instalación

Las mayorías de las distribuciones tienen paquetes de openLDAP. Como usar apt-get en debian, Urpmi enMandrake, up2date en redhat o Yast2 en Suse sale fuera de este manual. Así que este manual explicara los necesariopara la construcción desde las fuentes.

2.2.1. Descargando openLDAP

Aunque realmente no son necesarios, hay varios paquetes que deberían ser instalados antes de openLDAP yaque seguramente los necesitaremos.

El primero de ellos esopenSSL, también existe en todas las distribuciones y tiene documentación en su paginaweb[13].

Las fuentes se pueden descargar de http://www.openssl.org/source/El segundo es ServiciosKerberos v5, del cual existen dos implementaciones, una es MIT Kerberos V y la otra

es Heimdal Kerberos, ambas tienen buena documentación y están ampliamente soportadas por todas las distribu-ciones.

También será interesante tener instaladas las libreríasCyrus SASL (Capa simple de seguridad y autentificaciónde Cyrus / Cyrus’s Simple Authentication and Security Layer).Que se pueden conseguir en http://asg.web.cmu.edu/sasl/, Cyrus SASL hace uso de openSSL y Kerberos/GSSAPIpara autentificación.

Necesitaremos por ultimo una base de datos para openLDAP, en lo que atañe a este manual esta será dada através de las librerías deSleepycat Software Berkeley DB, las necesitaremos tanto si usamos LDBM (BerkeleyDB versión 3) o BDB (Berkeley DB versión 4). También existen en la totalidad de distribuciones.

Una vez obtenidas y compiladas las librerías necesarias nos bajamos las fuentes de openLDAP en /usr/src (porejemplo) y descomprimimos en ese directorio (por ejemplo con tar -zxvf openldap-2.X.XX.tgz).

Page 16: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

16 CAPÍTULO 2. OPENLDAP

2.2.2. Opciones de instalación

La siguientes opciones son para openLDAP versión 2.2.xx que pueden diferir de las versiones 2.0.XX y 2.1.XX.Ejecutamos ./configure con las siguientes opciones.

(Directorios)–prefix=/usr–libexecdir=’$prefix/lib’–sysconfdir=/etc–localstatedir=/var/run–mandir=’$prefix/share/man’–with-subdir=ldap

(Opciones Básicas)–enable-syslog–enable-proctitle–enable-ipv6 →Sockets IPv6–enable-local →Sockets Unix–with-cyrus-sasl →Autentificación Cyrus SASL soportadas–with-threads →Soporte de Hilos de ejecución–with-tls →Soporte TLS/SSL–enable-dynamic →Compilación dinámica

(Opciones Slapd)–enable-slapd →Compilar el servidor además de las librerías–enable-cleartext →Permite el envío de contraseñas en claro–enable-crypt →Envío de contraseñas encriptadas con DES.–enable-spasswd →Verificación de contraseñas a través de SASL–enable-modules →Soporte dinámico de módulos–enable-aci →Soporte de ACIs por objetos (Experimental)–enable-rewrite →Reescritura de DN en recuperación de LDAP–enable-rlookups →Busqueda inversa del nombre del equipo cliente–enable-slp →Soporte de SLPv2–enable-wrappers →Soporte TCP wrappers

(Soporte)–enable-bdb=yes →Soporte Berkeley versión 4–enable-dnssrv=mod–enable-ldap=mod →Soporta otro servidor LDAP como base de datos–enable-ldbm=mod–with-ldbm-api=berkeley →Soporte Berkeley versión 3–enable-meta=mod →Soporte metadirectorio–enable-monitor=mod–enable-null=mod–enable-passwd=mod–enable-perl=mod →Soporte scripts en perl–enable-shell=mod →Soporte scripts en shell–enable-sql=mod →Soporte base de datos relacional

Posteriormente hacemos:#make && make install

Page 17: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.3. CONFIGURACIÓN 17

2.3. Configuración

2.3.1. Básica

La configuración del servidor slapd de openLDAP se guarda en /etc/ldap/slapd.conf.

Una configuración básica quedaría así:

Tabla 2.1: Configuración Básica de openLDAP

Configuración Básica de openLDAP

# Schema and objectClass definitions, configuración básicainclude /etc/ldap/schema/core.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/openldap.schemainclude /etc/ldap/schema/nis.schemainclude /etc/ldap/schema/misc.schema

#Fuerza a las entradas a encontar eschemas para los ObjectClassschemacheck on

# Password hash, tipo de encriptación de la clave# Puede ser: {SHA}, {MD5}, {MD4}, {CRYPT}, {CLEARTEXT}password-hash {CRYPT}

# Base de busqueda por defectodefaultsearchbase "dc=CHAOSDIMENSION,dc=ORG"

#Utilizado por init scripts para parar e iniciar el servidor.pidfile /var/run/slapd.pid

# Argumentos pasados al servidor.argsfile /var/run/slapd.args

# Nivel de logsloglevel 1024

# Donde y que módulos cargarmodulepath /usr/lib/ldapmoduleload back_bdb # Berkeley BD versión 4

#definiciones de la base de datosdatabase bdb

# La base del directoriosuffix "dc=CHAOSDIMENSION,dc=ORG"

# Aquí definimos al administrador del directorio y su clave# En este ejemplo es "tester"# La clave se puede sacar con

Sigue. . .

Page 18: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

18 CAPÍTULO 2. OPENLDAP

Configuración Básica de openLDAP (continuación)

# makepasswd –crypt –clearfrom fichero_con_nombre usuario

rootdn"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"rootpw {crypt}OuorOLd3VqvC2

# Que atributos indexamos para hacer busquedasindex default subindex uid,mail eqindex cn,sn,givenName,ou pres,eq,subindex objectClass pres,eq

# Directorio donde se guarda la base de datosdirectory/var/lib/ldap"

# Indicamos si deseamos guardar la fecha de la ultima modificaciónlastmod off

#Acceso del administradoraccess to *by dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" =wrscxby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" =wrscxby * read

Fin

Page 19: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.3. CONFIGURACIÓN 19

2.3.2. Específica para GOsa

GOsa añade varios esquemas para el control de ciertos servicios y características de los usuarios.

Los esquemas necesarios para GOsa están en el paquete, en la seccion contrib, lo ideal será copiarlos todos a/etc/ldap/schema

Una configuración recomendada de /etc/ldap/slapd.conf es la siguiente:

Tabla 2.2: Configuración Específica para GOsa

Configuración Específica para GOsa

# Schema and objectClass definitions, configuración básicainclude /etc/ldap/schema/core.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/openldap.schemainclude /etc/ldap/schema/nis.schemainclude /etc/ldap/schema/misc.schema

# Estos esquemas deberían estar presentes en GOsa. En el caso de samba3# se deben cambiar samba.schema y gosa.schema por samba3.schema# y gosa+samba3.schema.include /etc/ldap/schema/samba3.schemainclude /etc/ldap/schema/pureftpd.schemainclude /etc/ldap/schema/gohard.schemainclude /etc/ldap/schema/gofon.schemainclude /etc/ldap/schema/goto.schemainclude /etc/ldap/schema/gosa+samba3.schemainclude /etc/ldap/schema/gofax.schemainclude /etc/ldap/schema/goserver.schema

#Obliga al cumplimiento de los ObjectClassschemacheck on

# Password hash, tipo de encriptación de la clave# Puede ser: {SHA}, {SMD5}, {MD4}, {CRYPT}, {CLEARTEXT}password-hash {CRYPT}

# Base de busqueda por defectodefaultsearchbase "dc=CHAOSDIMENSION,dc=ORG"

#Utilizado por init scripts para parar e iniciar el servidor.pidfile /var/run/slapd.pid

# Argumentos pasados al servidor.argsfile /var/run/slapd.args

# Nivel de logsloglevel 1024

# Donde y que módulos cargarSigue. . .

Page 20: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

20 CAPÍTULO 2. OPENLDAP

Configuración Específica para GOsa (continuación)

modulepath /usr/lib/ldapmoduleload back_bdb # Berkeley BD versión 4

# Algunos parámetros de rendimientothreads 64concurrency 32conn_max_pending 100conn_max_pending_auth 250reverse-lookup offsizelimit 1000timelimit 30idletimeout 30

# Limitaciones específicaslimits anonymous size.soft=500 time.soft=5

# Definiciones de la base de datosdatabase bdbcachesize 5000checkpoint 512 720mode 0600

# La base del directoriosuffix "dc=CHAOSDIMENSION,dc=ORG"

# Aquí definimos al administrador del directorio y su clave# En este ejemplo es "tester"# La clave se puede sacar con# makepasswd –crypt –clearfrom fichero_con_nombre usuario

rootdn"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"rootpw {crypt}OuorOLd3VqvC2

# Que atributos indexamos para hacer busquedasindex default subindex uid,mail eqindex gosaMailAlternateAddress,gosaMailForwardingAddress eqindex cn,sn,givenName,ou pres,eq,subindex objectClass pres,eqindex uidNumber,gidNumber,memberuid eqindex gosaSubtreeACL,gosaObject,gosaUser pres,eq

# Indexing for Samba 3 index sambaSID eqindex sambaPrimaryGroupSID eqindex sambaDomainName eq

# Quienes pueden cambiar las claves de usuario# Solo por el propio usuario si está autentificado# o por el administradoraccess to attr=sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChangeby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" write

Sigue. . .

Page 21: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.3. CONFIGURACIÓN 21

Configuración Específica para GOsa (continuación)

by dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" writeby anonymous authby self writeby * noneaccess to attr=userPassword,shadowMax,shadowExpireby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" writeby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" writeby anonymous authby self writeby * none

# Denegar acceso a las claves imap, fax o kerberos guardadas en# LDAPaccess to attr=goImapPasswordby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" writeby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" writeby * noneaccess to attr=goKrbPasswordby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" writeby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" writeby * noneaccess to attr=goFaxPasswordby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" writeby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" writeby * none

# Permite que el servidor escriba el atributo LastUseraccess to attr=gotoLastUserby * write

#Las claves samba por defecto pueden ser cambiadas#por el usuario si se ha autentificado.access to attr=sambaLmPassword,sambaNtPasswordby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" writeby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" writeby anonymous authby self writeby * none

# Permite acceso de escritura para administrador de terminalesaccess to dn=.ou=incoming,dc=CHAOSDIMENSION,dc=ORG"by dn="cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG" writeby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" writeby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" write

access to dn.subtree=.ou=incoming,dc=CHAOSDIMENSION,dc=ORG"by dn="cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG" writeby dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" writeby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" write

# Directorio donde se guarda la base de datosSigue. . .

Page 22: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

22 CAPÍTULO 2. OPENLDAP

Configuración Específica para GOsa (continuación)

directory/var/lib/ldap"

# Indicamos si deseamos guardar la fecha de la ultima modificaciónlastmod off

# Acceso del administradoraccess to *by dn="cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" =wrscxby dn.regex="uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?" =wrscxby * read

Fin

2.4. Utilización

2.4.1. Configuración PAM/NSS

NSS (Librerías del servicio de seguridad en red / Network Security Service Libraries)

NSS es una parte básica del sistema, sirve para control de las cuentas POSIX, para poder usar LDAP para cuen-tas POSIX (del sistema) utilizaremos NSS_LDAP, que se puede descargar de http://www.padl.com/OSS/nss_ldap.html, lo descomprimimos es /usr/src y ejecutamos:

#cd /usr/src/nss_ldap#./configure && make && make install

La configuración básica de NSS esta en /etc/nsswitch.conf y debe quedar así para lo que nosotros queremos.

Tabla 2.3: Configuración NSSWITCH

Configuración NSSWITCH

passwd: files ldap # Estas son las lineas que cambiamos para que haga peticiones ldapgroup: files ldap #shadow: files ldap #

hosts: files dnsnetworks: files

protocols: db filesservices: db filesethers: db filesrpc: db files

netgroup: nisFin

Page 23: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.4. UTILIZACIÓN 23

La configuración de nss-ldap se guarda en /etc/nss-ldap.conf y una configuración válida para GOsa quedaríaasí:

Tabla 2.4: Configuración NSS

Configuración NSS

host ip.servidor.ldap # Aquí ponemos donde# estará nuestro servidor LDAP

base ou=people,dc=CHAOSDIMENSION,dc=ORG # Aquí donde van a ir los usuarios y sus claves.# OU significa unidad organizativa# y OU=people es el lugar donde GOsa guarda las# caracteristicas de los usuarios

ldap_version 3 # Versión de LDAP soportada#(muy recomendado la versión 3)

nss_base_passwd ou=people,dc=CHAOSDIMENSION,DC=ORG?one #Donde buscamos las caracteristicas POSIXnss_base_shadow ou=people,dc=CHAOSDIMENSION,DC=ORG?one #Donde buscamos las clavesnss_base_group ou=groups,dc=CHAOSDIMENSION,DC=ORG?one #Donde las caracteristicas de los grupos POSIX

Fin

PAM ( Módulos de autentificación conectables / Pluggable Authentication Modules) es una paquete de libre-rías dinámicas que permiten al administrador de sistema elegir en que manera las aplicaciones autentifican a losusuarios.

PAM viene de serie en todas las distribuciones, en /etc/pam.d se guarda la configuración de cada módulo y en/lib/security las librerías dinámicas.

Nos vamos a concentrar en uno de los módulos de PAM: pam_ldap. Este módulo nos servirá para que lasaplicaciones que usen el sistema base de autentificación y control de sesión y que no usen LDAP, indirectamenteaccedan a LDAP, como fuente de autentificación.

Con PAM_LDAP y la infraestructura de PAM conseguimos que los usuarios POSIX del sistema funcionenatraves de LDAP y se puedan configurar con GOsa.

PAM_LDAP se puede descargar de http://www.padl.com/OSS/pam_ldap.html , lo descomprimimos es /usr/srcy ejecutamos el clásico:

#cd /usr/src/pam_ldap#./configure && make && make install

La configuración de este módulo estará en /etc/pam_ldap.conf, una configuración básica que funcione con GO-sa quedaría:

Tabla 2.5: Configuración PAM

Configuración PAM

host ip.servidor.ldap # Aquí ponemos donde estará nuestro servidor LDAPbase ou=people,dc=CHAOSDIMENSION,dc=ORG # Aquí donde van a ir los usuarios y sus claves.

# OU significa unidad organizativa y OU=people# es el lugar donde GOsa guarda las caracteristicas de los usuarios

ldap_version 3 # Versión de LDAP soportada (muy recomendado la versión 3)scope one # En gosa los usuarios están al mismo nivel,

# no necesitamos descender.rootbinddn cn=ldapadmin,dc=solaria,dc=es # Aquí está el DN del administrador LDAP del servidor,

Sigue. . .

Page 24: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

24 CAPÍTULO 2. OPENLDAP

Configuración PAM (continuación)

# es necesario, ya que el servidor solo# dará acceso a las claves encriptadas al administrador.

pam_password md5 # Indica como están encriptadas las claves.Fin

En el archivo /etc/secret pondremos la clave del administrador LDAP, este archivo, así como el anterior solodeberían ser accesibles por root.

Para poder user ahora los servicios con la autentificación LDAP deberemos concentrarnos en tres archivos:Control de cuentas /etc/pam.d/common-account:

Tabla 2.6: Configuración PAM common-account

Configuración PAM common-account

account required pam_unix.so # Siempre requeridoaccount sufficient pam_ldap.so # Las llamadas a ldap

Fin

Control de autentificación /etc/pam.d/common-auth:

Tabla 2.7: Configuración PAM common-auth

Configuración PAM common-auth

auth sufficient pam_unix.so # Autentificación estandarauth sufficient pam_ldap.so try_first_pass # Autentificacion LDAP en el primer intentoauth required pam_env.soauth required pam_securetty.soauth required pam_unix_auth.soauth required pam_warn.soauth required pam_deny.so

Fin

Control de sesiones /etc/pam.d/common-session:

Tabla 2.8: Configuración PAM common-session

Configuración PAM common-session

session required pam_limits.sosession required pam_unix.so # Sesión unix estandarsession optional pam_ldap.so # Sesión basada en LDAP

Fin

Esta configuración será necesaria al menos para configurar POSIX y SAMBA.

Page 25: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.4. UTILIZACIÓN 25

2.4.2. Replicación

Si tenemos mas de un dominio debemos tener una estructura mas distribuida que sea mas eficiente contra fallos.Una estructura básica sería un servidor maestro con el árbol LDAP completo y servidores con subárboles LDAPque solo tuvieran la parte del dominio que controlan.

De esta manera GOsa controla el servidor maestro y a traves de un proceso llamado replicación los servidoresde dominio.

La replicación se configura en la configuración de ldap, pero no la ejecuta el demonio slapd, sino otro especia-lizado llamado slurp. Su configuración se realiza en la base de datos que queremos replicar, como en el ejemplobásico no hemos configurado mas que una base de datos solo tendríamos que añadir al final del fichero de confi-guración /etc/ldap/slapd.conf:

Tabla 2.9: Configuración Replicación

Configuración Replicación

#Configuración de réplica#Utilizado por init scripts para parar e iniciar el servidor.replica-pidfile /var/run/slurp.pid

# Argumentos pasados al servidor.replica-argsfile /var/run/slapd.args

#Lugar donde grabamos lo que se replica, y que usara slurpdreplogfile /var/lib/ldap/replog#Las configuraciones de réplica#Indicación de réplicareplica#Dirección URI del servidoruri=ldap://ip.servidor.esclavo1#Que vamos a replicar del maestrosuffix="dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"#Como vamos a autentificarbindmethod=simple#DN replica del esclavo1binddn="cn=esclavo1,ou=people,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"#Contraseña del usuario# de replica de esclavo1credentials="tester"#Indicación de réplica del esclavo2replicauri=ldap://ip.servidor.esclavo2suffix="dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"bindmethod=simplebinddn="cn=esclavo2,ou=people,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"credentials="tester"

Fin

Por simplicidad hemos supuesto que los dos servidores esclavos están configurados igual que el maestro,excepto por la configuración de replica del maestro y las indicaciones de los esclavos de quien es el servidormaestro.

En los servidores esclavos añadimos al final del /etc/ldap/slapd.conf:

Page 26: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

26 CAPÍTULO 2. OPENLDAP

En esclavo1:#Quién puede actualizar el servidorupdatedn"cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"#Desde dondeupdateref ldap://ip.servidor.maestro#Permitimos el accesoaccess to dn.subtree= "dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"by dn="cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG" =wrscxby * none

En esclavo2:#Quién puede actualizar el servidorupdatedn"cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"#Desde dondeupdateref ldap://ip.servidor.maestro#Permitimos el accesoaccess to dn.subtree= "dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"by dn="cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG" =wrscxby * none

Además debemos crear los usuarios de replica en las bases de datos correspondientes. Eso se vera en el si-guiente punto.

2.4.3. Carga de datos

En este punto daremos los datos iniciales de nuestro árbol LDAP necesario para GOsa. Tambien indicaremosde que manera hacer la carga de estos datos y que hacer en el caso de un servidor único o en el caso de que hayaréplicas.

La carga se puede hacer de dos maneras, una es atraves de slapadd y la otra es atraves de ldapadd.En el primer caso la carga se hace directamente sobre la base de datos con lo cual no existe replicación y ademasno se mostrarán los datos en el servidor LDAP hasta que este no sea iniciado nuevamente,la carga de datos deesta manera debe ser hecha con el servidor apagado.En el segundo caso, la carga se hace a traves de ldap y si hay replica esta se generara de la manera pertinente.

Para una carga desde cero de la base de datos, deberemos hacerla desde slapadd, con el servidor slapd parado.La forma de usar slapadd es:

#slapadd -v -l fichero_con_datos.ldif

LDIF es el formato estándar para guardar datos de LDAP. GOsa trae su propio ldif de ejemplo, en los siguientesdos puntos explicaremos como usarlo según nuestras necesidades.

Servidor Único

Es el caso mas básico, en el no hay replicación y solo necesitamos un árbol simple.En nuestro ejemplo supondremos que nuestro árbol GOsa está en dc=CHAOSDIMENSION,dc=ORG.

Cargaremos los datos con un script, le llamaremos carga.sh, esto simplificara los pasos. Los parámetros delscript serán: DN de la base, Servidor IMAP,Realm Kerberos

Page 27: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.4. UTILIZACIÓN 27

Tabla 2.10: Configuración Carga de Datos

Configuración Carga de Datos

#!/bin/sh

if [ ${#@} != 3 ]then

echo "Se necesita los parametro DN base, Servidor IMAP y Servidor Kerberos"echo "Por ejemplo carga.sh dc=CHAOSDIMENSION,dc=ORG imap.solaria krb.solaria"exit

fi

DC=‘echo $1|cut -d\= -f 2|cut -d \, -f 1‘IMAP=$2KRB=$3

slapadd<< EOFdn: $1objectClass: dcObjectobjectClass: organizationdescription: Base objectdc: $DCo: My own Organization

dn: cn=terminal-admin,$1objectClass: personcn: terminal-adminsn: Upload userdescription: GOto Upload BenutzeruserPassword:: e2tlcmJlcm9zfXRlcm1pbmFsYWRtaW5AR09OSUNVUy5MT0NBTAo=

dn: ou=systems,$1objectClass: organizationalUnitou: systems

dn: ou=terminals,ou=systems,$1objectClass: organizationalUnitou: terminals

dn: ou=servers,ou=systems,$1objectClass: organizationalUnitou: servers

dn: ou=people,$1objectClass: organizationalUnitou: people

dn: ou=groups,$1objectClass: organizationalUnitou: groups

dn: cn=default,ou=terminals,ou=systems,$1Sigue. . .

Page 28: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

28 CAPÍTULO 2. OPENLDAP

Configuración Carga de Datos (continuación)

objectClass: gotoTerminalcn: defaultgotoMode: disabledgotoXMethod: querygotoRootPasswd: tyogUVSVZlEPsgotoXResolution: 1024x768gotoXColordepth: 16gotoXKbModel: pc104gotoXKbLayout: degotoXKbVariant: nodeadkeysgotoSyslogServer: lts-1gotoSwapServer: lts-1:/export/swapgotoLpdServer: lts-1:/export/spoolgotoNtpServer: lts-1gotoScannerClients: lts-1.$DC.localgotoFontPath: inet/lts-1:7110gotoXdmcpServer: lts-1gotoFilesystem: afs-1:/export/home /home nfs exec,dev,suid,rw,hard,nolock,fg,rsize=8192 1 1

dn: cn=admin,ou=people,$1objectClass: personobjectClass: organizationalPersonobjectClass: inetOrgPersonobjectClass: gosaAccountuid: admincn: admingivenName: adminsn: GOsa main administratorsambaLMPassword: 10974C6EFC0AEE1917306D272A9441BBsambaNTPassword: 38F3951141D0F71A039CFA9D1EC06378userPassword:: dGVzdGVy

dn: cn=administrators,ou=groups,$1objectClass: gosaObjectobjectClass: posixGroupobjectClass: topgosaSubtreeACL: :allcn: administratorsgidNumber: 999memberUid: admin

dn: cn=lts-1,ou=servers,ou=systems,$1objectClass: goTerminalServerobjectClass: goServergoXdmcpIsEnabled: truemacAddress: 00:B0:D0:F0:DE:1Dcn: lts-1goFontPath: inet/lts-1:7110

dn: cn=afs-1,ou=servers,ou=systems,$1objectClass: goNfsServer

Sigue. . .

Page 29: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.4. UTILIZACIÓN 29

Configuración Carga de Datos (continuación)

objectClass: goNtpServerobjectClass: goLdapServerobjectClass: goSyslogServerobjectClass: goCupsServerobjectClass: goServermacAddress: 00:B0:D0:F0:DE:1Ccn: afs-1goExportEntry: /export/terminals 10.3.64.0/255.255.252.0(ro,async,no_root_squash)goExportEntry: /export/spool 10.3.64.0/255.255.252.0(rw,sync,no_root_squash)goExportEntry: /export/swap 10.3.64.0/255.255.252.0(rw,sync,no_root_squash)goExportEntry: /export/home 10.3.64.0/255.255.252.0(rw,sync,no_root_squash)goLdapBase: $1

dn: cn=vserver-02,ou=servers,ou=systems,$1objectClass: goImapServerobjectClass: goServermacAddress: 00:B0:D0:F0:DE:1Fcn: vserver-02goImapName: imap://$IMAPgoImapConnect: $IMAP:143goImapAdmin: cyrusgoImapPassword: secretgoImapSieveServer: $IMAPgoImapSievePort: 2000

dn: cn=kerberos,ou=servers,ou=systems,$1objectClass: goKrbServerobjectClass: goServermacAddress: 00:B0:D0:F0:DE:1Ecn: kerberosgoKrbRealm: $KRBgoKrbAdmin: admin/admingoKrbPassword: secret

dn: cn=fax,ou=servers,ou=systems,$1objectClass: goFaxServerobjectClass: goServermacAddress: 00:B0:D0:F0:DE:10cn: faxgoFaxAdmin: faxgoFaxPassword: secret

dn: ou=incoming,$1objectClass: organizationalUnitou: incoming

EOFFin

Page 30: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

30 CAPÍTULO 2. OPENLDAP

Servidor Maestro y dos réplicas

La carga de datos se hará con el mismo script de la sección anterior, tanto en el maestro como en los esclavos,con las siguientes diferencias:

En el maestro por ejemplo "DC=CHAOSDIMENSION,DC=ORG"ejecutaremos este script crea_base.sh paracrear la base:

Tabla 2.11: Configuración Crea Base Maestro

Configuración Crea Base Maestro

#!/bin/sh

if [ ${#@} != 1 ]then

echo "Se necesita el parámetro DN base del maestro"echo "Por ejemplo crea_base.sh dc=CHAOSDIMENSION,dc=ORG"exit

fi

DC=‘echo $1|cut -d\= -f 2|cut -d\, -f 1‘

slapadd<< EOFdn: $1objectClass: dcObjectobjectClass: organizationdescription: Base objectdc: $DCo: My own Base Organization

EOFFin

Además con el script de la sección anterior cargaremos los dominios de ejemplo:"DC=dominio1,DC=CHAOSDIMENSION,DC=ORG2"DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".

En el esclavo1 ejecutaremos el script con "DC=dominio1,DC=CHAOSDIMENSION,DC=ORG2en esclavo2con "DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".En ambos casos los dos servidores LDAP esclavos habrán sido configurados para su propio DN.

Lo que nos faltaría seria crear el usuario para la replica, que se podría hacer con el siguiente script usua-rio_replica.sh con parámetros nombre del usuario y el DN base:

Tabla 2.12: Configuración Usuario Réplica

Configuración Usuario Réplica

#!/bin/shif [ ${#@} != 2 ]

Sigue. . .

Page 31: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

2.4. UTILIZACIÓN 31

Configuración Usuario Réplica (continuación)

thenecho "Se necesita los parametros nombre de usuario y DN base para replica"echo "Por ejemplo usuario_replica.sh replicator dc=dominio1,dc=CHAOSDIMENSION,dc=ORG "exit

fi

KEY=‘makepasswd –crypt –chars=7 \–string=.abcdefghijklmnopqrstuvwxyz1234567890"‘PASS=‘echo $KEY|awk ’{ print $1 }’‘CRYPT=‘echo $KEY|awk ’{ print $2 }’‘

echo"Creando usuario $1 con contraseña: $PASS"

slapadd<< EOFdn: cn=$1,ou=people,$2displayName: Debian User„,userPassword: {crypt} $CRYPTsambaLMPassword:sambaNTPassword:sn: $1givenName: $1cn: $1homeDirectory: /home/$1loginShell: /bin/falseuidNumber: 10000gidNumber: 100gecos: $1shadowMin: 0shadowMax: 99999shadowWarning: 7shadowInactive: 0shadowLastChange: 12438gosaDefaultLanguage: es_ESuid: $1objectClass: posixAccountobjectClass: shadowAccountobjectClass: personobjectClass: organizationalPersonobjectClass: inetOrgPersonobjectClass: gosaAccountobjectClass: top

EOFFin

Page 32: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

32 CAPÍTULO 2. OPENLDAP

Page 33: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Capítulo 3

Apache y PHP

3.1. Introducción a Apache

GOsa es una aplicación escrita en el lenguaje de programación PHP y pensada para uso a través de páginasweb.

Aunque todo el mundo conoce lo que es una página web, no viene de menos repasar algunos puntos:

WWW La World Wide Web (Red alrededor del mundo) es el motor de lo que conocemos como internet, es unespacio de información donde cada recurso está identificado por su URI (Identificador de Recurso Universal/ Universal Resource Identifier), este define el protocolo necesario para acceder a la información, el equipoque la posee y donde está colocada.

La WWW es la gran revolución de nuestra época, es una fuente enorme de información. Y como tal todas lasaplicaciones están siendo orientadas a ella. GOsa usa WWW por una sencilla razón, distribuye el programa,una aplicación orientada a internet es capaz de ser usada desde cualquier lugar y prácticamente en cualquiermomento. GOsa no necesita estar siendo ejecutado en la misma máquina que lo tiene, mas aun cada uno delos servidores que controla pueden estar en máquinas diferentes y en remotos lugares.

HTTP HTTP[14] es el acrónimo de Protocolo de Transferencia de Texto / HyperText Transfer Protocol, cuyopropósito mas importante es la publicación y recepción de "páginas Web".

Es un protocolo de nivel de aplicación ideado para sistemas distribuidos de información hipermedia. Haestado siendo usada para la WWW desde 1990, la versión actual es HTTP/1.1.

El funcionamiento práctico se puede reducir a un cliente que realiza una petición y a un servidor que gestionaesa petición y realiza una respuesta.

HTML Si la petición del cliente y la respuesta del servidor son correctas, la respuesta del servidor contendráalgún tipo de hipermedia, el mas habitual es HTML (Lenguaje de marcas de hipertexto / HyperText MarkupLanguage), un lenguaje pensado para la publicación con contenidos y para una fácil navegación por ellos.Es un protocolo en constante desarrollo, la versión actual es HTML4.01 y en publicación XHTML2.0

APACHE es el servidor HTTP mas utilizado que existe , seguro, eficiente y extensible.En este manual nos centraremos en este servidor, ya que es el mas usado y tiene una licencia calificada de

opensource.Mas información sobre este servidor en http://httpd.apache.org/docs-2.0/

3.2. Introducción a PHP

PHP (PHP: Hypertext Preprocessor), es un lenguaje de interpretado alto nivel, especialmente pensado para eldiseño de páginas webs. Su sintaxis es una mezcla de C, Perl y Java. Es embebido en las páginas HTML y esejecutado por el servidor HTTP.

33

Page 34: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

34 CAPÍTULO 3. APACHE Y PHP

PHP está ampliamente extendido y tiene un numeroso grupo de desarrolladores, una extensa documentacióny numerosos sitios webs con documentación y ejemplos.

Page 35: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

3.3. INSTALACIÓN 35

3.3. Instalación

3.3.1. Descargando e Instalando Apache

Al igual que en el capítulo anterior, Apache está en prácticamente todas las distribuciones, aunque veremos suinstalación desde las fuentes. Nos vamos a centrar por ahora en las versiones mas avanzadas de apache, la serie2.0.XX considerada estable.

Se recomienda instalar los mismos paquetes que se necesitan para openLDAP2.2.1.Se puede descargar de: http://httpd.apache.org/download.cgi, la versión que vamos a descargar en /usr/src es la

httpd-2.0.XX.tar.gzEjecutamos ./configure con las siguientes opciones.

Generales–enable-so → Soporte de Objetos Dinámicos Compartidos (DSO)–with-program-name=apache2–with-dbm=db42 → Versión de la Berkeley DB que vamos a usar–with-external-pcre=/usr–enable-logio → Registro de entrada y salida–with-ldap=yes–with-ldap-include=/usr/include–with-ldap-lib=/usr/lib

Soporte suexec–with-suexec-caller=www-data–with-suexec-bin=/usr/lib/apache2/suexec2–with-suexec-docroot=/var/www–with-suexec-userdir=public_html–with-suexec-logfile=/var/log/apache2/suexec.log

Módulos–enable-userdir=shared → mod_userdir, módulo para directorios de usuario–enable-ssl=shared → mod_ssl, módulo de conectividad segura SSL–enable-deflate=shared → mod_deflate, módulo para comprimir la información enviada–enable-ldap=shared → mod_ldap_userdir, módulo para caché y conexiones ldap–enable-auth-ldap=shared → mod_ldap, módulo de autentificación en ldap–enable-speling=shared → mod_speling, módulo para la corrección de fallos en URL–enable-include=shared → mod_include, módulo para la inclusión de otras configuraciones–enable-rewrite=shared → mod_rewrite, permite la manipulación de URL–enable-cgid=shared → CGI script–enable-vhost-alias=shared → módulo de alias de dominios virtuales–enable-info=shared → Información del servidor–enable-suexec=shared → Cambia el usuario y el grupo de los procesos–enable-unique-id=shared → Identificador único por petición–enable-usertrack=shared → Seguimiento de la sesión de usuario–enable-expires=shared → Módulo para el envío de la cabecera de expiración–enable-cern-meta=shared → Ficheros meta tipo CERN–enable-mime-magic=shared→ Determina automáticamente el tipo MIME–enable-headers=shared → Control cabeceras HTTP–enable-auth-anon=shared → Acceso a usuarios anónimos–enable-proxy=shared → Permite el uso de Apache como proxy–enable-dav=shared → Capaz de manejar el protocolo WebDav–enable-dav-fs=shared → Proveedor DAV para el sistema de archivos–enable-auth-dbm=shared → Autentificación basada en base de datos DBM–enable-cgi=shared → Permite CGI scripts

Continue. . .

Page 36: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

36 CAPÍTULO 3. APACHE Y PHP

–enable-asis=shared → Tipos de archivos como son–enable-imap=shared → Mapas de imágenes en el lado de servidor–enable-ext-filter=shared → Módulo para filtros externos–enable-authn-dbm=shared–enable-authn-anon=shared–enable-authz-dbm=shared–enable-auth-digest=shared → Colección de autentificaciones según RFC2617–enable-actions=shared → Activa acciones según peticiones–enable-file-cache=shared → Cache de archivos–enable-cache=shared → Cache dinámico de archivos–enable-disk-cache=shared → Cache de disco–enable-mem-cache=shared→ Cache de memoria

End

Una vez configurado, hacemos:

#make && make install

Page 37: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

3.3. INSTALACIÓN 37

3.3.2. Instalando PHP sobre Apache

Se puede descargar de http://www.php.net/downloads.php siendo la versión necesaria a la fecha de este manualpara utilizar GOsa la 4.3.XX, ya que las versiones 5.0.XX aún no están soportadas. Las descargaremos en /usr/src.

Para poder compilar los módulos necesarios además de necesitar las librerías de desarrollo de la seccion Ser-vidores 5, además de las mismas que para openLDAP2.2.1 y Apache3.3.1 necesitaremos alguna librería mas:

libbz2 La podemos descargar de http://sources.redhat.com/bzip2/ para módulo de compresión BZ2.

e2fsprogsSe puede descargar de http://e2fsprogs.sourceforge.net para acceso al sistema de archivos.

expat Se descarga de http://expat.sourceforge.net/, es un parser XML.

zziplib Bajarla de http://zziplib.sourceforge.net/, acceso a archivos ZIP.

zlib Desde http://www.gzip.org/zlib/ para compresión GZ.

file Desde http://www.darwinsys.com/freeware/file.html control de archivos.

sed De http://www.gnu.org/software/sed/sed.html, una de las herramientas mas potentes para manipulación detexto.

libcurl Potente herramienta para manejar archivos remotos, la bajaremos de http://curl.haxx.se/ .

gettext Herramienta GNU para soporte de varios idiomas, la descargamos de http://www.gnu.org/software/gettext/gettext.html.

libgd Para la manipulación y creación de imágenes desde: http://www.boutell.com/gd/ .

libjpeg Manipulación de imágenes JPEG de http://www.ijg.org/ .

libpng Manipulación imágenes PNG de http://www.libpng.org/pub/png/libpng.html .

mcal Librería para el acceso a Calendarios remotos, se baja de http://mcal.chek.com/ .

libmysql Soporte para la famosísima base de datos, es imprescindible para php, se baja de http://www.mysql.com/

Una configuración recomendada será:

Apache2–prefix=/usr –with-apxs2=/usr/bin/apxs2–with-config-file-path=/etc/php4/apache2

Opciones de compilación–enable-memory-limit # Compilado con límite de memoria–disable-debug # Compilar sin símbolos de depuración–disable-static # Sin librerías estáticas–with-pic # Usar objetos PIC y no PIC–with-layout=GNU–enable-sysvsem # Soporte sysvmsg–enable-sysvshm # Soporte semáforos System V–enable-sysvmsg # Soporte memoria compartida System V–disable-rpath # Desactiva poder pasar rutas a librerías adiciones al binario–without-mm # Desactivar el soporte de sesiones por memoria

De sesión–enable-track-vars–enable-trans-sid

Page 38: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

38 CAPÍTULO 3. APACHE Y PHP

Soporte–enable-sockets # Soporte de sockets–with-mime-magic=/usr/share/misc/file/magic.mime–with-exec-dir=/usr/lib/php4/libexec

pear–with-pear=/usr/share/php Donde vamos a instalar PEAR

Funciones–enable-ctype Soporte funciones de control de caracteres–with-iconv Soporte funciones iconv–with-bz2 Soporte Compresión BZ2–with-regex=php Tipo de librería de expresiones regulares–enable-calendar Funciones para conversión de calendario–enable-bcmath Soporte de matemáticas de precisión arbitraria–with-db4 DBA: Soporte Berkeley DB versión 4–enable-exif Soporte funciones exif, para lectura metadata JPG y TIFF–enable-ftp Soporte funciones FTP–with-gettext Soporte Localización–enable-mbstring–with-pcre-regex=/usr–enable-shmop Funciones de memoria compartida–disable-xml –with-expat-dir=/usr Usa el xml de expat en vez del que viene con php–with-xmlrpc–with-zlib–with-zlib-dir=/usr–with-imap=shared,/usr Soporte imap genérico–with-kerberos=/usr Imap con autentificación kerberos–with-imap-ssl Imap con acceso seguro SSL–with-openssl=/usr–with-zip=/usr–enable-dbx Capa de abstracción a base de datos

Módulos externos–with-curl=shared,/usr Manejo remoto de archivos–with-dom=shared,/usr –with-dom-xslt=shared,/usr –with-dom-exslt=shared,/usr Con xmlrpc ya integrado–with-gd=shared,/usr –enable-gd-native-ttf Soporte de manejo de gráficos–with-jpeg-dir=shared,/usr Soporte GD para jpeg–with-png-dir=shared,/usr Soporte GD para png–with-ldap=shared,/usr Soporte para ldap–with-mcal=shared,/usr Soporte de calendarios–with-mhash=shared,/usr Módulo para varios algoritmos de generación de claves–with-mysql=shared,/usr Soporte de base de datos Mysql

Posteriormente hacemos:

#make && make install

Page 39: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

3.4. CONFIGURACIÓN APACHE2 39

3.4. Configuración Apache2

La configuración de apache se guardara en el directorio /etc/apache2 en los siguientes ficheros y directorios:

Archivo apache2.conf:COnfiguración principal de apache2, tiene la configuración necesaria para arrancar apache.No necesitamos editar este archivo.

Archivo ports.confQue puertos escucha apache, necesitamos dos, el puerto 80 para HTTP y el 443 para HTTPS, editaremos elficheros, dejandolo como esto:Listen 80,443

Directorio conf.d:Directorio para configuraciones especiales, no lo necesitamos.

Directorios mods-available y mods-enabled:Este directorio tiene todos los módulos que podemos usar de apache2, para poder usar un módulo es nece-sario enlazar este al directorio mods-enabled.

Directorios sites-available y sites-enabled:En sites-available debemos configurar los sitios que vamos a usar.Por ejemplo vamos a crear el sitio no seguro gosa, que vamos a usar para redirigir las peticiones a un servidorseguro.

La configuración de GOsa (sites-available/gosa) puede ser parecida a esta::NameVirtual *<VirtualHost *>

ServerName gosa.chaosdimension.org

Redirect /gosa https://gosa.chaosdimension.org/gosa

CustomLog /var/log/apache/gosa.log combinedErrorLog /var/log/apache/gosa.log

</VirtualHost>

Una vez sea guardada, podemos activarla haciendo esto:

#>ln -s /etc/apache2/mods-available/suphp.conf /etc/apache2/mods-enabled/suphp.conf

Directorio ssl:Directorio de configuración de Secure Socket Layer, esto lo veremos en la siguiente sección.

Page 40: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

40 CAPÍTULO 3. APACHE Y PHP

3.4.1. Seguridad

La seguridad es uno de los puntos mas importantes al configurar un servidor apache, necesitaremos un entornoseguro donde no permitir que los usuarios manipulen y accedan a codigo o programas.

La formas de conseguir esto es usando encriptación, con lo que buscamos que los usuarios y el servidor secomuniquen de forma que nadie mas pueda acceder a los datos. Esto se consigue con encriptación.

La otra manera de asegurar el sistema es que si existe algún fallo en el sistema o en el código, y un intrusointenta ejecutar codigo, este se vea incapacitado, ya que existen poderosas limitaciones, como no permitir queejecute comandos, lea el codigo de otros script, no pueda modificar nada y tenga un usuario con muy limitadosrecursos.

Certificados SSL

Existe amplia documentación sobre encriptación y concretamente sobre SSL, un sistema de encriptación con clavepublica y privada.

Como el paquete openSSL ya lo tenemos instalado a partir de los pasos anteriores, debemos crear los certifi-cados que usaremos en nuestro servidor web.

Supongamos que guardamos el certificado en /etc/apache2/ssl/gosa.pem

#>FILE=/ect/apache2/ssl/gosa.pem#>export RANDFILE=/dev/random#>openssl req -new -x509 -nodes -out $FILE -keyout /etc/apache2/ssl/apache.pem#>chmod 600 $FILE#>ln -sf $FILE /etc/apache2/ssl/‘/usr/bin/openssl x509 -noout -hash <$FILE‘.0

Con esto hemos creado un certificado que nos permite el acceso SSL a nuestras páginas.

Si lo que queremos es una configuración que nos permita no solo que el tráfico esté encriptado, sino que ade-más el cliente garantice que es un usuario válido, debemos provocar que el servidor pida una certificación decliente.

En este caso seguiremos un procedimiento mas largo, primero la creación de una certificación de CA:

#>CAFILE=/ect/apache2/ssl/gosa.ca#>KEY=/etc/apache2/ssl/gosa.key#>REQFILE=/etc/apache2/ssl/gosa.req#>CERTFILE=/ect/apache2/ssl/gosa.cert#>DAYS=365#>export RANDFILE=/dev/random#>openssl req -x509 -keyout $CAKEY -out $CAFILE $DAYS

Después de varias cuestiones tendremos una CA, ahora hacemos un requerimiento a la CA creada:

#>openssl req -new -keyout $REQFILE -out $REQFILE $DAYSFirmamos el nuevo certificado:

#>openssl ca -policy policy_anything -out $CERFILE -infiles $REQFILEY creamos un pkcs12 para configurar la certificación en los clientes:

#>openssl pkcs12 -export -inkey $KEY -in $CERTFILE -out certificado_cliente.pkcs12Este certificado se puede instalar en el cliente, y en el servidor web mediante la configuración explicada en elsiguiente punto, nos dará la seguridad de que solo accederán aquellos clientes que nosotros deseamos y que sucomunicación será estrictamente confidencial.

Page 41: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

3.4. CONFIGURACIÓN APACHE2 41

Configurando mod-SSL

El módulo SSL viene de serie con apache2, esto simplificara nuestro trabajo. Para saber si está ya configurado:

#>if [ -h /etc/apache2/mods-enabled/ssl.load ]; then echo "módulo instalado";else echo "módulo no instalado"; fiPara activarlo haremos lo siguiente:

#>ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf#>ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load

Esto configurará el módulo en apache2 y se podrá utilizar después de recargar el servidor con:

#>/etc/init.d/apache2 restart

Para el caso de querer solo una configuración para comunicación encriptada, crearemos en /etc/apache2/sites-available, gosa-ssl:

NameVirtual *:443<VirtualHost *:443>

ServerName gosa.chaosdimension.org

alias /gosa /usr/share/gosa/html

DocumentRoot /var/www/gosa.chaosdimension.orgCustomLog /var/log/apache/gosa.log combinedErrorLog /var/log/apache/gosa.log

SSLEngine OnSSLCertificateFile /etc/apache2/ssl/gosa.certSSLCertificateKeyFile /etc/apache2/ssl/gosa.keySSLCertificateChainFile /etc/apache2/ssl/gosa.certSSLCertificateKeyFile /etc/apache2/ssl/gosa.keySSLCACertificateFile /etc/apache2/ssl/gosa.caSSLCACertificatePath /etc/apache2/ssl/SSLLogLevel errorSSLLog /var/log/apache2/ssl-gosa.log

</VirtualHost>Para una comunicación encriptada en la cual verificamos el certificado del cliente:

Page 42: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

42 CAPÍTULO 3. APACHE Y PHP

NameVirtual *:443<VirtualHost *:443>

ServerName gosa.chaosdimension.org

alias /gosa /usr/share/gosa/html

DocumentRoot /var/www/gosa.chaosdimension.orgCustomLog /var/log/apache/gosa.log combinedErrorLog /var/log/apache/gosa.log

SSLEngine OnSSLCertificateFile /etc/apache2/ssl/gosa.certSSLCertificateKeyFile /etc/apache2/ssl/gosa.keySSLCertificateChainFile /etc/apache2/ssl/gosa.certSSLCertificateKeyFile /etc/apache2/ssl/gosa.keySSLCACertificateFile /etc/apache2/ssl/gosa.caSSLCACertificatePath /etc/apache2/ssl/SSLLogLevel errorSSLLog /var/log/apache2/ssl-gosa.log

<Directory /usr/share/gosa >SSLVerifyClient requireSSLVerifyDepth 1

</Directory></VirtualHost>

Configurando suphp

Suphp es un módulo para apache y php que permite ejecutar procesos de php con un usuario diferente del que usaapache para ejecutar las páginas html y php.

Consta de dos partes, una es un modulo para apache que çaptura"las peticiones de páginas php, compruebael usuario del archivo, su grupo, y envía la información a la otra parte, que es un ejecutable suid-root que lanzaphp4-cgi con el usuario que le ha sido indicado, este devuelve el resultado al módulo del apache.

La idea es minimizar el daño que se provocaría al ser explotado un posible fallo del sistema, de esta manera elusuario entraría en el sistema con una cuenta no habilitada, sin permisos de ejecución y sin posibilidad de accesoa otro código o sitios web.

Suphp se puede descargar de http://www.suphp.org/Home.html, descomprimiendo el paquete en /usr/src ycompilando con las siguientes opciones:

#>./configure –prefix=/usr \–with-apxs=/usr/bin/apxs2 \–with-apache-user=www-data \–with-php=/usr/lib/cgi-bin/php4 \–sbindir=/usr/lib/suphp \–with-logfile=/var/log/suphp/suphp.log \-with-setid-mode \–disable-checkpath

Por supuesto necesitaremos tener compilado php para cgi, esto significa volver a compilar php, pero quitando laconfiguración para apache2 y añadiendo:

–prefix=/usr –enable-force-cgi-redirect –enable-fastcgi \–with-config-file-path=/etc/php4/cgi

Para configurarlo en apache haremos igual que para ssl, primero comprobamos si está configurado:

#>if [ -h /etc/apache2/mods-enabled/suphp.load ]; then echo "módulo instalado";else echo "módulo no instalado"; fi

Page 43: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

3.5. CONFIGURACIÓN PHP4 43

Para activarlo haremos lo siguiente:

#>ln -s /etc/apache2/mods-available/suphp.conf /etc/apache2/mods-enabled/suphp.conf#>ln -s /etc/apache2/mods-available/suphp.load /etc/apache2/mods-enabled/suphp.load

Esto configurará el módulo en apache2 y se podrá utilizar después de recargar el servidor con:

#>/etc/init.d/apache2 restart

La configuración del sitio seguro con suphp incluido quedaría así:

NameVirtual *:443<VirtualHost *:443>

ServerName gosa.chaosdimension.org

DocumentRoot /usr/share/gosa/htmlalias /gosa /usr/share/gosa/htmlCustomLog /var/log/apache/gosa.log combinedErrorLog /var/log/apache/gosa.log

suPHP_Engine on

SSLEngine OnSSLCertificateFile /etc/apache2/ssl/gosa.certSSLCertificateKeyFile /etc/apache2/ssl/gosa.keySSLCertificateChainFile /etc/apache2/ssl/gosa.certSSLCertificateKeyFile /etc/apache2/ssl/gosa.keySSLCACertificateFile /etc/apache2/ssl/gosa.caSSLCACertificatePath /etc/apache2/ssl/SSLLogLevel errorSSLLog /var/log/apache2/ssl-gosa.log

<Directory /usr/share/gosa >SSLVerifyClient requireSSLVerifyDepth 1

</Directory></VirtualHost>

Debemos decidir que usuario vamos a usar, en este caso voy a crear uno llamado gosa, que me sirva para el finindicado anteriormente:

#useradd -d /usr/share/gosa/html gosa#passwd -l gosa#cd /usr/share/gosa#find /usr/share/gosa -name "*.phpexec chown gosa ";"#find /usr/share/gosa -name "*.phpexec chmod 600 ";"

3.5. Configuración Php4

La configuración para mod_php se guardará en el sitio que hallamos puesto en la partes anteriores. En nuestrocaso es /etc/php4/apache2.

El archivo de configuración siempre es php.ini y en el configuramos los módulos.Una configuración básica será como esta:

Page 44: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

44 CAPÍTULO 3. APACHE Y PHP

Tabla 3.2: PHP4 Configuration

PHP4 Configuration; Engine

engine = On ; Activa PHPshort_open_tag = On ; Permite usar <? para simplificar <?phpasp_tags = Off ; No permitimos etiquetas estilo ASP: < % %>precision = 14 ; Número de dígitos significantes mostrados en números en coma flotanteoutput_buffering = Off ; Solo permitimos que envie cabecera antes de enviar el contenido.implicit_flush = Off ; No forzamos a php a que limpie el buffer de salida después de cada bloque.

; Safe Modesafe_mode = Off ; No queremos el modo segurosafe_mode_exec_dir = ; Directorio donde se ejecutara PHPsafe_mode_include_dir = Directorios donde hará la busqueda PHP de libreríassafe_mode_allowed_env_vars = PHP_ ; Solo se permite a los usuarios

;a crear variables del sistema que empiecen por PHP_safe_mode_protected_env_vars = LD_LIBRARY_PATH ; Lista de variables del sistema que

; no pueden ser cambiadas por razones de seguridaddisable_functions = ; Funciones que serán desactivadas por razones de seguridadallow_url_fopen = Yes ; Permitimos que se abran archivos desde PHPopen_basedir = ;

; Colores para el modo de síntasis coloreada.highlight.string = #DD0000highlight.comment = #FF8000highlight.keyword = #007700highlight.bg = #FFFFFFhighlight.default = #0000BBhighlight.html = #000000

; Miscexpose_php = On ; Indica en el mensaje del servidor web si está instalado o no.

; Resource Limits ;max_execution_time = 30 ; Tiempo máximo de ejecución del script.memory_limit = 16M ; La cantidad máxima permitida de memoria que puede consumir un script.

; Error handling and logging ;error_reporting = E_ALL; Indicamos que muestre todos los errores y avisos.display_errors = Off ; Que no los imprima en pantalla.display_startup_errors = Off ; Que no muestre los errores de arranque de PHP.log_errors = On ; Que envíe los errores a un fichero.track_errors = On ; Que guarde el último error / aviso para $php_errormsg (boolean)error_log = /var/log/php/php4.log ; Fichero que guardará los erroreswarn_plus_overloading = Off ; No avisamos si se usa el operador + con cadenas de texto

; Data Handling ;variables_order = "EGPCS"; Esta directiva describe el orden en el cual;se registrarán las variables de PHP (Siendo G=GET, P=POST, C=Cookie,; E= Sistema, S= Propias de PHP, todas es indicado como EGPCS)register_globals = Off ; No queremos que se registren las EGPCS como globales.

Continue. . .

Page 45: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

3.5. CONFIGURACIÓN PHP4 45

register_argc_argv = Off ; No declaramos ARGV y ARGC para su uso en scripts.post_max_size = 8M ; Tamaño máximo de un envío POST que aceptará PHP.

; Magic quotesmagic_quotes_gpc = On ; Comillas añadidas para gpc(información GET/POST/Cookie)magic_quotes_runtime= Off ; Comillas añadidas para información generada por el sistema,;por ejemplo desde SQL, exec(), etc.magic_quotes_sybase = Off ; Usar comillas añadidas al estilo de Sybase;(escapa ’ con ” en lugar de \’)

; Tipo de archivo por defecto de PHP y codificación por defecto.default_mimetype = "text/html"default_charset = "iso-8859-1"

; Rutas y directorios ;include_path = . ;doc_root = ; Raíz de las páginas php, mejor dejarlo en blanco.user_dir = ; Donde php ejecuta el script, tambien mejor en blanco.;extension_dir = /usr/lib/php4/apache ; ¿Donde estan los módulos?enable_dl = Off ; Permitir o no la carga dinámica de módulos con la función dl().

; Subir ficheros al servidor;file_uploads = On ; Permitir el subir archivos al servidor.upload_max_filesize = 2M ; Tamaño máximo de los archivos que vamos a subir.

; Extensiones dinámicas ;extension=gd.so ; Graficosextension=mysql.so ; Mysqlextension=ldap.so ; Ldapextension=mhash.so ; Mhashextension=imap.so ; Imapextension=kadm5.so ; Kerberosextension=cups.so ; Cupsys

; Log del sistema[Syslog]

define_syslog_variables = Off ; Desactivamos la definición de variables de syslog.

; funciones de correo[mail function]

;sendmail_path = ;En sistemas Unix, donde esta hubicado sendmail (por defecto es ’sendmail -t -i’)

; depuración[Debugger]

debugger.host = localhost ; Donde está el depurador.debugger.port = 7869 ; En que puerto escucha.debugger.enabled = False ; En principio suponemos que no hay depurados.

; Opciones SQL[SQL]

sql.safe_mode = Off ; Modo seguro de sql, en principio estará desactivado.

; Opciones MysqlContinue. . .

Page 46: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

46 CAPÍTULO 3. APACHE Y PHP

[MySQL]mysql.allow_persistent = Off ; Desactivaremos los enlaces persistentes por razones de seguridad.mysql.max_persistent = -1 ; Numero de conexiones persistentes, no se usa por haberlas desactivado.mysql.max_links = -1 ; Numero máximo de conexiones, -1 es sin limite.mysql.default_port = 3306; Puerto por defecto del mysql.mysql.default_socket = ; Nombre de socket que se usaran para conexiones locales MySQL.;Si está vacio se usara el que tengamos en la configuración de la compilación del PHP.mysql.default_host = ; No configuramos host por defecto.mysql.default_user = ; No configuramos usuario por defecto.mysql.default_password = ; No configuramos una contraseña por defecto.

; Control de sesiones[Session]

session.save_handler = files ; Guardamos la información de sesión en ficheros.session.save_path = /var/lib/php4 ; Donde se van ha guardar los ficheros de sesión.session.use_cookies = 1 ; Usaremos cookies para el seguimiento de sesión.session.name = PHPSESSID ; Nombre de la sesión que será usado en el nombre de la cookie.session.auto_start = 0 ; No iniciamos sesión automáticamente.session.cookie_lifetime = 0 ; Tiempo de vida de una cookie de sesión o 0 si esperamos a que cierre el navegador.session.cookie_path = / ; La ruta para que es válida la cookie.session.cookie_domain = ; El dominio para el cual es válida la cookie.session.serialize_handler = php ; Manipulador usado para serializar los datos.session.gc_probability = 1 ; Probabilidad en porcentaje de que el recolector de basura se active en cada sesión.session.gc_maxlifetime = 1440 ; Después de este tiempo en segundos, la información guardada; será vista como basura para el recolector de basura.session.referer_check = ; Comprueba los Referer HTTP para invalidar URLs externas conteniendo idssession.entropy_length = 0 ; Número de bytes a leer del fichero de entropía.session.entropy_file = ; El fichero que generará la entropía.session.cache_limiter = nocache ; Sin cache de sessiones.session.cache_expire = 180 ; Tiempo de expiración del documento.session.use_trans_sid = 0 ; Usar sid transportable si está activado en la compilación

End

3.5.1. Seguridad

Php es un poderoso lenguaje de script, permite a su usuario tener bastante control sobre el sistema y a atacantesmaliciosos muchas opciones de alcanzar su objetivo.

Un administrador de sistemas no debe suponer que un sistema es completamente seguro con solo tener lasactualizaciones de seguridad instaladas, un sistema que muestra código al exterior no es seguro, aunque el resultadosea HTML, se expone a ataques de formas muy diversas y a fallos de seguridad desconocidos.

Limitar al máximo el acceso que permite php es entonces una necesidad.

3.5.2. Configurando safe php

PHP tiene un modo llamado safe-mode que permite una mayor seguridad, una configuración para Safe moderecomendada es:

Page 47: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

3.6. MÓDULOS DE PHP NECESARIOS 47

3.2 magic_quotes_qpc = On3.2 allow_url_fopen = No3.2 register_globals = Off3.2 safe_mode = On3.2 safe_mode_include_dir =/usr/share/gosa:/var/spool/gosa"3.2 safe_mode_exec_dir =/usr/lib/gosa"3.2 safe_mode_allowed_env_vars = PHP_,LANG3.2 open_basedir =/etc/gosa:/var/spool/gosa:/var/cache/gosa:/usr/share/gosa:/tmp"3.2 include_path = ".:/usr/share/php:/usr/share/gosa:/var/spool/gosa:/usr/share/gosa/safe_bin"3.2 disable_functions = system, shell_exec, passthru, phpinfo, show_source

En el caso de que vayamos a usar SuPHP, debemos dar los siguientes permisos al directorio /var/lib/php4:#chmod 1777 /var/lib/php4

Ya que cada usuario que ejecute PHP guardara la sesión con ese usuario.

3.6. Módulos de PHP necesarios

En esta sección se explicaran los pasos para conseguir compilar y usar los módulos necesarios o importantespara GOsa, se recomienda instalar todos los módulos, incluso los que no son necesarios.

3.6.1. ldap.so

MÓDULO NECESARIOEste módulo no necesita ninguna configuración especial para funcionar.Solo se conoce un problema: No puede conectarse PHP+Apache con un servidor LDAP que pida Certificado

válido. Con lo cual la comunicación será segura, ya que se puede usar SSL, pero no estará garantizada.

3.6.2. mysql.so

MÓDULO OPCIONALEste módulo no necesita ninguna configuración especial para funcionar.Sirve para albergar configuraciones del plugin imap - sieve.

3.6.3. imap.so

MÓDULO OPCIONALEl módulo instalado al compilar PHP funcionara, pero tendrá una importante carencia, la función getacl que da

control sobre las carpetas, así que necesitaremos un parche y una serie de pasos para compilar el módulo para suuso en GOsa.

Nos bajamos el parche de php4-imap-getacl.patch y lo ponemos en /usr/src, como tenemos las fuentes de PHPen /usr/src, ejecutamos los siguientes comandos:

#cd /usr/src/php4.3-XXX/extensions/imap#make clear#patch -p1 </usr/src/patch/php4-imap-getacl.patch#phpize#./configure#make#make install

Esto configurara e instalara correctamente el módulo.

3.6.4. gd.so

MÓDULO OPCIONALEste módulo no necesita ninguna configuración especial para funcionar.

Page 48: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

48 CAPÍTULO 3. APACHE Y PHP

El módulo es usado para el manejo de gráficos, tambien usado por el sistema de plantillas smarty.

3.6.5. cups

MÓDULO OPCIONALPara utilizar el módulo Cups para la selección de la impresora en Posix, primero debemos descargar las fuentes

de cups de http://www.cups.org/software.php y descomprimirlas en /usr/src, ejecutamos entonces los siguientescomandos:

#cd /usr/src/cups-1.1.XX/scripting/php#phpize#./configure#make#make install#echo"extension=cups.so" >> /etc/php4/apache2/php.init#/etc/init.d/apache2 reload

3.6.6. krb

MÓDULO OPCIONALEste módulo necesita tener instaladas las fuentes de kerberos del MIT, ya que no se puede compilar con las

fuentes de kerberos de Heimdal.El módulo interactuará con los servidores Kerberos para actualizar las claves de los usuarios creados.Se descargara de PECL, y lo descomprimiremos en /usr/src, debemos tener tambien las fuentes del kerberos

del MIT, las cuales descomprimiremos en /usr/src, con ello hacemos (sustituimos X.X por las respectivas versionesde los programas):

#cd /usr/src/kadm5-0.X.X/scripting/php#cp config.m4 config.m4.2#seds/krb5-1\.2\.4\/src\/include/krb5-1\.X\.X\/src\/lib/ config.m4.2 >config.m4#rm -f config.m4.2#phpize#./configure#make#make install#echo"extension=kadm5.so" >> /etc/php4/apache2/php.ini#/etc/init.d/apache2 reload

Page 49: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Capítulo 4

GOsa

49

Page 50: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

50 CAPÍTULO 4. GOSA

Page 51: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Capítulo 5

Los Servidores

5.1. Postfix

5.2. Cyrus-IMAP

5.3. Samba 2/3

5.4. Pure-Ftpd

5.5. Squid

5.6. Egroupware

51

Page 52: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

52 CAPÍTULO 5. LOS SERVIDORES

Page 53: Administración de Sistemas con GOsawarping.sourceforge.net/gosa/pdf/es/manual_gosa_es.pdf · Squid ... Configuración Específica para GOsa ... Introducción,¿Que es LDAP? 2.1

Bibliografía

[1] D W Chadwick.Understanding X.500 - The Directory. 2.1.1

[2] Network Working Group. Request for comments: 2251. lightweight directory access protocol (v3). Technicalreport, http://www.ietf.org/rfc/rfc2251.txt. 2.1.1

[3] Network Working Group. Request for comments: 2252. lightweight directory access protocol (v3): Attributesyntax definitions. Technical report, http://www.ietf.org/rfc/rfc2252.txt. 2.1.1

[4] Network Working Group. Request for comments: 2253. lightweight directory access protocol (v3): Utf-8string representation of distinguished names. Technical report, http://www.ietf.org/rfc/rfc2253.txt. 2.1.1

[5] Network Working Group. Request for comments: 2254. the string representation of ldap search filters. Tech-nical report, http://www.ietf.org/rfc/rfc2254.txt. 2.1.1

[6] Network Working Group. Request for comments: 2255. the ldap url format. Technical report,http://www.ietf.org/rfc/rfc2255.txt. 2.1.1

[7] Network Working Group. Request for comments: 2256. a summary of the x.500(96) user schema for usewith ldapv3. Technical report, http://www.ietf.org/rfc/rfc2256.txt. 2.1.1

[8] Network Working Group. Request for comments: 3377. lightweight directory access protocol (v3): Technicalspecification. Technical report, http://www.ietf.org/rfc/rfc3377.txt. 2.1.1

[9] Luiz Ernesto Pinheiro Malère. Ldap linux howto. Technical report, http://www.tldp.org/HOWTO/LDAP-HOWTO/index.html. 2.1.3

[10] metaconsultancy. Using openldap. Technical report, http://www.metaconsultancy.com/whitepapers/ldap.htm.2.1.3

[11] The OpenLDAP Project. Openldap 2.2 administrator’s guide. Technical report,http://www.openldap.org/doc/admin22/index.html. 2.1.3

[12] Sergio González González. Integración de redes con openldap, samba, cups y pykota. Technical report,http://es.tldp.org/Tutoriales/doc-openldap-samba-cups-python/html/ldap+samba+cups+pykota.html. 2.1.3

[13] OpenSSL Project. Openssl documents. Technical report, http://www.openssl.org/docs/. 2.2.1

[14] Network Working Group. Request for comments: 2616. hypertext transfer protocol – http/1.1. Technicalreport, http://www.ietf.org/rfc/rfc2616.txt. 3.1

53