Utilización del módulo de autorización PAC-LDAP
El módulo de autorización PAC-LDAP permite que Caching Proxy acceda al servidor LDAP (Lightweight Directory Access Protocol) al realizar rutinas de autorización o autenticación.
- Visión general
- Instalación
- Requisitos y restricciones adicionales para conexiones de servidor PACD-LDAP seguras
- IBM Global Security Kit (GSKit) es necesario para el paquete de cliente LDAP
- La variable de entorno LD_PRELOAD debe establecerse para los sistemas Linux
- En sistemas Linux , el proceso PACD no se puede iniciar cuando se utiliza el cliente LDAP de IBM Tivoli Directory Server (ITDS) 6.0
- En sistemas AIX , el módulo PAC-LDAP no se puede cargar cuando se utiliza el cliente LDAP de IBM Tivoli Directory Server (ITDS)
- Edición del archivo ibmproxy.conf para habilitar el módulo de autorización PAC-LDAP
- Edición de los archivos de configuración del módulo de autorización PAC-LDAP
- Creación de pac_ldap.cred
- Inicio y detención de pacd
Visión general
El módulo consta de dos conjuntos de componentes: un par de bibliotecas compartidas que añaden funcionalidad LDAP a la API de Caching Proxy y un daemon PAC (Policy Authentication Control). Una directiva ServerInit del archivo ibmproxy.conf indica a la biblioteca compartida que inicialice uno o más daemons PAC cuando se inicie Caching Proxy. Las bibliotecas compartidas leen un archivo paccp.conf para determinar el número y características de los daemons PAC. Durante la inicialización, el daemon lee el archivo pac.conf para las directivas de configuración y el archivo pacpolicy.conf para la información de políticas. A continuación, una directiva Authentication del archivo ibmproxy.conf indica al servidor proxy que llame a la biblioteca compartida siempre que la autenticación sea necesaria, o bien una directiva Authorization usurpa el flujo de trabajo de Caching Proxy durante el proceso de peticiones HTTP.
Autenticación
El proceso de autenticación determina si un conjunto proporcionado de credenciales (nombre de usuario y contraseña) es válido. Este proceso incluye la verificación de que un usuario esté en el registro y que la contraseña facilitada coincida con la contraseña que está almacenada en ese registro. A continuación, se indican las acciones realizadas mediante el módulo PAC-LDAP durante el paso de autenticación.
Cuando el módulo de autorización PAC-LDAP está habilitado para la autenticación, se convierte en el repositorio predeterminado del que se recuperan los ID de usuario, las contraseñas y los grupos. Cuando una petición HTTP pasa a través del flujo de trabajo de Caching Proxy, todas las directivas Protect comparan el URL solicitado con la correspondiente plantilla de petición. Si se produce una coincidencia, la directiva Protect inicia un esquema de protección, que incluye el ID de servidor, el tipo de autenticación que se va a utilizar, las normas de enmascaramiento que se deben aplicar al cliente solicitante y las ubicación de los archivos de grupos y contraseñas. Si el archivo de contraseñas no está definido, el ID de usuario y la contraseña se recuperan utilizando el módulo de autorización PAC-LDAP. Las políticas del tipo 0, 1, 2 y 3 definen los esquemas de autenticación. Si se pasa la autenticación, se sirve la autenticación; de lo contrario, Caching Proxy devuelve un error 401 al cliente.
Autorización
El proceso de autorización determina si un usuario tiene el permiso necesario para acceder al recurso protegido. Cuando se utiliza el módulo PAC-LDAP, es necesaria la aplicación de las normas de autorización que residan en el archivo pacpolicy.conf para la petición HTTP.
Cuando el módulo de autorización PAC-LDAP está habilitado para la autorización, las reglas de autorización del archivo pacpolicy.conf se aplican a la solicitud HTTP. Cuando una petición HTTP pasa a través del flujo de trabajo de Caching Proxy, todas las directivas Protect comparan el URL solicitado con la correspondiente plantilla de petición. Si se produce una coincidencia, la directiva Protect inicia un esquema de protección. En este caso, el esquema de protección es la rutina de autorización que utiliza el módulo de autorización PAC-LDAP. La directiva Authorization compara la URL solicitada con su plantilla de solicitud y, si se produce una coincidencia, se inicia el módulo de autorización PAC-LDAP. Las políticas de tipo 4 definidas en el archivo pacpolicy.conf que ajustan de forma adicional la autenticación necesaria para varias peticiones URL.
Protocolo LDAP (Lightweight Directory Access Protocol)
LDAP proporciona acceso interactivo a los directorios X.500 con un consumo mínimo de los recursos del sistema. La IANA asigna el puerto TCP 389 y el puerto UDP 389 a LDAP. Para obtener más información acerca de LDAP, consulte el RFC 1777.
Algunos ejemplos de clientes LDAP soportados son: el cliente LDAP de IBM® Tivoli ® y el cliente LDAP de IBM SecureWay .
Instalación
Todos los componentes del módulo de autorización PAC-LDAP se instalan automáticamente cuando se instala el sistema Caching Proxy de WebSphere® Application Server . En sistemas Linux® y UNIX, se crea un directorio Caching Proxy library /lib , un directorio PAC-LDAP authorization module library /lib/plugins/pac/ , un directorio binario /bin y un directorio de configuración /etc dentro del directorio /opt/ibm/edge/cp/. A continuación, se crean enlaces simbólicos desde los directorios /usr/lib/, /usr/sbin/ y /etc con estos directorios específicos de productos.
| Directorio Linux y UNIX | Directorio de Windows | Contenido |
|---|---|---|
| /opt/ibm/edge/cp | C:\Archivos de programa\IBM\edge\cachingproxy\cp | Directorio base de Caching Proxy cp_root |
| cp_root/sbin | C:\Archivos de programa \IBM\edge\cachingproxy\cp\Bin\ | Binarios y scripts de Caching Proxy |
| /usr/sbin/ | Enlaces simbólicos con cp_root/sbin/ | |
| cp_root/etc/ | C:\Archivos de programa \IBM\edge\cachingproxy\cp\etc\ | Archivos de configuración de Caching Proxy |
| /etc/ | Enlaces simbólicos con cp_root/etc/ | |
| cp_root/lib/ | C:\Archivos de programa \IBM\edge\cachingproxy\cp\lib\plugins\ | Bibliotecas de Caching Proxy |
| cp_root/lib/ plugins/pac/ | C:\Archivos de programa \IBM\edge\cachingproxy\cp\lib\plugins\pac\ | Bibliotecas PAC-Módulo de autorización LDAP |
| /usr/lib/ | Enlaces simbólicos con cp_root/lib/ and cp_root/lib/ plugins/pac/ | |
| cp_root/server_root/pac/data/ | C:\Archivos de programa \IBM\edge\cachingproxy\cp\raíz_servidor\pac\data\ | Almacenamiento de datos PAC-Módulo de autorización LDAP |
| cp_root/server_root/ pac/creds/ | C:\Archivos de programa \IBM\edge\cachingproxy\cp\raíz_servidor\pac\creds\ | Credenciales de PAC-Módulo de autorización LDAP |
| Linux y nombre de archivo UNIX | Nombre de archivo de Windows | Descripción |
|---|---|---|
| libpacwte.so | pacwte.dll | Biblioteca compartida |
| libpacman.so | pacman.dll | Biblioteca compartida |
| pacd_restart.sh | pacd_restart.bat | Script de reinicio de daemons PAC |
| paccp.conf, pac.conf, pacpolicy.conf | paccp.conf, pac.conf, pacpolicy.conf | archivos de configuración y de políticas |
Otros requisitos y restricciones para las conexiones seguras del servidor PACD-LDAP
El paquete de cliente LDAP requiere IBM Global Security Kit (GSKit)
Para habilitar las conexiones SSL (Secure Sockets Layer) entre el daemon PACD y el servidor LDAP, debe instalar el paquete IBM Global Security Kit (GSKit) que necesita el paquete de cliente LDAP. GSKit 7 es necesario en la máquina de Caching Proxy, donde se facilita por omisión, pero es posible que no sea la versión que requiere el cliente LDAP en la máquina. Se pueden utilizar versiones distintas de GSKit en la misma máquina para procesos distintos.
Coloque el archivo de claves IBM Global Security Kit (GSKit) en $pacd_creds_dir/pac_keyring.kdb y la contraseña en $pacd_creds_dir/pac_keyring.pwd.
La variable de entorno LD_PRELOAD debe establecerse para los sistemas Linux
LD_PRELOAD=/usr/lib/libstdc++-libc6.1-1.so.2
El requisito de IBM Global Security Kit (GSKit) al que se hace referencia anteriormente en esta sección también se aplica a los sistemas Linux .
En sistemas Linux , el proceso PACD no se puede iniciar cuando se utiliza el cliente LDAP de IBM Tivoli Directory Server (ITDS) 6.0
"error while loading shared libraries:
/usr/lib/libldapiconv.so: R_PPC_REL24 relocation at 0x0fb58ad0
for symbol 'strpbrk' out of range"Existe una restricción actual de que Tivoli Directory Server 6.0 no da soporte a los sistemas RHEL 4.0 .En sistemas AIX , el módulo PAC-LDAP no se puede cargar cuando se utiliza el cliente LDAP de IBM Tivoli Directory Server (ITDS)
exec(): 0509-036 Cannot load program /usr/sbin/pacd
because of the following errors:
0509-022 Cannot load module /usr/lib/libpacman.a.
0509-150 Dependent module libldap.a could not be loaded.
0509-022 Cannot load module libldap.a. Para solucionar este problema para Tivoli Directory Server versión 5 del cliente LDAP, cree el siguiente símbolo:ln -s /usr/lib/libibmldap.a /usr/lib/libldap.a Para solucionar este problema para Tivoli Directory Server versión 6 del cliente LDAP, cree el siguiente símbolo:ln -s /opt/IBM/ldap/V6.0/lib/libibmldap.a /usr/lib/libldap.a
Edición del archivo ibmproxy.conf para habilitar el módulo de autorización PAC-LDAP
Tres directivas, ServerInit, Autorización o Autenticación, y ServerTerm debe agregarse a la sección de directivas API del ibmproxy.conf archivo para inicializar el Módulo de autorización PAC-LDAP. Para crear estas directivas, edite manualmente el archivo ibmproxy.conf o, si el servidor proxy ya se está ejecutando, conéctese a los formularios de configuración y administración con un navegador de Internet y abra el formulario de proceso de solicitud de API (pulse Configuración de servidor -> Proceso de solicitud -> Proceso de solicitud de API). Todas las directivas deben aparecer en una única línea en el archivo de configuración de proxy, independientemente de si los ejemplos proporcionados en este apartado contienen divisiones de línea para que sean legibles.
Las directivas de prototipo (en forma de comentarios) se facilitan en el apartado API del archivo ibmproxy.conf. Estas directivas API aparecen en un orden determinado. Al añadir las directivas API para habilitar nuevas características y módulos de plug-in, ordene las directivas como se muestran en la parte de prototipo del archivo de configuración. Alternativamente, elimine los comentarios de las directivas API y edítelas, si es necesario, para incluir el soporte de todas las funciones o plug-ins deseados.
La directiva ServerInit tiene tres argumentos: (1) la vía de acceso plenamente cualificada de la biblioteca compartida, (2) la llamada de función y (3) la vía de acceso plenamente cualificado del archivo paccp.conf. El primer y segundo argumento están delimitados por dos puntos (:). El segundo y tercer argumento están delimitados por un espacio. El primer y tercer argumentos son específicos del sistema y dependen de dónde se han instalado los componentes de plug-in. El segundo argumento se codifica en la biblioteca compartida y debe escribirse exactamente como se muestra. Al crear una directiva ServerInit mediante el formulario Petición de proceso de API, tanto el segundo como el tercer argumento deben especificarse en el campo Nombre de función. El tercer argumento se muestra en la columna Plantilla de IP.
La directiva Authorization tiene tres argumentos: (1) una plantilla de petición, (2) la vía de acceso plenamente cualificada de la biblioteca compartida y (3) el nombre de función. Las peticiones HTTP se comparan con la plantilla de petición para determinar si se llama a la función de aplicación. La plantilla de petición puede incluir un protocolo, un dominio y un sistema principal; puede estar precedida por una barra inclinada (/), y puede utilizar un asterisco (*) como carácter comodín. Por ejemplo, /front_page.html , http://www.ics.raleigh.ibm.com, /pub*, /* y * son todas válidas. El nombre de función es el nombre asignado a la función de aplicación del programa. Está codificado y debe escribirse exactamente como se muestra. Los primeros dos argumentos se delimitan por un espacio. Los dos últimos argumentos se delimitan mediante dos puntos (:).
La directiva Authentication tiene dos argumentos: (1) la vía de acceso plenamente cualificada de la biblioteca compartida y (2) el nombre de función. Estos argumentos están delimitados por dos puntos (:). El primer argumento es específico del sistema y depende de dónde esté instalada la biblioteca compartida. La plantilla de URL del primer argumento debe empezar en el directorio raíz de documentos (/) al utilizar Caching Proxy como proxy de retorno. El segundo argumento se codifica en la biblioteca compartida y debe escribirse exactamente como se muestra.
La directiva ServerTerm tiene dos argumentos: (1) la vía de acceso plenamente cualificada de la biblioteca compartida y (2) el nombre de función. Estos argumentos están delimitados por dos puntos (:). El primer argumento es específico del sistema y depende de dónde esté instalada la biblioteca compartida. El segundo argumento se codifica en la biblioteca compartida y debe escribirse exactamente como se muestra. Esta directiva termina el daemon PAC cuando el servidor proxy se apaga. Si el propietario del daemon es distinto del propietario del servidor proxy, es posible que el servidor proxy no pueda detener el daemon, en cuyo caso un administrador debe detener manualmente el daemon.
ServerInit path_of_shared_library:pacwte_auth_init path_of_conf_policy_fileEjemplo de Linux y UNIX:ServerInit /usr/lib/libpacwte.so:pacwte_auth_init /etc/pac.confEjemplo de Windows:ServerInit C:\Program Files\IBM\edge\cachingproxy\cp\lib\plugins\
pac\pacwte.dll:pacwte_auth_init C:\Progra ~1\IBM\edge\cp
Authorization request-template path_of_shared_library:pacwte_auth_policyEjemplo de Linux y UNIX:Authorization http://* /usr/lib/libpacwte.so:pacwte_auth_policyEjemplo de Windows:Authorization http://* C:\Program Files\IBM\edge\cachingproxy\cp\lib\plugins\
pac\pacwte.dll:pacwte_auth_policy
Authentication BASIC path_of_shared_library:pacwte_auth_policyEjemplo de Linux y UNIX:Authentication BASIC /usr/lib/plugins/pac/libpacwte.so:pacwte_auth_policyEjemplo de Windows:Authentication BASIC C:\Program Files\IBM\edge\cachingproxy\cp\lib\plugins\
pac\pacwte.dll:pacwte_auth_policy
ServerTerm path_of_shared_library:pacwte_shutdownEjemplo de Linux y UNIX:ServerTerm /usr/lib/libpacwte.so:pacwte_shutdownEjemplo de Windows:ServerTerm BASIC C:\Program Files\IBM\edge\cachingproxy\cp\lib\plugins\
pac\bin\pacwte.dll:pacwte_shutdown
Edición de los archivos de configuración del módulo de autorización PAC-LDAP
La configuración y los archivos de políticas del módulo de autorización PAC-LDAP deben editarse manualmente con un editor de texto. Un nombre de directiva está separado de su primer argumento por dos puntos (:). Varios argumentos están delimitados por comas (,). Las observaciones se incluyen en el archivo de configuración y política para ayudarle a editarlo. A continuación se muestras las directivas de políticas más relevantes:
paccp.conf
El archivo paccp.conf lo leen las bibliotecas compartidas durante la inicialización de Caching Proxy y contiene las definiciones (stanza[PAC_MAN_SERVER] ) de cada daemon PAC que se iniciará. Todos los daemons PAC deben tener su propio apartado [PAC_MAN_SERVER].
[PAC_MAN_SERVER]
hostname: # name of PAC daemon
port: # port pacd is listening on
[PACWTE_PLUGIN]
hostname_check:[true|false] # enables DNS lookup. Must have
# DNS lookup turned on for ibmproxy to work.
pac.conf
El archivo pac.conf especifica el servidor LDAP con el que el daemon PAC intenta conectarse.
[PAC_MAN_SERVER]
hostname: # name of PAC daemon
port: # port pacd is listening on
conn_type:ssl # comment out if you do not use SSL
authentication_sequence: [primary|secondary|none]
authorization_sequence: [primary|secondary|none]
[LDAP_SERVER]
hostname: # LDAP Server hostname
port:389 # Port LDAP is listening on
ssl_port:636 # SSL port used by the LDAP server
admin_dn: # User with permission to access the LDAP server
# specify admin_dn:NULL to enable anonymous binding
search_base: # Portion of LDAP tree to search for policy info
# If not required, specify search_base:NULL
search_key: # ID field to search
[CACHE]
cred_cache_enabled [TRUE|FALSE] # turn credentials cache on
cred_cache_min_size:100 # minimum number of credentials to cache in pacd
cred_cache_max_size:64000 # maximum number of credentials to cache in pacd
cred_cache_expiration:86400 # when a credential expires
policy_cache_enabled:[TRUE|FALSE] # turns policy cache on/off
policy_cache_min_size:100 # min. number of policy related items to cache
policy_cache_max_size:64000 # max. number of policy related items to cache
policy_cache_expiration:86400 # when a policy related item expires
pacpolicy.conf
[POLICY]
default_policy:[grant|deny] # describes the default policy for users
# that are not described in the POLICY section
pac_client_hotname: # the instances of Caching Proxy that are allowed
# to use a policy list
id: # the id for the LDAP entry or ip/hostname
# (wildcard supported, such as *.ibm.com)
grant:[true|false] # true means to grant access, false means
# to deny access
type:[0|1|2|3|4] # 0 LDAP entry that is a group,
# 1 LDAP entry that is not a group,
# 2 IP address
# 3 hostname
# 4 URL
propagate:[true|false] # true means that the access rights (grant
# or deny) will be propagated to all
# descendants or members
stop_entry:[entry|NULL] # Propagation of the access right stops
# at this entry. If the id is a group,
# stop_entry must be set to NULL.
# stop_entry may be applied to an IP
# address or hostname. Each stop_entry
# must be on its own line
exception_entry:[entry|NULL] # Assignment of the access right skips
# these entries, but continues through their
# subtrees. This may be a list of entries.
# exception_entry may be applied to a group,
# IP address, or hostname. Each
# exception_entry must be on its own line.
Exception_type:
Exception:
El comodín (*) sólo está soportado para la última posición de una dirección IP o la primera posición de un nombre de host en las directivas id y stop_entry . Los comodines no están soportados en exception_entry. Tampoco
se da soporte a los caracteres comodín en las entradas LDAP de
cualquier campo.
Se da soporte a varias políticas y, si las políticas entran en conflicto, el valor false siempre tiene preferencia. Es decir, se bloquea el acceso sólo con que se produzca una única denegación en cualquier política. El orden en que se enumeran las políticas en los archivos de configuración y de políticas es irrelevante y no establece ninguna prioridad.
Para obtener un conjunto de ejemplos de políticas, consulte el archivo pacpolicy.conf del directorio de archivos de configuración.
Creación de pac_ldap.cred
/
cp_root
/server_root/pac/creds. Este archivo contiene
la contraseña correspondiente al nombre de usuario de la directiva admin_dn,
que se encuentra en el archivo pac.conf.El daemon PAC cifra la contraseña la primera vez que lee el archivo.
Para crear el archivo pac_ldap.cred en plataformas Linux y UNIX, emita los mandatos siguientes:
cd cp_root/server_root/pac/creds
echo "password" > pac_ldap.cred
chown nobody pac_ldap.cred
chgrp nobody pac_ldap.cred
(On SUSE Linux, use chgrp nogroup pac_ldap.cred.)
Para crear el archivo en una plataforma Windows, escriba la contraseña en un archivo de texto y almacene el archivo en el directorio server_root\pac\creds\ .
Inicio y detención de pacd
- En plataformas Linux y UNIX:
/usr/sbin/pacd_restart.sh pacd_user_id - En plataformas Windows:
C:\Program Files\IBM\edge\cachingproxy\cp\Bin\pacd_restart.bat CP_install_root
kill -15 pacd_process_ID
SHLIB_PATH=/usr/lib:/usr/IBMldap/lib
PATH=/usr/IBMldap/bin:$PATH
PATH=/usr/IBMldap/bin/usr/IBMldap/ es la vía de acceso
de instalación por omisión del cliente LDAP en HP-UX. Ajuste PATH y SHLIB_PATH según corresponda si el cliente LDAP se
instala en una ubicación distinta. Sin establecer
estas variables, pueden ocurrir los siguientes errores:- Después de habilitar el plug-in del PAC-LDAP, aparecerá el siguiente
mensaje en las anotaciones cronológicas de error
"Serverinit Error: server did not load functions from DLL module /opt/ibm/edge/cp/lib/plugins/pac/libpacwte.sl" - Al intentar iniciar /usr/sbin/pacd, aparecerá el siguiente error de
enlace
"/usr/lib/dld.sl: Can't find path for shared library: libibmldap.sl /usr/lib/dld.sl: No such file or directory Abort"
ln -s /usr/lib/libldap.so.19 /usr/lib/libldap.so
exec(): 0509-036 Cannot load program /usr/sbin/pacd because of the following errors:
0509-022 Cannot load module /usr/lib/libpacman.a.
0509-150 Dependent module libldap.a could not be loaded.
0509-022 Cannot load module libldap.a.Para evitar este
problema, cree el siguiente enlace simbólico:ln -s /usr/lib/libibmldap.a /usr/lib/libldap.a
Could not extract a value for: Uid, return code:3Este error
se muestra incluso cuando la autenticación LDAP funciona
correctamente y puede hacerse caso omiso de él.