Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Vinculandoconopenldap 111104101427 Phpapp02 PDF
Vinculandoconopenldap 111104101427 Phpapp02 PDF
El autor
Capitulo 1
Directorio OpenLDAP
Sistema de conocimientos:
1.1.- Generalidades y características.
El proyecto OpenLDAP se inició en 1998 por Kurt Zeilenga. El proyecto comenzó como un
clon de la implementación LDAP de la Universidad de Michigan, entidad donde se
desarrolló originalmente el protocolo LDAP y que también actualmente trabaja en la
evolución del mismo.
En abril de 2006, el proyecto OpenLDAP incorpora tres miembros principales: Howard
Chu (Arquitecto jefe), Pierangelo Masarati, y Kurt Zeilenga. Hay otros importantes y
activos contribuyentes incluyendo Luke Howard, Hallvard Furuseth, Quanah Gibson-
Mount, y Gavin Henry.
Los servidores OpenLDAP están fuertemente optimizados para operaciones de lectura
intensivas. A causa de esto, típicamente uno puede ver un orden de magnitud diferente
cuando lee datos de un directorio OpenLDAP frente a la obtención de los mismos datos
de una base de datos relacional optimizada. Sin embargo, a causa de esta optimización a
la mayoría de los directorios OpenLDAP no les viene bien el almacenamiento de datos
donde los cambios son frecuentes. Por ejemplo, un servidor de directorio OpenLDAP es
bueno para almacenar el directorio de teléfonos internos de la empresa, pero ni se te
ocurra pensar en utilizarlo como repositorio de base de datos para un sitio de comercio
electrónico de alto volumen.
Antes de instalar un directorio OpenLDAP debería hacerse las siguientes preguntas y si
las respuestas a estas es si, entonces, almacenar tus datos en OpenLDAP es una buena
idea.
• Te gustaría que tus datos estén disponibles a través de varias plataformas?
• Necesitas acceso a estos datos desde un número de ordenadores o aplicaciones?
• Los registros individuales que estás almacenado cambian unas pocas veces al día
o menos, como medía?
Los servidores de directorio OpenLDAP almacenan sus datos jerárquicamente. Si has
visto las presentaciones de árboles DNS descendientes o directorios de ficheros UNIX,
una estructura de directorio OpenLDAP te será un terreno familiar. Como con los nombres
de host en DNS, un registro Distinguished Name (Nombre Distinguido en español, DN en
corto) de un directorio OpenLDAP se lee desde su entrada individual, recursivamente a
través del árbol, hasta el nivel más alto. Es algo similar a lo que se muestra a continuación
(Figura1.1):
2
Figura 1.1: Árbol directorio OpenLDAP
Para explicar como funciona el OpenLDAP asumamos que se trabajo en una empresa la
cual está registrada en Internet como dominio.cu.
Base DN
Base DN es el punto inicial en la jerarquía del OpenLDAP en el que comenzará la
búsqueda. Una de las forma de escribir es así:
dc=domio,dc=cu
Este formato está separado en componentes de dominio: dominio.cu deviene dc=dominio,
dc=cu. En teoría, esta forma puede ser levemente más versátil, aunque es un poco más
duro de recordar para los usuarios finales.
Unidades Organizacionales (OU)
Debajo de la base de directorio (Base DN), se querrá crear contenedores que separen
lógicamente los datos. Por razones históricas (X.500), la mayoría de los directorios
configuran estas separaciones lógicas como entradas OU. OU vienen de "Organizational
Units" (Unidades Organizacionales, en español), que en X.500 eran utilizadas para indicar
la organización funcional dentro de la empresa: ventas, finanzas, etc. Actualmente las
implementaciones de OpenLDAP han mantenido la convención del nombre ou=, pero
separa las cosas por categorías amplias como ou=people, ou=groups y demás. Se
escribiría de esta forma:
ou=people,dc=dominio,dc=cu
Para las cuentas de usuario, típicamente se verá un DN basado en el cn o en el uid (ID
del usuario). Aquí se mostrarán dos formas de escribirlas:
uid=rcores,ou=people,dc=dominio,dc=cu
cn=rcores,ou=people,dc=dominio,dc=cu
Formato LDIF:
El LDAP Data Interchange Format (LDIF) es un formato que se utiliza para la importación
y exportación de datos independientemente del servidor LDAP que se esté utilizando.
Cada servidor LDAP tiene una o varias maneras de almacenar físicamente sus datos en
el disco rígido, por esto que LDIF provee una manera de unificar, la forma de tratar los
datos y así poder migrar de un servidor a otro sin importar que clase de implementación
es.
3
El formato LDIF es simplemente un formato de texto ASCII para entradas LDAP que
transmite el contenido del directorio como un conjunto de registros, un registro por cada
objeto (o entrada). Representa a las solicitudes de actualización, tales como agregar,
modificar, eliminar y cambiar el nombre, como un conjunto de registros, grabar uno para
cada solicitud de actualización. También es útil para realizar copias de seguridad de los
datos de un servidor LDAP, siempre manteniendo la independencia de la implementación
LDAP y de la plataforma donde esté instalada.
Los schema:
Son archivos donde se definen cada una de las estructuras (clases) y sus atributos
(attributes) para la construcción de entradas LDAP; cada archivo con extensión .schema
define dentro de él uno o más objectClasses y sus respectivos atributos.
4
Instalación y configuración
COMUN
Tabla de versiones:
Paquetes Versión Lenny Versión Squeeze
slapd 2.4.11-1+l 2.4.23-7
ldap-utils 2.4.11-1+l 2.4.23-7
# aptitude install slapd ldap-utils
• Contraseña del administrador: passwd_desea_poner
• Verificación de contraseña: passwd_puesto_anterior
Luego de instalado, para realizar una completa configuración del OpenLDAP, se hace lo
siguiente:
GNU/LINUX DEBIAN 5 (LENNY)
# dpkg-reconfigure slapd
• Desea omitir la configuración del servidor OpenLDAP?: No
• DNS domain name: dominio.cu
• Organization name: dominio.cu
• Contraseña del administrador: passwd_desea_poner
• Verificación de contraseña: passwd_puesto_anterior
• Database backend to use: HDB (En mi caso escogí está porque es un nuevo tipo de
almacenamiento para OpenLDAP, que sustituye el antiguo BDB, HDB utiliza Oracle
Berkeley DB para el almacenamiento y almacena las entradas de forma jerárquica).
• Desea que borre la base de datos cuando se purge el paquete slapd?: No
• Desea mover la base de datos antigua?: Si
• Reintentar la configuración?: No
• Allow LDAPv2 protocol: No
5
COMUN
Ahora se prueba que la configuración del OpenLDAP que se hizo está bien:
# ldapsearch -x -b "dc=dominio,dc=cu"
# extended LDIF
#
# LDAPv3
# base <dc=dominio,dc=cu> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# dominio.cu
dn: dc=dominio,dc=cu
objectClass: top
objectClass: dcObject
objectClass: organization
o: dominio.cu
dc: dominio
# admin, dominio.cu
dn: cn=admin,dc=dominio,dc=cu
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
Si sale algo similar a esto, es que la instalación salió exitosamente.
dn: ou=groups,dc=dominio,dc=cu
objectClass: top
objectClass: organizationalUnit
ou: groups
6
Hay que fijarse bien que entre cada objeto que se crea hay un espacio, de esa forma es
como sabe el OpenLDAP que se refiere a objetos diferentes. Luego de esto se añade el
fichero ldif. Se mostrarán varios formas de añadir los archivos ldif.
Forma 1:
# invoke-rc.d slapd stop
# slapadd -l /etc/ldap/ldif/crear_dir.ldif
# invoke-rc.d slapd start
Forma 2:
# ldapadd -x -f /etc/ldap/ldif/crear_dir.ldif -D "cn=admin,dc=dominio,dc=cu" -W
Ahora le explico bien la traducción de este comando:
-x para indicar el tipo de autenticación simple.
-f (dir/fichero.ldif): permite leer las operaciones del fichero.
-D: para poner el usuarios del OpenLDAP.
-W: solicita la contraseña del usuario.
De la segunda forma le deberá mostrar algo parecido a esto:
adding new entry "ou=people,dc=dominio,dc=cu"
7
Capítulo 2
Sistema de conocimientos:
2.1.- Características.
Instalación y configuración
COMUN
Tabla de versiones:
Paquetes Versión Lenny Versión Squeeze
php5 5.2.6.dfsg 5.3.3-7
apache2 2.2.9-10+l 2.2.16-6
libapache-mod-php5 5.2.6.dfsg 5.3.3-7
gosa 2.5.16.1-4 2.6.11-3
En este paso se instalará la interfaz web para administrar más comodo al OpenLDAP.
Junto con esta interfaz web se instalará también los servicios de Apache2 y PHP5 para
permitirnos interactuar con el GOsa.
# aptitude install php5 php5-imagick php5-common php5-gd php5-ldap php5-
mhash php5-cli php5-recode php5-snmp php5-cgi apache2 libapache2-mod-php5
Luego de instalados los paquetes anteriores se procede a instalar la interfaz web GOsa.
GNU/LINUX DEBIAN 5 (LENNY)
# aptitude install gosa gosa-desktop gosa-schema
Instalado todo esto, se le añade los siguientes schema al OpenLDAP, el orden de los
schema debe quedar de la siguiente forma:
# nano /etc/ldap/slapd.conf
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/samba3.schema
include /etc/ldap/schema/gosystem.schema
include /etc/ldap/schema/gofon.schema
include /etc/ldap/schema/goto.schema
include /etc/ldap/schema/gofax.schema
include /etc/ldap/schema/goserver.schema
include /etc/ldap/schema/gosa+samba3.schema
password-hash {MD5}
9
El orden de estos include es importante y la opción “password-hash {MD5}” hace que
LDAP siempre almacene las contraseñas encriptadas usando MD5.
GNU/LINUX DEBIAN 6 (SQUEEZE)
A partir de esta versión junto al GOsa se instalan los plugin's que uno desea.
# aptitude install gosa gosa-desktop gosa-plugin-addressbook gosa-plugin-
connectivity gosa-plugin-dhcp gosa-plugin-dhcp-schema gosa-plugin-goto gosa-
plugin-ldapmanager gosa-plugin-mail gosa-plugin-samba gosa-plugin-squid
gosa-plugin-systems gosa-plugin-uw-imap gosa-schema
Cuando se tengan estos paquetes instalados se le añaden los schemas; ya que son
tantos se parará el servicio. La forma que se verá a continuación es una de las formas
que se le puede añadir schemas al OpenLDAP.
Lo primero es crear el archivo convschema y la carpeta schemaldif.
# mkdir /tmp/schema.ldif
# touch /tmp/convschema
Dentro del archivo convschema se ponen los siguientes schemas:
# nano /tmp/convschema
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/gosa/samba3.schema
include /etc/ldap/schema/gosa/gosystem.schema
include /etc/ldap/schema/gosa/gofon.schema
include /etc/ldap/schema/gosa/goto.schema
include /etc/ldap/schema/gosa/gofax.schema
include /etc/ldap/schema/gosa/goserver.schema
include /etc/ldap/schema/gosa/gosa-samba3.schema
Llego el momento de convertir estos schema en ldif y darles los permisos adecuados para
ser añadidos al OpenLDAP.
# slaptest -f /tmp/convschema -F /tmp/schema.ldif/
# rm -r /etc/ldap/slapd.d/cn\=config/cn\=schema/
# cp -R /tmp/schema.ldif/cn\=config/cn\=schema/ /etc/ldap/slapd.d/cn\=config/
# chown -R openldap:openldap /etc/ldap/slapd.d/cn\=config/cn\=schema/
COMUN
Ahora se debe reiniciar el OpenLDAP.
# invoke-rc.d slapd restart
Llegado a este punto y realizado los cambios pertinentes se configurará el GOsa. Ahora
en el navegador preferido de ustedes se debe poner http://ip_server_openldap/gosa (ej:
http://192.168.1.0/gosa).
Este proceso de configuración se irá explicando pantalla a pantalla.
10
Figura 2.1: Página Bienvenida de la Interfaz web GOsa
Primera pantalla:
Aquí para poder seguir con el proceso de configuración se debe de copiar lo señalado en
rojo en el servidor y darle Enter, todo esto es en el servidor donde este instalado el Gosa.
(ojo: lo que esta después el “echo -n” ese serial cambia, fijarse bien en el que le ponga a
ustedes en el proceso de configuración).
Segunda pantalla:
11
Tercera pantalla:
12
Quinta pantalla:
13
Séptima pantalla:
14
Octava Pantalla:
15
Novena pantalla:
16
Décima Pantalla:
17
Crear un usuario
Aquí veremos como crear un usuario sin activarle ningún servicio. Los servicios de cada
usuario se irán activando a la par de su instalación y configuración con el OpenLDAP. No
se va a especificar la versión porque es mas o menos parecido una de la otra.
Luego de haber accedido al GOsa se va a la sección Administration -->> Usuarios.
18
Crear un grupo
Aquí veremos como crear un grupo cualquiera para luego usarlo para cualquier servicio.
No se va a especificar la versión porque es mas o menos parecido una de la otra.
Luego de haber accedido al GOsa se va a la sección Administration -->> Grupos.
19
Crear un servidor
Aquí es donde vamos a mostrar como añadir un servidor al directorio OpenLDAP, aquí no
se va a mostrar como añadirle un servicio a ese servidor, los servicios se irán añadiendo a
medida que se vayan vinculando con el OpenLDAP en los siguiente capítulos. No se va a
especificar la versión porque es mas o menos parecido una de la otra.
Cuando se acceda al GOsa se va a la sección Administration -->> Sistemas.
20
Tareas para el autoaprendizaje:
1. ¿Qué características distinguen la Interfaz Web GOsa? Mencione la función de este
proyecto.
2. Argumente por qué es necesario la instalación del php5 con sus complementos y el
apache2 antes que el Interfaz Web GOsa.
3. Con respecto a la instalación y configuración de la Interfaz Web GOsa puntualice:
• Compare el procedimiento de configuración del directorio OpenLDAP entre las
versiones GNU/LINUX Debian 5 y GNU/LINUX Debian 6 al instalar la Interfaz Web
GOsa..
• Por qué se modifica el directorio OpenLDAP a la hora de instalar la Interfaz Web
GOsa?. Mencione las modificaciones.
4. Estudie el procedimiento para la configuración de la Interfaz Web GOsa.
21
Capitulo 3
Samba3
Sistema de conocimientos:
23
Instalación y Configuración
COMUN
Tabla de versiones:
Paquetes Versión Lenny Versión Squeeze
samba 2:3.2.5-4l 2:3.5.6~df
samba-tools 2:3.2.5-4l 2:3.5.6~df
smbclient 2:3.2.5-4l 2:3.5.6~df
Lo primero que se hará es instalar el Samba. Para poder trabajar un poco con él y así
caer en el tema que importa, que es configurar un PDC Master.
# aptitude install samba samba-common samba-tools smbfs smbclient
• Nombre del dominio o del grupo de trabajo: nombre_dominio
• Modificar smb.conf para usar la configuración WINS que proviene de DHCP?: No
24
# smbclient //IP_server_samba/miprueba -N
Anonymous login successful
Domain=[INFOSOC] OS=[Unix] Server=[Samba 3.5.6]
smb: \> dir
. D 0 Mon Jan 10 10:01:24 2011
.. D 0 Tue Jan 11 12:58:58 2011
rogelio D 0 Mon Jan 10 09:22:38 2011
datos D 0 Mon Jan 10 09:33:57 2011
aquota.user 8192 Tue Jan 11 12:54:03 2011
aquota.group 8192 Tue Jan 11 10:46:08 2011
lost+found D 0 Mon Jan 10 09:11:22 2011
perfiles D 0 Mon Jan 10 09:36:54 2011
25
lost+found D 0 Mon Jan 10 09:11:22 2011
perfiles D 0 Mon Jan 10 09:36:54 2011
26
Para deshacer todo lo hecho antes y configurar el samba desde cero, primero se restaura
a la configuración original y luego se edita, todo de la siguiente forma:
# cp /etc/samba/smb.conf.bk /etc/samba/smb.conf
# nano /etc/samba/smb.conf
[global]
# Este es el nombre del grupo en la red.
workgroup = DOMINIO
(+)realm = DOMINIO.CU
# Nombre que se mostrará en la red
(+)netbios name = NombPC
# Establece un literal descriptivo para el servidor Samba. Con esto pondrá versión del samba y pc donde
# está instalado.
server string = Samba PDC %v en (%h)
# Controla si Samba actúa como servidor WINS.
wins support = no
# Define si se utiliza el servidor Samba como un proxy DNS.
dns proxy = no
# Su principal función es controlar como se realiza la resolución NetBIOS.
name resolve order = wins lmhosts host bcast
# Configuración para que la pc sea PDC master
# Determina si el Samba va hacer PDC master o no.
(+)os level = 65
# Controla si Samba es un examinador principal para nuestro dominio o grupo de trabajo
(+)preferred master = yes
# Le permite al nmbd intentar y constituirse en examinador principal en una subred
(+)local master = yes
# Este parámetro indica a nmbd que solicite un nombre NetBIOS de dominio especial que lo identifica como
# examinador principal del dominio para el grupo de trabajo dado.
(+)domain master = yes
# Si se pone como yes, el servidor Samba como controlador primario de dominio (PDC). Este parametro se
# debe usar conjuntamete con domain master
(+)domain logons = yes
# Esta opción afecta el como los clientes responden a Samba. Con el nivel de seguridad user un cliente
# tiene que conectarse con un nombre de usuario y clave válidos.
security = user
# Esto es para negociar las claves cifradas con el cliente
encrypt passwords = yes
# Activa o desactiva el acceso a cuentas que tienen claves nulas.
(+) null passwords = no
# Aquí se pone los hosts o segmento de red a los que se le permite acceso a los servicio de Samba
(+)hosts allow = 192.168.10.0/24
# Permite redefinir la lista de interfaces de red predeterminada que usa Samba para examinar, registro de
# nombres, y otro tráfico NBT. Los valores pueden ser nombre_interfaz (ej: eth0), pareja IP/masc (ej:
# 192.168.10.0/24).
intefaces = eth0 lo
# El nombre de un programa que se puede usar para asignar claves de usuarios.
passwd program = /usr/bin/smbldap-passwd %u
# Parámetros para soporte LDAP
(+)passdb backend = ldapsam:ldap://ip_server_ldap
(+)ldap suffix = dc=dominio,dc=cu
(+)ldap machine suffix = ou=machines
(+)ldap user suffix = ou=people
(+)ldap group suffix = ou=groups
(+)ldap admin dn = cn=admin,dc=dominio,dc=cu
(+)ldap delete dn = no
(+)enable privileges = yes
# para permitir a los usuarios cambiar su clave desde Windows
(+)ldap password sync = yes
add user script = /usr/sbin/smbldap-useradd -m “%u”
add group script = /usr/sbin/smbldap-groupadd -p “%g”
(+)delete user from group script = /usr/sbin/smbldap-groupmod -x “%u”
27
(+)set primary group script = /usr/sbin/smbldap-usermod -g “%g” “%u”
(+)add user to group script = /usr/sbin/smbldap-groupmod -m “%u” “%g”
add machine script = /usr/sbin/user/add -d /dev/null -s /bin/false -d /var/lib/nobody %u
(+)ldapsam:editposix = yes
# Especifica el rango de uid de usuario que se reservan para asociar usuarios UNIX con SID de usarios NT.
idmap uid = 10000-20000
# Especifica el rango de id de grupo que se reservan para asociar grupos UNIX con SID de grupos NT.
idmap gid = 20000-30000
(+)case sensitive = yes
[homes]
# Especifica la ejecución de un comando como root cuando alguien se conecta al servicio.
(+)root preexec = /bin/user.sh %U %S %I
# Texto que se ve junto al recurso.
comment = Directorio Usuario
# Directorio al cual tendrán acceso los usuarios del servicio
path = /home/%U/datos
valid users = %S
read only = no
browseable = no
directory mask = 0700
# Los nuevos directorios heredan los permisos del directorio padre
inherit permissions = yes
Para chequear que el samba está ya configurado como un PDC master se ejecutará el
comando testparm y se deberá mostrar lo siguiente:
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[netlogon]"
Processing section "[profiles]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions
Ahora se creará el script user.sh
# touch /bin/user.sh
# nano /bin/user.sh
#!/bin/bash
if [ ! -d $1 ]
then
mkdir /home/datos/$1
mkdir /home/profiles/$1
cp /etc/skel/.* /home/datos/$1
fi
chown -R $1 /home/datos/$1
chown -R $1 /home/profiles/$1
Se le cambian los permisos al archivo /bin/user.sh
# chmod 755 /bin/user.sh
Luego se le pasa a Samba la contraseña del usuario administrador se Servidor
OpenLDAP ya que este necesita escribir algunos datos en el OpenLDAP, se hace de la
siguiente forma:
# smbpasswd -W
Ojo la contraseña que se introduce aquí es la del administrador del OpenLDAP.
# invoke-rc.d samba restart
28
Ya realizado los cambios en el archivo smb.conf hay que configurar los ficheros smbldap-
tools y smbldap_bind, que se encuentra en /etc/smbldap-tools/; en caso que el sistema no
lo haya creado en la instalación se hace lo siguiente:
# cp /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz /etc/smbldap-tools/
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/
# gunzip /etc/smbldap-tools/smbldap.conf.gz
En el fichero /etc/smbldap-tools/smbldap-tools lo mas importante es cambiar el valor
de esta opción SID=“” por el tuyo, que lo obtienes mediante el comando net getlocalsid.
Aquí solo se mostrará lo que ha sido cambiado. Para ver la configuración completa ver
Anexo2.
# nano /etc/smbldap-tools/smbldap-tools
SID=”al que te muestre el comando antes comentado”
sambaDomain=”DOMINIO”
suffix=”dc=dominio,dc=cu”
userdn=”ou=people,${suffix}”
computerdn=”ou=machines,${suffix}”
hash_encrypt=”MD5”
crypt_salt_format=”$1$%.8s”
userLoginShell=”/bin/false”
userSmbHome=”\\DOMINIO\%U”
userProfile=”\\DOMINIO\profiles\%U”
userHomeDrive=”Z:”
Este otro fichero solo contiene la información sobre el usuario y la contraseña con el que
se debe conectar al servidor OpenLDAP.
# nano /etc/smbldap-tools/smbldap_bind.conf
masterDN="cn=admin,dc=dominio,dc=cu"
masterPw="passwd_admin_OpenLDAP"
Una vez realizado todo esto deberemos de introducir el siguiente comando:
# smbldap-populate
Si todo esta bien, nos debe salir algo similar a esto:
Populating LDAP directory for domain DOMINIO (S-1-5-21-859530851-107162760-3624729787)
(using builtin directory structure)
entry dc=dominio,dc=cu already exist.
entry ou=people,dc=dominio,dc=cu already exist.
entry ou=groups,dc=dominio,dc=cu already exist.
entry ou=machines,dc=dominio,dc=cu already exist.
adding new entry: ou=idmap,dc=dominio,dc=cu
adding new entry: uid=root,ou=people,dc=dominio,dc=cu
adding new entry: uid=nobody,ou=people,dc=dominio,dc=cu
adding new entry: cn=Domain Admins,ou=groups,dc=dominio,dc=cu
adding new entry: cn=Domain Users,ou=groups,dc=dominio,dc=cu
adding new entry: cn=Domain Guests,ou=groups,dc=dominio,dc=cu
adding new entry: cn=Domain Computers,ou=groups,dc=dominio,dc=cu
entry cn=Administrators,ou=groups,dc=dominio,dc=cu already exist.
adding new entry: cn=Account Operators,ou=groups,dc=dominio,dc=cu
adding new entry: cn=Print Operators,ou=groups,dc=dominio,dc=cu
adding new entry: cn=Backup Operators,ou=groups,dc=dominio,dc=cu
adding new entry: cn=Replicators,ou=groups,dc=dominio,dc=cu
entry sambaDomainName=DOMINIO,dc=dominio,dc=cu already exist. Updating it...
Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password:
Retype new password:
29
Ahora se reinicia el Samba
# invoke-rc.d samba restart
Ahora se comprobara si el mapeo de los usuarios se ha hecho correctamente de forma
automática:
# net groupmap list
Deberá mostrar algo parecido a esto:
Domain Admins (S-1-5-21-859530851-107162760-3624729787-512) -> 512
Domain Users (S-1-5-21-859530851-107162760-3624729787-513) -> 513
Domain Guests (S-1-5-21-859530851-107162760-3624729787-514) -> 514
Domain Computers (S-1-5-21-859530851-107162760-3624729787-515) -> 515
Account Operators (S-1-5-32-548) -> 548
Print Operators (S-1-5-32-550) -> 550
Backup Operators (S-1-5-32-551) -> 551
Replicators (S-1-5-32-552) -> 552
También se chequeará si el sistema reconoce estos grupos:
# getent group
Mostrará lo siguiente:
Domain Admins:*:512:root
Domain Users:*:513:
Domain Guests:*:514:
Domain Computers:*:515:
Administrators:*:544:
Account Operators:*:548:
Print Operators:*:550:
Backup Operators:*:551:
Replicators:*:552:
Ya solo te queda crear un usuario para añadir las computadoras de la red al dominio.
30
Figura 3.1: Pestaña Unix del Usuario
A continuación se va a la pestaña Samba que es donde se configura todo lo del sistema
operativo Windows respecto al usuario, en este caso luego de dar clic en Añadir
características Samba se le da clic en el botón OK y si es un usuario ya creado se
guardarán los cambios y sino saldrá para definirle la contraseña al nuevo usuario.
31
Tareas para el autoaprendizaje:
1. Estudie y resuma las características del Samba3. Mencione sus funciones.
2. Cuáles son los requerimientos mínimos que debe conocer el especialista para el
trabajo con el Samba3.
3. Profundice y resuma el procedimiento para la creación de una carpeta compartida por
el Samba3.
4. Haga un cuadro resumen con los pasos lógicos para la instalación de un PDC Master.
Estudie los procedimientos y comandos para la instalación y configuración de este
servicio.
5. Estudie en el Anexo 3 del manual los posibles errores que pueden presentarse a la
hora de vincular el Samba3 con el Directorio OpenLDAP, sus causas y su posible
solución.
32
Capitulo 4
Postfix
Sistema de conocimientos:
4.4.- Procedimiento para añadir los servicios cyrus y postfix desde el GOsa
Características, función y estructura
Postfix es un servidor de correo de código abierto, un programa informático para el
enrutamiento y envío de correo electrónico, creado con la intención de que sea una
alternativa más rápida, fácil de administrar y sobre todo seguro como el Sendmail. Es un
MTA (Mail Transport Agent) originalmente escrito por Wietsa Venema durante su estancia
en la IBM y continua siendo desarrollado activamente.
Es el agente de transporte por omisión en diversas distribuciones de Linux y en las
últimas del Mac OS X. Postfix trabaja de la siguiente forma:
La figura que viene a continuación, proporciona una visión global de los elementos que
componen Postfix:
34
La tabla aliases, al igual que en Sendmail, define una serie de nombres alternativos a
usuarios locales, y la consulta el proceso local.
El proceso cleanup, mediante la tabla canonical establece relaciones entre nombres
alternativos y nombres reales, ya sean usuarios locales o no.
El proceso qmgr utiliza la tabla relocated para devolver los mensajes de usuarios que han
cambiado de dirección: “User has moved to new-email”.
Con la tabla transport, que es utilizada por el proceso trivial-rewrite, se define la política de
encaminamiento por dominios, subdominios e incluso por dirección concreta de usuario.
Para la gestión y soporte de dominios virtuales el proceso cleanup utiliza la tabla virtual.
En ella se establecen las relaciones entre usuarios virtuales y reales, e incluso de
dominios completos.
35
Instalación y Configuración
COMUN
Tabla de versiones:
Paquetes Versión Lenny Versión Squeeze
postfix 2.5.5-1.1 2.7.1-1
cyrus 2.2.13-14+ 2.2.13-19
sasl 2.1.22.dfs 2.1.23.dfs
Antes de comenzar hay que aclarar que la configuración que se realizará aquí, es
suponiendo que ya se tiene un servidor de correo que sirva de Relay de Correo, en caso
contrario en vez de poner la opción Internet con smarthost se deberá coger Sitio de
Internet y se sigue la configuración igual a como se mostrará a continuación. Tampoco se
pondrá la tabla de versiones porque esta configuración sirve para cualquier versión del
postfix. Solamente se diferenciará las versiones a la hora de añadir el servidor en el
GOsa2.
36
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: mail@dominio.cu
250 2.1.0 Ok
rcpt to: correo@loquesea.com (yo use mi dirección de gmail por su rapidez)
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Esto es una prueba de mi primera parte de config del POSTFIX.
.
250 2.0.0 Ok: queued as 8F8D466A049
quit
221 2.0.0 Bye
Connection closed by foreign host.
En los log's se debe mostrar algo similar a esta salida:
Apr 19 12:59:29 phil postfix/smtpd[3972]: 8F8D466A049: client=nombServ.dominio.cu[192.168.1.13]
Apr 19 12:59:55 phil postfix/cleanup[3975]: 8F8D466A049: message-
id=<20100419165929.8F8D466A049@nombServ.dominio.cu>
Apr 19 12:59:55 phil postfix/qmgr[3966]: 8F8D466A049: from=<mail@dominio.cu>, size=390, nrcpt=1
(queue active)
Apr 19 12:59:57 phil postfix/smtp[3976]: 8F8D466A049: to=<correo@loquesea.com>,
relay=200.55.136.178[200.55.136.178]:25, delay=42, delays=40/0.01/1.1/1.4, dsn=2.0.0, status=sent (250
2.0.0 Ok: queued as 14B558B4A3)
Apr 19 12:59:57 phil postfix/qmgr[3966]: 8F8D466A049: removed
Ya en este punto esta configurado para mandar correos, pero no para recibirlos.
37
# mkdir -p /var/spool/postfix/var/run/saslauthd/
# chmod 755 /var/spool/postfix/var/run/saslauthd/
# chown root.sasl /var/spool/postfix/var/run/saslauthd/
# invoke-rc.d saslauthd restart
Ya realizado lo anterior se instala todo los paquetes referente al cyrus.
# aptitude install cyrus-admin-2.2 cyrus-common-2.2 cyrus-clients-2.2 cyrus-
imapd-2.2 cyrus-pop3d-2.2 cyrus-doc-2.2
Aquí solo se mostrará lo cambiado. Para ver la configuración completa ver Anexo 5.
# nano /etc/imapd.conf
unixhierarchysep: yes
# Esta opción es para definir los usuarios con permiso de administración.
admins: cyrus
# Lista de los mecanismo de autenticación que se van a soportar
sasl_mech_list: PLAIN LOGIN
# El valor por defecto es 0, que permite texto plano, en primera instancia. Una vez funcionando se puede
# aumentar la seguridad
sasl_minimum_layer: 0
# Esta opción nos permite especificar los plugins del auxpropd que deseamos cargar, en el caso de estar
# usando sasl_pwcheck_method: auxprop. Es necesario descomentar esta línea para que use sasldb.
sasl_auxprop_plugin: sasldb
Luego se reinicia el servicio y se crea el usuario Cyrus que fue el que se declaró como
administrador. También se probará que el mismo este bien creado.
# invoke-rc.d cyrus2.2 restart
# saslpasswd2 -c cyrus
# imtest -a cyrus localhost
S: * OK phil Cyrus IMAP4 v2.2.13-Debian-2.2.13-14+lenny3 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS ID
NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT
THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE IDLE
S: C01 OK Completed
Please enter your password: passwd_user_probando
C: L01 LOGIN cyrus {1}
S: + go ahead
C: <omitted>
S: L01 OK User logged in
Authenticated.
Security strength factor: 0
Deberá mostrar algo como lo anterior, si es así, quiere decir que hasta el momento todo
esta bien. Es hora de crear un usuario en cyrus y sasl para probarlo con el postfix.
# cyradm -- user cyrus localhost
IMAP Password:
localhost>cm user/test
localhost> exit
# saslpasswd2 -c test
38
Postfix con Cyrus2.2 y el SASL
Ya llegado aquí, lo que se debe hacer es activar el soporte SASL y vincular el Cyrus2.2 al
Postfix. Lo primero es crear el archivo smtpd.conf e insertarle lo siguiente:
# nano /etc/postfix/sasl/smtpd.conf
# método para la verificación de la clave de acceso
pwcheck_method: saslauthd
# mecanismos de encriptación de la clave de acceso del usuario a utilizar para la autenticación ante una
# conexión por smtp
mech_list: plain login
Ahora en el main.cf se le añade lo siguiente:
# nano /etc/postfix/main.cf
# Este parámetro consulta con todos los nombres o direcciones de los destinatarios locales. Una dirección
# de destinatario es local, cuando su dominio coincide con $mydestination, $inet_interfaces o
# $proxy_interfaces
local_recipient_maps = $alias_maps unix:passwd.byname
virtual_alias_maps = hash:/etc/postfix/virtual
# habilitar el soporte sasl en el postfix
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
# no permitir usuarios anónimos en la autenticación mediante sasl
smtpd_sasl_security_options = noanonymous
# evitar que ciertos clientes no entiendan las líneas del sasl
broken_sasl_auth_clients = yes
#### LISTAS DE CONTROL DE ACCESO ####
smtpd_helo_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname
smtpd_sender_restrictions =
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit_sasl_authenticated,
permit_mynetworks
smtpd_recipient_restrictions =
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_unlisted_recipient,
permit
smtpd_data_restrictions =
reject_multi_recipient_bounce,
reject_unauth_pipelining
mailbox_transport = cyrus
También se debe añadir al final un proceso al archivo master.cf, pero primero se creará
una copia del mismo por cualquier cosa que pase, volver para atrás.
# cp /etc/postfix/master.cf /etc/postfix/master.cf.bk
# nano /etc/postfix/master.cf
cyrus unix - n n - - pipe
flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user}
39
En este punto les daré dos formas de llenar el archivo /etc/postfix/virtual:
1. sasldblistusers2 | perl -ne 'print "$1\t$1\n" if /^([^:]+):/;' > /etc/postfix/virtual
2. Esta forma es mas a la antigua y es así:
# touch /etc/postfix/virtual
# nano /etc/postfix/virtual
### Ojo aquí van los usuarios que creas en la base datos sasl.
user@dominio.cu user@dominio.cu
Luego de tener los usuario en /etc/postfix/virtual se le debe hacer postmap para convertir
el contenido de la tabla virtual en el fichero binario indexado necesario para que el postfix
pueda leerla.
# postmap /etc/postfix/virtual
Después de todo esto se reinicia y se prueba el postfix.
# invoke-rc.d postfix restart
# telnet IPServ 25
Trying 192.168.1.13...
Connected to nombServ.dominio.cu.
Escape character is '^]'.
220 nombServ.dominio.cu ESMTP Postfix (Debian/GNU)
ehlo nombServ
250-nombServ.dominio.cu
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: test@dominio.cu
250 2.1.0 Ok
rcpt to: test@dominio.cu
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Esto es una prueba de mi segunda etapa de Configuración.
.
250 2.0.0 Ok: queued as A2DC666A057
quit
221 2.0.0 Bye
En los log's se debe mostrar algo similar a esta salida de aquí abajo:
Apr 20 14:36:49 phil cyrus/lmtpunix[6994]: Delivered: <20100420183637.A2DC666A057@dominio.cu> to
mailbox: user.test
Apr 20 14:36:49 phil postfix/pipe[7204]: A2DC666A057: to=<test@dominio.cu>, relay=cyrus, delay=82,
delays=82/0.01/0/0.02, dsn=2.0.0, status=sent (delivered via cyrus service)
Apr 20 14:36:49 phil postfix/qmgr[6981]: A2DC666A057: removed
Ahora se deberá verificar si el correo llego bien a su destino.
# telnet IPServ 143
Trying 192.168.1.13...
Connected to phil.infosoc.cu.
Escape character is '^]'.
* OK phil Cyrus IMAP4 v2.2.13-Debian-2.2.13-14+lenny3 server ready
x login nombuser passwd
x OK User logged in
x select inbox
40
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 1 EXISTS
* 1 RECENT
* OK [UIDVALIDITY 1272045852]
* OK [UIDNEXT 2]
x OK [READ-WRITE] Completed
x fetch 1 (body[text])
* 1 FETCH (BODY[TEXT] {30}
Esta es mi segunda prueba.
)
x OK Completed (0.000 sec)
x logout
* BYE LOGOUT received
x OK Completed
Connection closed by foreign host.
Si hasta aquí todo se a hecho como se ha indicado aquí, se puede decir que ya se tiene
un servidor de correo con Postfix, Cyrus-imap y SASL. Pero el verdadero objetivo es
vincular todo esto con el Directorio OpenLDAP para tener a todos los usuarios de la red
centralizados.
41
# touch /etc/saslauthd.conf
# nano /etc/saslauthd.conf
ldap_servers: ldap://IPServLDAP
ldap_bind_dn: cn=admin,dc=dominio,dc=cu
ldap_bind_pw: passwd_uer_admin
ldap_search_base: ou=people,dc=dominio,dc=cu
ldap_scope: sub
ldap_auth_method: bind
ldap_filter: uid=%U
# nano /etc/default/saslauthd
START=yes
MECHANISMS="ldap"
PARAMS="-a ldap -O /etc/saslauthd.conf"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Activación del mecanismo ldap.
# saslauthd -a ldap
A partir de ahora todo lo que viene a continuación es común para cualquiera de los dos
métodos de autenticación. Aplicado cualquiera de los dos métodos se reinicia el servicio y
se prueba la configuración. Importante la prueba se hace con un usuario del OpenLDAP.
# invoke-rc.d saslauthd restart
# testsaslauthd -u user_ldap -p passwd
0: OK "Success."
Si muestra lo anterior quiere decir que el saslauthd esta reconociendo los usuarios del
directorio OpenLDAP.
Ahora se procede a modificar el archivo imapd.conf para que el cyrus reconozca
mediante el mecanismo saslauthd los usuario del OpenLDAP, para esto se le añade lo
siguiente:
# nano /etc/imapd.conf
# En esta opción va el nombre del servidor.
servername: nombServ.dominio.cu
sasl_pwcheck_method: saslauthd
#esto se habilitará para poder crear las cuentas mediante el GOsa2
imap_admins: cyrus
Como es de costumbre ahora se prueba que la configuración que se ha hecho hasta el
momento, trabaje bien. Esta prueba también se realiza con un usuario del OpenLDAP y
deberá mostrar algo parecido a esto.
# imtest -a user_ldap localhost
S: * OK phil Cyrus IMAP4 v2.2.13-Debian-2.2.13-14+lenny3 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS ID
NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT
THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE IDLE
S: C01 OK Completed
Please enter your password: passwd_user
C: L01 LOGIN rogelio {8}
S: + go ahead
C: <omitted>
S: L01 OK User logged in
Authenticated.
Security strength factor: 0
42
Luego de todas estas configuraciones, se deberá crear el usuario administrador del cyrus
en el OpenLDAP mediante el GOsa2, ya que es el mismo que se usará para todas las
configuraciones que se realizarán, el mismo debe de coincidir con el usuario que se
definió en el parámetro imap_admins y luego a configurar el postfix de nuevo.
# nano /etc/postfix/main.cf
virtual_alias_maps = ldap:/etc/postfix/openldap/virtual_alias_maps.cf,
ldap:/etc/postfix/openldap/virtual_user_aliases.cf
Ya solo queda crear y configurar los dos archivos puesto arriba.
virtual_alias_maps: archivo de configuración para que reconozca los correos
electrónicos de los usuarios.
virtual_user_aliases: archivo de configuración para que reconozca el alias del correo
electrónico de los usuarios.
# mkdir /etc/postfix/openldap
# touch /etc/postfix/openldap/virtual_alias_maps.cf
# nano /etc/postfix/openldap/virtual_alias_maps.cf
server_host = ip_server_ldap
search_base = ou=people,dc=dominio,dc=cu
query_filter = (mail=%s)
result_attribute = uid
cache = no
bind = yes
bind_dn = cn=admin,dc=dominio,dc=cu
bind_pw = passwd_admin_ldap
# touch /etc/postfix/openldap/virtual_user_aliases.cf
# nano /etc/postfix/openldap/virtual_user_aliases.cf
server_host = ip_server_ldap
search_base = ou=people,dc=dominio,dc=cu
query_filter = (gosaMailAlternateAddress=%s)
result_attribute = uid
cache = no
bind = yes
bind_dn = cn=admin,dc=dominio,dc=cu
bind_pw = passwd_admin_ldap
Ya solo resta reiniciar el postfix y listo quedará el servidor completamente instalado.
# invoke-rc.d postfix restart
43
Procedimiento para añadir los servicios cyrus y postfix desde
el GOsa
En el Capítulo 2 se mostró como crear un servidor, ahora se mostrará como adicionar
servicios al mismo.
GNU/LINUX DEBIAN 5 (LENNY)
Ahora toca darle las características de servidor de correo.
44
GNU/LINUX DEBIAN 6 (SQUEEZE)
Ahora se mostrará como añadir servicios por esta versión del interfaz.
Luego de entrar al servidor ya creado o si se crea uno nuevo, se va a la pestaña
Servicios y de ahí se le da clic a Acciones -->> Crear -->> Servicio.
45
Luego que se guarde esta configuración se añade el servicio Servicio SMTP de Correo
Electrónico (Postfix) de la misma forma que el anterior y a continuación mostrará el
siguiente formulario.
46
Tareas para el autoaprendizaje:
1. Estudiar lo referente a las características del Postfix, observando la figura 4.1 para
identificar los elementos que lo componen.
2. Estudiar los diferentes comandos que se utilizan para la instalación del Postfix y su
vinculación con el OpenLDAP. Elaborar resumen al respecto.
3. Observar y resumir los métodos para vincular el Cyrus, el SALS y el Postfix con el
Directorio OpenLDAP.
4. Estudie el procedimiento para añadir los servicios Cyrus2.2 y Postfix desde la Interfaz
Web GOsa y haga un resumen de los elementos que distinguen el mismo.
47
Capitulo 5
DHCP
Sistema de conocimientos:
49
suficiente para que el cliente obtenga una configuración de red efectiva, pero puede tardar
más o menos en función de que el cliente acepte o no la dirección IP. En la Figura 5.1 se
muestra el funcionamiento.
50
Instalación y configuración con soporte el OpenLDAP
COMUN
Tabla de versiones:
Paquetes Versión Lenny Versión Squeeze
dhcp3-server 3.1.1-6+le
dhcp3-server-ldap 3.1.1-6+le
isc-dhcp-server 4.1.1-P1-1
isc-dhcp-server-ldap 4.1.1-P1-1
51
# todas las pc se pasa esta opción a static.
ldap-method dynamic;
# Archivo donde se almacenarán los log's
ldap-debug-file "/var/log/dhcp-ldap.log";
Ahora se va al fichero /etc/default/dhcp3-server para indicarle por cual interfaz de red va a
escuchar.
# nano /etc/default/dhcp3-server
INTERFACES = “ethx”
En la x va el número de su eth.
# touch /var/log/dhcp-ldap.log
Ya se puede reiniciar el servidor DHCP.
# invoke-rc.d dhcp3-server restart
Cuando reinicien el servicio les mostrará un error parecido a este:
Error: Cannot find LDAP entry matching
(&(objectClass=dhcpServer)(|(cn=laptopjudas)(cn=laptopjudas.dominio.cu)))
Configuration file errors encountered -- exiting
invoke-rc.d: initscript isc-dhcp-server, action "restart" failed.
Pero no hay que preocuparse por eso, que ahora se mostrará como solucionarlo.
Luego de haber realizado todo esto, se añadirá al directorio OpenLDAP mediante un
archivo ldif, la configuración del DHCP.
Esto se hará de esta forma porque como se quiere administrar desde el GOsa2, hay que
pasarle el objeto dhcpServer mediante el ldif.
# touch /etc/ldap/ldif/dhcp.ldif
# nano /etc/ldap/ldif/dhcp.ldif
dn: cn=laptopjudas.dominio.cu,ou=servers,ou=systems,dc=dominio,dc=cu
description: Servidor DHCP
# ip del servidor DHCP.
IpHostNumber : 192.168.1.1
# mac del servidor DHCP.
macAddress : 00:00:00:00:00:00
gotoMode: active
objectClass: top
objectClass: dhcpServer
objectClass: goServer
objectClass: GOhard
cn: dhcp.dominio.cu
dhcpServiceDN: cn=dhcp,cn=ldaptopjudas.dominio.cu,ou=systems,dc=dominio,dc=cu
Ahora es el momento de añadirlo con el siguiente comando:
52
GNU/LINUX DEBIAN 6 (SQUEEZE)
En esta versión se hace algo parecido a lo descrito en la versión anterior: se instalan los
paquetes del servidor DHCP, se copia el ldif apropiado, se descomprime y se añade al
OpenLDAP. Pero en esta versión todo se esto se realiza de la siguiente forma:
En el caso de esta versión cambio los nombres del servicio aunque sigue estando el
antiguo DHCP3.
# aptitude install isc-dhcp-server isc-dhcp-server-ldap
# cp /usr/share/doc/gosa-plugin-dhcp/contrib/dhcp.schema.gz /etc/ldap/schema/gosa/
# gunzip /etc/ldap/schema/gosa/dhcp.schema.gz
Este paso no lo vamos a repetir, porque se hace lo mismo que se explico en el capítulo 2.
Lo que al final del archivo /tmp/convschema se le añade la siguiente línea:
include /etc/ldap/schema/gosa/dhcp.schema
Luego de que se haga todo lo que se tenga que hacer para que el OpenLDAP reconozca
el nuevo schema se procede a configurar el DHCP de la siguiente forma:
# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bk
# nano /etc/dhcp/dhcpd.conf
ddns-update-style none;
option domain-name "dominio.cu";
option domain-name-servers 192.168.1.1;
default-lease-time 43200;
max-lease-time 43200;
authoritative;
log-facility local7;
# IP del servidor OpenLDAP
ldap-server "192.168.1.1";
# Puerto del servidor OpenLDAP
ldap-port 389;
# Usuario para acceder y realizar las busquedas en el directorio
ldap-username "cn=admin,dc=dominio,dc=cu";
# Passwd del OpenLDAP
ldap-password "passwd”;
# A partir de donde se realizarán las busquedas
ldap-base-dn "ou=servers,ou=systems,dc=dominio,dc=cu";
# Eso significa que cada vez que un ordenador se encienda y pida una ip, el servidor DHCP consulta al
# servidor de LDAP para ver su MAC y darle nombre y dirección adecuados. Cuando ya se hayan añadido
# todas las pc se pasa esta opción a static.
ldap-method dynamic;
# Archivo donde se almacenarán los log's
ldap-debug-file "/var/log/dhcp-ldap.log";
Luego de configurar el DHCP, se crea el archivo para los log's.
# touch /var/log/dhcp-ldap.log
53
Configurando desde el GOsa
Ahora se mostrará como configurar el servidor dhcp desde el GOsa.
GNU/LINUX DEBIAN 5 (LENNY)
Para añadir el servicio de servidor de DHCP a un servidor es muy parecido a los demás
que se han ido explicando, con la única diferencia que ahora se va a la pestaña DHCP y
se da clic en el botón Añadir servicio DHCP.
Luego de que se active el servicio saldrá algo muy parecido a la imagen mostrada abajo
donde tendrán dos opciones Insertar nueva sección DHCP y Editar sección DHCP. Se
da clic en Insertar nueva sección DHCP que es donde está señalando la flecha; esa
opción es para añadir el pool de direcciones que otorgará el DHCP.
Ahí pedirá que se elija uno de los diferentes tipos de sección DHCP. Seleccionan el tipo
de sección DHCP Subred y le dan al botón Crear y saldrá una imagen como la que se
muestra
54
Tareas para el autoaprendizaje:
1. Haga un resumen de las características del servicio DHCP.
2. Estudie lo referente al funcionamiento del servicio de DHCP y los modos de asignación
de IP a otros equipos. Haga un resumen de lo estudiado.
3. Estudie el proceso de instalación de servicio DHCP en las diferentes versiones del
GNU/LINUX Debian y haga un resumen de cada una.
55
Capitulo 6
Squid
Sistema de conocimientos:
57
Proxy NAT (Network Address Translation) / Enmascaramiento: Otro mecanismo para
hacer de intermediario en una red es el NAT, también es conocida como
enmascaramiento de IPs. Es una técnica mediante la cual las direcciones fuente o
destino de los paquetes IP son reescritas, sustituidas por otras (de ahí el
"enmascaramiento").
Esto es lo que ocurre cuando varios usuarios comparten una única conexión a
Internet. Se dispone de una única dirección IP pública, que tiene que ser
compartida. Dentro de la red de área local (LAN) los equipos emplean direcciones
IP reservadas para uso privado y será el proxy el encargado de traducir las
direcciones privadas a esa única dirección pública para realizar las peticiones, así
como de distribuir las páginas recibidas a aquel usuario interno que la solicitó.
Estas direcciones privadas se suelen elegir en rangos prohibidos para su uso en
Internet como 192.168.x.x, 10.x.x.x, 172.16.x.x y 172.31.x.x.
Esta situación es muy común en empresas y domicilios con varios ordenadores en
red y un acceso externo a Internet. El acceso a Internet mediante NAT proporciona
una cierta seguridad, puesto que en realidad no hay conexión directa entre el
exterior y la red privada, y así nuestros equipos no están expuestos a ataques
directos desde el exterior.
Mediante NAT también se puede permitir un acceso limitado desde el exterior, y
hacer que las peticiones que llegan al proxy sean dirigidas a una máquina concreta
que haya sido determinada para tal fin en el propio proxy.
La función de NAT reside en los Cortafuegos y resulta muy cómoda porque no
necesita de ninguna configuración especial en los equipos de la red privada que
pueden acceder a través de él como si fuera un mero encaminador..
Hasta aquí se han visto algunos de los tipos de servidor proxies más utilizados, en este
caso se utilizará un proxy NAT / enmascaramiento que se autenticará con un servidor
OpenLDAP (figura 6.1).
58
Instalación y configuración
Ahora se va a configurar un proxy funcional y luego se mostrará como vincularlo con el
OpenLDAP. No se va a especificar la versión del GNU/Linux Debian porque es los mismo
para las dos.
# aptitiude install squid3
A continuación se mostrará y explicará los principales parámetros que deben de ser
modificados o añadidos para que funcione el squid. No obstante en el archivo de
configuración del squid viene bien explicado para que es cada parámetro de estos. Para
una completa configuración ver Anexo 6.
# nano /etc/squid3/squid.conf
# Se define porque puerto va escuchar el proxy. Sus valores pueden ser: IP_server_squid:puerto_squid o
# solamente el puerto_squid.
http_port 8080
# El parámetro que viene a continuación es por si el proxy esta detrás de otro.
# Lo posterior se describe: cache_peer serverhost type http_port icp_port; serverhost es el nombre o IP del
# servidor al que se le van hacer las peticiones, type esto es para definir la jerarquía de nuestra caché, este
# parámetro puede ser parent, sibling o multicast, http_port es por el puesrto http que está escuchando el
# serverhost, icp_port es por el puerto icp que esta escuchando el serverhost, en caso de no estra
# configurado no se pone.
cache_peer 200.55.x.x parent 8080 3130
# CONFIGURACIÓN DE LOS RECURSOS DEL SISTEMA QUE TENDRÁ A DISPOSICIÓN EL SQUID.
# Este parámetro debe de ser un cuarto de la memoria ram que se tiene, considerando un límite de 512MB
cache_mem = 128 MB
# El siguiente parámetro se usa para definir el tamaño que se desea que tenga el squid de caché en el
# disco duro. Se puede incrementar el tamaño del caché hasta donde uno desee, teniendo presente que
# mientras mas caché menos se usará el ancho de banda.
cache_dir ufs /var/spool/squid 1024 16 256
# Para entender mejor: /var/spool/squid3 es el directorio donde estará almacenada la caché, 1024 es la
# cantidad en MB del tamaño máximo de la caché, 16 es el número máximo de subdirectorios que
# contendrá el directorio antes declarado y 256 significa el número de niveles para cada subdirectorio. Es
# aconsejable no modificar los números 16 y 256.
# CONFIGURACIÓN DE LOS ARCHIVOS LOG´S.
# Este parámetro muestra toda la actividad de los clientes que usen el este proxy.
access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
# AHORA SE CONFIGURARÁN LAS LISTAS DE ACCESOS (ACL).
# A partir de aquí es muy difícil explicar como configurar un squid, por lo tanto se mostrarán lo mínimo de las
# acl para que funcione el squid en una LAN
acl redlocal src 192.168.1.0/24
# Lo anterior se describe: acl nombre_acl tipo_acl parámetro donde; nombre_acl es como se va a llamar la
# regla acl, tipo_acl es el tipo de acl que se va a usar, a continuación se mostrará una lista de los más
# usado y para que sirvén:
# src: aquí se le puede definir IP o rango de IP, ej: acl rango src 10.0.0.0/24, acl unica src 10.0.0.1/32 o
# acl listado src /etc/squid3/reglas/listadoIP.src, en listadoIP.src va unlistado de IP´s.
#dstdomain: cuando se quiere o no que se acceda a determinado dominio o listado de los mismos, ej:
# acl dominios dstdomain *.google.es o acl dominios dstdomain /etc/squid3/reglas/listadomain.dst
#url_regex: para prohibir una url determinada.
#time: esta se usa para definir días y horas en la que se quiere o no que una red navegue, ej:
# acl hora_nav time MTWHF 8:00-16:30, en este ejemplo se va o no, a navegar de lunes a viernes
# desde las 8:00 hasta las 16:30
# ya para acaba las partes de un acl queda explicar parámetro que no es mas que la definición del acl_type
# INSERT YOUR OWN RULES(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
# Es importante destacar que aquí el orden de las reglas si influyen
http_access allow redlocal
# Lo anterior se describe: http_access allow/deny nombre_acl; allow/deny aquí se define el permiso que va
# a tener la regla, nombre_acl es el nombre del acl que se le declaró antes.
59
Luego se reinicia el servicio.
# invoke-rc.d squid3 restart
Con la configuración anterior ya se tiene un servidor proxy funcionando, pero el objetivo
no es ese, lo que se quiere es tener este servicio vinculado con el Directorio OpenLDAP
para así tener un mayor control de nuestros usuarios.
60
Crear Usuario de Navegación desde el Gosa
En el Capítulo 2 se mostró como crear un usuario. Ahora se mostrará como activarle el
servicio Conectividad.
Para esto se edita un usuario ya creado o se crea uno nuevo pero antes de dar OK se va
a la pestaña Conectividad donde se activará la opción Cuenta Proxy como se muestra
61
Anexos
Anexo 1
Configuración del archivo sm.conf.
#======================= Global Settings =======================
[global]
#### Browsing/Identification ####
workgroup = DOMINIO
realm = DOMINIO.CU
netbios name = DOMINIO
server string = Samba PDC %v en (%h)
wins support = no
dns proxy = no
name resolve order = lmhosts host wins bcast
63
add machine script = /usr/sbin/useradd -d /dev/null -s /bin/false -d /var/lib/nobody %u
[homes]
root preexec = /bin/user.sh %U %S %I
comment = Almacenamiento Usuario
path = /home/datos/%U
browseable = no
writeable = yes
create mask = 0700
directory mask = 0700
guest ok = no
valid users = %S
inherit permissions = yes
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
read only = yes
browseable =no
[profiles]
comment = Perfil Usuarios
path = /home/profiles/%U
writeable = yes
browseable = no
default case = lower
preserve case = yes
short preserve case = yes
case sensitive = no
hide files = /desktop.ini/ntuser.ini/NTUSER.*/.*
create mask = 0600
directory mask = 0700
csc policy = disable
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
64
Anexo 2
Configuración del archive smbldap-tools
##############################################################################
#
# General Configuration
#
##############################################################################
SID="S-1-5-21-2960879313-1784688266-788982729"
sambaDomain="DOMINIO"
##############################################################################
#
# LDAP Configuration
#
##############################################################################
masterLDAP="192.168.1.1"
masterPort="389"
ldapTLS="0"
ldapSSL="0"
#verify="require"
#cafile="/etc/smbldap-tools/ca.pem"
#clientcert="/etc/smbldap-tools/smbldap-tools.iallanis.info.pem"
#clientkey="/etc/smbldap-tools/smbldap-tools.iallanis.info.key"
suffix="dc=dominio,dc=cu"
usersdn="ou=people,${suffix}"
computersdn="ou=machines,ou=systems,${suffix}"
groupsdn="ou=groups,${suffix}"
#idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
scope="sub"
hash_encrypt="MD5"
crypt_salt_format="$1$%.8s"
##############################################################################
#
# Unix Accounts Configuration
#
##############################################################################
userLoginShell="/bin/false"
userHome="/home/datos/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
##############################################################################
#
# SAMBA Configuration
#
##############################################################################
userSmbHome="\\DOMINIO\%U"
userProfile="\\DOMINIO\profiles\%U"
userHomeDrive="Z:"
65
userScript="netlogon.bat"
mailDomain="dominio.cu"
##############################################################################
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
##############################################################################
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
# comment out the following line to get rid of the default banner
# no_banner="1"
66
Anexo 3
Posibles errores que pueden presentarse en el Samba3 y vía de
solución.
8 Error a la hora de ejecutar el comando testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[netlogon]"
Processing section "[profiles]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions
9 Posible Solución
ulimit -n 16384
67
Anexo 4
Configuración del archivo main.cf
myhostname = phil.infosoc.cu
mydomain = infosoc.cu
myorigin = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
virtual_alias_maps = ldap:/etc/postfix/openldap/virtual_alias_maps.cf
ldap:/etc/postfix/openldap/virtual_user_aliases.cf
transport_maps = hash:/etc/postfix/transport
local_recipient_maps = $alias_maps unix:passwd.byname
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
68
reject_unauth_pipelining
mailbox_transport = cyrus
69
Anexo 5
Configuración del archivo imapd.conf
configdirectory: /var/lib/cyrus
defaultpartition: default
partition-default: /var/spool/cyrus/mail
partition-news: /var/spool/cyrus/news
newsspool: /var/spool/news
altnamespace: no
servername: latopjudas.dominio.cu
unixhierarchysep: yes
lmtp_downcase_rcpt: yes
admins: cyrus
imap_admins: cyrus
allowanonymouslogin: no
popminpoll: 0
autocreatequota: 0
umask: 077
sieveusehomedir: false
sievedir: /var/spool/sieve
hashimapspool: true
allowplaintext: yes
sasl_mech_list: PLAIN LOGIN
sasl_minimum_layer: 0
sasl_pwcheck_method: saslauthd
sasl_auto_transition: no
lmtpsocket: /var/run/cyrus/socket/lmtp
idlemethod: poll
idlesocket: /var/run/cyrus/socket/idle
notifysocket: /var/run/cyrus/socket/notify
syslog_prefix: cyrus
/usr/lib/cyrus/bin/%s %d >/tmp/gdb-backtrace.cyrus.%1$s.%2$d <&- 2>&1 &
70
Anexo 6
Configuración del archivo squid.conf
# WELCOME TO SQUID 3.0.STABLE8
# ----------------------------
# ACCESS CONTROLS
# -----------------------------------------------------------------------------
#Recommended minimum configuration:
acl manager proto cache_object
acl passwd proxy_auth REQUIRED
acl internet external ldap_group navegacion
acl webserver src 192.168.1.4/255.255.255.255
acl nav_ip src "/etc/squid3/ips_user"
acl nav_den src "/etc/squid3/ips_denegar"
acl ip_lib src "/etc/squid3/iplibre"
acl chat url_regex -i "/etc/squid3/chats"
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
71
http_access allow internet passwd nav_ip
###http_access allow prov
http_access deny all
icp_access allow all
htcp_access deny all
# htcp_clr_access deny all
# miss_access allow all
# ident_lookup_access deny all
# NETWORK OPTIONS
# -----------------------------------------------------------------------------
http_port 8080
# LOGFILE OPTIONS
# -----------------------------------------------------------------------------
access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
logfile_rotate 0
# ADMINISTRATIVE PARAMETERS
# -----------------------------------------------------------------------------
cache_mgr rogelio@dominio.cu
cache_effective_group proxy
# ICP OPTIONS
# -----------------------------------------------------------------------------
icp_port 3130
# DNS OPTIONS
# -----------------------------------------------------------------------------
hosts_file /etc/hosts
coredump_dir /var/spool/squid3
72
Bibliografía
http://linuxemb.wikidot.com/samba
http://www.arrakis.es/~pfabrega/t1.html
http://linuxcommand.org/man_pages/adduser8.html
http://zystrax.wordpress.com/2009/12/27/dhcp-dynamic-host-configuration-protocol-2/
http://www.google.com/url?sa=t&source=web&cd=5&ved=0CD8QFjAE&url=http%3A%2F%2Fcarlos8rg.files.
wordpress.com%2F2008%2F08%2Fonto_dhcp.pdf&ei=WJp_TaSPDJS5tgf6zPHsCA&usg=AFQjCNE-wnylx-
oPeh695cbkPYqgka2GuA&sig2=2GHY4sPYsypi-UizVxR7YA
http://www.google.com/url?sa=t&source=web&cd=2&ved=0CCQQFjAB&url=http%3A%2F%2Fclases.nuarlub
re.es%2Fresources%2F04_DHCP.ppt&ei=WJp_TaSPDJS5tgf6zPHsCA&usg=AFQjCNE2gzaIAM1JfFEfeb77
kh0OO_joVA&sig2=TnKBYFUt4qUTy_ER511irw
http://es.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
http://www.squid-cache.org/
http://es.wikipedia.org/wiki/Proxy
73